leon 1 éve
szülő
commit
68a3305a82

BIN
ios/assets/src/assets/images/home_nonfocus.png


BIN
ios/assets/src/assets/images/metric_focus.png


BIN
ios/assets/src/assets/images/metric_nonfocus.png


BIN
ios/assets/src/assets/images/notification_focus.png


BIN
ios/assets/src/assets/images/notification_nonfocus.png


BIN
ios/assets/src/assets/images/profile_nonfocus.png


+ 2 - 2
ios/hola.xcodeproj/project.pbxproj

@@ -572,7 +572,7 @@
 				CODE_SIGN_ENTITLEMENTS = hola/hola.entitlements;
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 103;
+				CURRENT_PROJECT_VERSION = 104;
 				DEVELOPMENT_TEAM = GPMXAZ9G5N;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = hola/Info.plist;
@@ -605,7 +605,7 @@
 				CODE_SIGN_ENTITLEMENTS = hola/hola.entitlements;
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 103;
+				CURRENT_PROJECT_VERSION = 104;
 				DEVELOPMENT_TEAM = GPMXAZ9G5N;
 				INFOPLIST_FILE = hola/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (

+ 1 - 1
ios/hola/Info.plist

@@ -32,7 +32,7 @@
 		</dict>
 	</array>
 	<key>CFBundleVersion</key>
-	<string>103</string>
+	<string>104</string>
 	<key>ITSAppUsesNonExemptEncryption</key>
 	<false/>
 	<key>LSApplicationCategoryType</key>

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 1 - 1
ios/main.jsbundle


+ 3 - 1
src/context/locales/en.js

@@ -40,7 +40,9 @@ export default {
             stone_desc: 'More exclusive features for our Pro members are coming up. Stay tuned.',
             setting: 'Settings',
             reset_session: 'Reset session',
-            debug_mode: 'Debug mode'
+            debug_mode: 'Debug mode',
+            pro_member:'Pro Member',
+            member_desc:'Premium access to Pro features till {{time}}',
         },
         choose_scenario: {
             title: 'Select Circadian Clock',

+ 2 - 0
src/context/locales/zh.js

@@ -38,6 +38,8 @@ export default {
             un_login: '未登录',
             stone: '成为 Pro 会员',
             stone_desc: '更多高级会员专属功能,敬请期待!',
+            pro_member:'Pro 会员',
+            member_desc:'{{time}} 到期',
             setting: '设置',
             reset_session: '重置session',
             debug_mode: '走查模式'

+ 8 - 0
src/features/trackTimeDuration/components/CheckAccess.tsx

@@ -59,6 +59,14 @@ const CheckAccess = memo((props: { record: any, count: number, access: any }) =>
     useEffect(() => {
         var obj = props.record
         if (props.access) {
+            const member_expire = props.access.member.expire
+            const member_status = props.access.member.status
+            if (member_expire && new Date().getTime() > member_expire && member_status && member_status=='MEMBER') {
+                if (global.indexPageRefresh) {
+                    global.indexPageRefresh()
+                }
+            }
+
             if (!user.test_user) {
                 return
             }

+ 1 - 1
src/pages/account/Profile.scss

@@ -72,7 +72,7 @@
     opacity: 0.4;
     font-size: 24px;
     line-height: 32px;
-
+    // flex: 1;
 }
 
 .px2Width {

+ 28 - 5
src/pages/account/Profile.tsx

@@ -17,6 +17,7 @@ import { getInfoSuccess } from "@/store/user";
 import TitleView from "@/features/trackTimeDuration/components/TitleView";
 import showAlert from "@/components/basic/Alert";
 import { rpxToPx } from "@/utils/tools";
+import dayjs from "dayjs";
 
 let useNavigation;
 if (process.env.TARO_ENV == 'rn') {
@@ -30,6 +31,7 @@ export default function Page() {
     const [switchOn, setSwitchOn] = useState(false)
     const [triggered, setTriggered] = useState(true)
     const [memberAlert, setMemberAlert] = useState(global.memberAlert)
+    const accessObj = useSelector((state: any) => state.access);
 
     let navigation;
     if (useNavigation) {
@@ -149,6 +151,20 @@ export default function Page() {
         </TitleView>
     }
 
+    function member_expire(){
+        if (accessObj.access.member.type == 'NON_CONSUMABLE'){
+            return 'Unlimited premium access to Pro features forever.'
+        }
+        if (accessObj.access.member.type == 'AUTO_RENEW'){
+            return 'Premium access to Pro features during membership.'
+        }
+        if (global.language=='en'){
+            return dayjs(accessObj.access.member.expire).format('MMM D HH:mm')
+        }
+        
+        return dayjs(accessObj.access.member.expire).format('MM月DD日 HH:mm')
+    }
+
     function detail() {
         return <View className="container">
 
@@ -172,10 +188,17 @@ export default function Page() {
 
 
             <Box>
-                <View className="balance" onClick={tapBalance}>
-                    <Text className="title">{t('page.more.stone')}</Text>
-                    <Text className="desc">{t('page.more.stone_desc')}</Text>
-                </View>
+                {
+                    accessObj && accessObj.access && accessObj.access.member.status == 'NON_MEMBER' ? <View className="balance" onClick={tapBalance}>
+                        <Text className="title">{t('page.more.stone')}</Text>
+                        <Text className="desc">{t('page.more.stone_desc')}</Text>
+                    </View> :
+                        <View className="balance" onClick={tapBalance}>
+                            <Text className="title">{t('page.more.pro_member')}</Text>
+                            <Text className="desc">{t('page.more.member_desc',{time:member_expire()})}</Text>
+                        </View>
+                }
+
             </Box>
             {
                 user.isLogin && process.env.TARO_ENV == 'rn' && <View onClick={goSetting}>
@@ -215,7 +238,7 @@ export default function Page() {
                         <Text className="cell_title">{t('page.more.debug_mode')}</Text>
                         <Switch checked={switchOn} onChange={switchChanged} />
                     </View>
-                    
+
                 </View>
             }
 

+ 2 - 2
src/pages/clock/ClockMain.tsx

@@ -989,11 +989,11 @@ export default function Page() {
                         <Text style={{ color: '#fff', fontSize: 15 }}>member status:{access && access.member && access.member.status}</Text>
                         {
                             access && access.member && access.member.status == 'MEMBER' &&
-                            <Text style={{ color: '#fff', fontSize: 15 }}>会员过期时间:{dayjs(access.member.expire).format('YYYY-MM-DD HH:mm:ss')}</Text>
+                            <Text style={{ color: '#fff', fontSize: 15 }}>会员过期时间:{access.member.type=='NON_CONSUMABLE'?'Lifelong':dayjs(access.member.expire).format('YYYY-MM-DD HH:mm:ss')}</Text>
                         }
                         {
                             access && access.member && access.member.status == 'MEMBER' &&
-                            <Text style={{ color: '#fff', fontSize: 15 }}>会员过期倒计时:{TimeFormatter.countdown(access.member.expire)}</Text>
+                            <Text style={{ color: '#fff', fontSize: 15 }}>会员过期倒计时:{access.member.type=='NON_CONSUMABLE'?'Lifelong':TimeFormatter.countdown(access.member.expire)}</Text>
                         }
                         <Text style={{ color: '#fff', fontSize: 15 }}>current status:{access.fast_sleep.current.qualification.status}</Text>
                         <Text style={{ color: '#fff', fontSize: 15 }}>previous status:{access.fast_sleep.previous.qualification.status}</Text>

+ 3 - 0
src/pages/notification/setting.tsx

@@ -54,6 +54,9 @@ export default function Page() {
         getSettings()
         getMemberStatus()
         if (process.env.TARO_ENV == 'rn') {
+            navigation.setOptions({
+                headerTitle: 'Notification Settings',
+            });
             AppState.addEventListener('change', handleAppStateChange);
             // AppState.addEventListener('change', handleAppStateChange);
             // navigation.addListener('focus', () => {

+ 3 - 0
src/pages/store/product_list.tsx

@@ -61,6 +61,9 @@ export default function ProductList() {
 
     useEffect(() => {
         if (process.env.TARO_ENV == 'rn') {
+            navigation.setOptions({
+                headerTitle: 'Choose Membership',
+            });
             if (kIsIOS) {
                 Purchases.configure({
                     apiKey: 'appl_FNFYDLwHZlXzqrKJFlErWXUHGwx',

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott