Leon 1 éve
szülő
commit
83a10697f3

+ 4 - 0
android/app/src/main/java/com/hola/MainActivity.java

@@ -49,6 +49,8 @@ public class MainActivity extends ReactActivity {
   private Location gpsLocation;
   private Location networkLocation;
 
+  private long timestamp;
+
   private static final String CHANNEL_ID = "local_notification_channel";
   private static final String CHANNEL_NAME = "Daily Reminder";
   private static final String CHANNEL_DESCRIPTION = "Daily reminder notification at 9:00 AM";
@@ -120,6 +122,7 @@ public class MainActivity extends ReactActivity {
             "PICK_EARLIER_END".equals(intent.getAction())||
                     "LOG_MY_TIMES".equals(intent.getAction())
     ) {
+      timestamp = System.currentTimeMillis();
       handler = new Handler();
       runnable = new Runnable() {
         @Override
@@ -134,6 +137,7 @@ public class MainActivity extends ReactActivity {
             payload.putString("category_id",intent.getStringExtra("category_id"));
             payload.putString("action_id",intent.getAction());
             payload.putString("id",intent.getStringExtra("id"));
+            payload.putDouble("timestamp",timestamp);
             //category_id, action_id,id
             getReactInstanceManager().
                     getCurrentReactContext().

+ 1 - 0
ios/AppDelegate.h

@@ -10,5 +10,6 @@
 @property (nonatomic, strong) NativeBridge *nativeBridge;
 @property (nonatomic, strong) NSTimer *timer;
 @property (nonatomic, assign) BOOL rnLoaded;
+@property (nonatomic, assign) long timestamp;
 
 @end

+ 2 - 2
ios/AppDelegate.mm

@@ -25,7 +25,6 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot";
   RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;
   std::shared_ptr<const facebook::react::ReactNativeConfig> _reactNativeConfig;
   facebook::react::ContextContainer::Shared _contextContainer;
-  
 }
 @end
 #endif
@@ -251,6 +250,7 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot";
 //    [[RCTJPushEventQueue sharedInstance]._localNotificationQueue insertObject:userInfo atIndex:0];
 //    [[NSNotificationCenter defaultCenter] postNotificationName:J_LOCAL_NOTIFICATION_OPENED_EVENT object:userInfo];
   }
+  self.timestamp = [[NSDate date] timeIntervalSince1970]*1000;
   self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(postNotificationData:) userInfo:response repeats:YES];
 //  NSString *categoryIdentifier = response.notification.request.content.categoryIdentifier;
 //  [self.nativeBridge.bridge.eventDispatcher sendAppEventWithName:@"notificationReceive" body:@{@"category_id":categoryIdentifier,@"action_id":response.actionIdentifier}];
@@ -308,7 +308,7 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot";
     NSString *identifier = response.notification.request.identifier;
     if ([identifier hasPrefix:@"REMINDER_FS_"]){
       NSString *strId = [identifier substringFromIndex:12];
-      [self.nativeBridge.bridge.eventDispatcher sendAppEventWithName:@"notificationReceive" body:@{@"category_id":categoryIdentifier,@"action_id":response.actionIdentifier,@"id":strId}];
+      [self.nativeBridge.bridge.eventDispatcher sendAppEventWithName:@"notificationReceive" body:@{@"category_id":categoryIdentifier,@"action_id":response.actionIdentifier,@"id":strId,@"timestamp":@(self.timestamp)}];
       [self clearAllDeliveredNotifications];
     }
     

+ 9 - 4
src/features/trackTimeDuration/actions/TrackTimeActions.tsx

@@ -14,12 +14,13 @@ if (process.env.TARO_ENV == 'rn') {
     NativeModules = require('react-native').NativeModules
 }
 
-export const startFast = (start_time: number, duration: number) => {
+export const startFast = (start_time: number, duration: number, logMethod: string) => {
     return new Promise((resolve, reject) => {
         // duration = duration < 3600 * 1000 ? 3600 * 1000 : duration;
         const extra = {
             set_time: global.set_time,
             confirm_time: new Date().getTime(),
+            log_method: logMethod
         }
         recordCheck({
             action: 'FAST_START',
@@ -36,11 +37,12 @@ export const startFast = (start_time: number, duration: number) => {
     });
 }
 
-export const endFast = (start_time: number) => {
+export const endFast = (start_time: number, logMethod: string) => {
     return new Promise((resolve, reject) => {
         const extra = {
             set_time: global.set_time,
             confirm_time: new Date().getTime(),
+            log_method: logMethod
         }
         recordCheck({
             action: 'FAST_END',
@@ -59,11 +61,12 @@ export const endFast = (start_time: number) => {
 }
 
 
-export const startSleep = (start_time: number, duration: number) => {
+export const startSleep = (start_time: number, duration: number, logMethod: string) => {
     // duration = duration < 3600 * 1000 ? 3600 * 1000 : duration;
     const extra = {
         set_time: global.set_time,
         confirm_time: new Date().getTime(),
+        log_method: logMethod
     }
     return new Promise((resolve, reject) => {
         recordCheck({
@@ -80,10 +83,11 @@ export const startSleep = (start_time: number, duration: number) => {
         });
     });
 }
-export const endSleep = (start_time: number) => {
+export const endSleep = (start_time: number, logMethod: string) => {
     const extra = {
         set_time: global.set_time,
         confirm_time: new Date().getTime(),
+        log_method: logMethod
     }
     return new Promise((resolve, reject) => {
         recordCheck({
@@ -104,6 +108,7 @@ export const batchClocks = (params: any) => {
     const extra = {
         set_time: global.set_time,
         confirm_time: new Date().getTime(),
+        log_method: 'LOG_MULTIPLE'
     }
     return new Promise((resolve, reject) => {
         request({

+ 38 - 19
src/features/trackTimeDuration/components/IndexConsole.tsx

@@ -58,6 +58,8 @@ export default function IndexConsole(props: { record: any, count: number, access
     const [showTimePicker, setShowTimePicker] = useState(false);
     const [showMutiPicker, setShowMutiPicker] = useState(false);
     const [mutiEvent, setMutiEvent] = useState('start_fast');
+    const [logEvent,setLogEvent] = useState('LOG_ONCE');
+    const [logEventTimestamp,setLogEventTimestamp] = useState(0)
     const dispatch = useDispatch();
 
 
@@ -90,10 +92,13 @@ export default function IndexConsole(props: { record: any, count: number, access
             }
             nativePushListener = NativeAppEventEmitter.addListener('notificationReceive', (data) => {
                 console.log('notification receive action', data)
-                const { category_id, action_id, id } = data
+                const { category_id, action_id, id,timestamp } = data
                 uploadLocalPushInfo({
                     messageId: id
                 })
+                global.set_time = timestamp;
+                setLogEvent('NOTIFY_ONE_TAP');
+                setLogEvent(timestamp)
                 switch (action_id) {
                     case 'START_TIMER_NOW':
                         {
@@ -103,8 +108,9 @@ export default function IndexConsole(props: { record: any, count: number, access
                             else {
                                 operateType = 'startSleep'
                             }
-                            global.set_time = new Date().getTime()
-                            pickerConfirm(new Date().getTime())
+                            global.set_time = timestamp//new Date().getTime()
+                            pickerConfirm(timestamp)
+                            // pickerConfirm(new Date().getTime())
                         }
                         break;
                     case 'PICK_EARLIER_START':
@@ -156,8 +162,9 @@ export default function IndexConsole(props: { record: any, count: number, access
                             else {
                                 operateType = 'endSleep'
                             }
-                            global.set_time = new Date().getTime()
-                            pickerConfirm(new Date().getTime())
+                            global.set_time = timestamp//new Date().getTime()
+                            pickerConfirm(timestamp)
+                            // pickerConfirm(new Date().getTime())
                         }
                         break;
                     case 'PICK_EARLIER_END':
@@ -202,11 +209,14 @@ export default function IndexConsole(props: { record: any, count: number, access
             jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)
             return
         }
+        if (e){
+            setLogEvent('LOG_ONCE')
+        }
         operateType = 'startFast'
         global.pauseIndexTimer = true
-        global.set_time = new Date().getTime()
+        global.set_time = e?new Date().getTime():logEventTimestamp
 
-        defaultTimestamp = new Date().getTime()
+        defaultTimestamp = e?new Date().getTime():logEventTimestamp
         min = defaultTimestamp - 1 * 24 * 3600 * 1000
         max = defaultTimestamp
         isTimeout = false
@@ -223,6 +233,9 @@ export default function IndexConsole(props: { record: any, count: number, access
             jumpPage('/pages/account/ChooseAuth', 'ChooseAuth')
             return
         }
+        if (e){
+            setLogEvent('LOG_ONCE')
+        }
         if (status != 'ONGOING1' && props.record.scenario.name == 'FAST_SLEEP') {
             // if (status == 'WAIT_FOR_START') {
             //     Taro.showToast({
@@ -238,12 +251,12 @@ export default function IndexConsole(props: { record: any, count: number, access
         }
         operateType = 'startSleep'
         global.pauseIndexTimer = true
-        global.set_time = new Date().getTime()
+        global.set_time = e?new Date().getTime():logEventTimestamp
 
 
         isTimeout = false
         if (props.record.scenario.name == 'SLEEP') {
-            defaultTimestamp = new Date().getTime()
+            defaultTimestamp = e?new Date().getTime():logEventTimestamp
             min = defaultTimestamp - 6 * dayMilliSeconds
             max = defaultTimestamp
         }
@@ -282,6 +295,9 @@ export default function IndexConsole(props: { record: any, count: number, access
             jumpPage('/pages/account/ChooseAuth', 'ChooseAuth')
             return
         }
+        if (e){
+            setLogEvent('LOG_ONCE')
+        }
         if (status != 'ONGOING2' && status != 'ONGOING') {
 
             // Taro.showToast({
@@ -296,7 +312,7 @@ export default function IndexConsole(props: { record: any, count: number, access
         }
         operateType = 'endSleep'
         global.pauseIndexTimer = true
-        global.set_time = new Date().getTime()
+        global.set_time = e?new Date().getTime():logEventTimestamp
 
         var real_start_time = props.record.current_record.sleep.real_start_time
         var last_check_time = props.record.current_record.last_real_check_time
@@ -313,7 +329,7 @@ export default function IndexConsole(props: { record: any, count: number, access
         }
         else {
             isTimeout = false
-            defaultTimestamp = now
+            defaultTimestamp = e?new Date().getTime():logEventTimestamp
             min = Math.max(last_check_time, defaultTimestamp - 6 * dayMilliSeconds)
             max = defaultTimestamp
         }
@@ -336,6 +352,9 @@ export default function IndexConsole(props: { record: any, count: number, access
             jumpPage('/pages/account/ChooseAuth', 'ChooseAuth')
             return
         }
+        if (e){
+            setLogEvent('LOG_ONCE')
+        }
         if (status == 'WAIT_FOR_START') {
             // Taro.showToast({
             //     title: t('feature.track_time_duration.console.lock_fast_tip'),
@@ -384,17 +403,17 @@ export default function IndexConsole(props: { record: any, count: number, access
             return
         }
 
-        tapEndFastOperate()
+        tapEndFastOperate(e)
     }
 
-    function tapEndFastOperate() {
+    function tapEndFastOperate(e) {
         operateType = 'endFast'
         global.pauseIndexTimer = true
-        global.set_time = new Date().getTime()
+        global.set_time = e?new Date().getTime():logEventTimestamp
 
         var real_start_time = props.record.current_record.fast.real_start_time
         var last_check_time = props.record.current_record.last_real_check_time
-        var now = new Date().getTime()
+        var now = e?new Date().getTime():logEventTimestamp
         if (now - real_start_time >= dayMilliSeconds) {
             //严重超时
             isTimeout = true
@@ -577,7 +596,7 @@ export default function IndexConsole(props: { record: any, count: number, access
 
         switch (operateType) {
             case 'startFast':
-                startFast(t1, fastDuration).then(res => {
+                startFast(t1, fastDuration,logEvent).then(res => {
                     global.indexPageRefresh()
                     setFirstEnter(false)
                     hidePicker()
@@ -650,7 +669,7 @@ export default function IndexConsole(props: { record: any, count: number, access
                 })
                 break
             case 'startSleep':
-                startSleep(t1, sleepDuration).then(res => {
+                startSleep(t1, sleepDuration,logEvent).then(res => {
                     global.indexPageRefresh()
                     setFirstEnter(false)
                     hidePicker()
@@ -725,7 +744,7 @@ export default function IndexConsole(props: { record: any, count: number, access
                 })
                 break
             case 'endSleep':
-                endSleep(t1).then(res => {
+                endSleep(t1,logEvent).then(res => {
                     getLocalPush()
                     setBtnDisable(false)
                     global.indexPageRefresh()
@@ -748,7 +767,7 @@ export default function IndexConsole(props: { record: any, count: number, access
                 })
                 break
             case 'endFast':
-                endFast(t1).then(res => {
+                endFast(t1,logEvent).then(res => {
                     getLocalPush()
                     setBtnDisable(false)
                     global.indexPageRefresh()

+ 133 - 22
src/features/trackTimeDuration/components/IndexConsoleMuti.tsx

@@ -37,7 +37,6 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
     function confirm() {
         var fast: any = {}
         var sleep: any = {}
-        debugger
         switch (props.event) {
             case 'start_sleep':
                 if (!fastStart) {
@@ -54,10 +53,31 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
                     })
                     return
                 }
-                fast.real_start_time = fastStart.time
-                fast.real_start_date = fastStart.date
-                sleep.real_start_time = sleepStart.time
-                sleep.real_start_date = sleepStart.date
+                // fast.real_start_set_time = fastStart.set_time
+                // fast.real_start_confirm_time = fastStart.confirm_time
+                // fast.real_start_time = fastStart.time
+                // fast.real_start_date = fastStart.date
+                // sleep.real_start_set_time = sleepStart.set_time
+                // sleep.real_start_confirm_time = sleepStart.confirm_time
+                // sleep.real_start_time = sleepStart.time
+                // sleep.real_start_date = sleepStart.date
+
+                fast.real_start ={
+                    time:fastStart.time,
+                    date:fastStart.date,
+                    extra:{
+                        set_time:fastStart.set_time,
+                        confirm_time:fastStart.confirm_time
+                    }
+                }
+                sleep.real_start ={
+                    time:sleepStart.time,
+                    date:sleepStart.date,
+                    extra:{
+                        set_time:sleepStart.set_time,
+                        confirm_time:sleepStart.confirm_time
+                    }
+                }
                 break;
             case 'end_sleep':
                 if (props.status == 'WAIT_FOR_START') {
@@ -68,8 +88,19 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
                         })
                         return
                     }
-                    fast.real_start_time = fastStart.time
-                    fast.real_start_date = fastStart.date
+                    // fast.real_start_set_time = fastStart.set_time
+                    // fast.real_start_confirm_time = fastStart.confirm_time
+                    // fast.real_start_time = fastStart.time
+                    // fast.real_start_date = fastStart.date
+
+                    fast.real_start ={
+                        time:fastStart.time,
+                        date:fastStart.date,
+                        extra:{
+                            set_time:fastStart.set_time,
+                            confirm_time:fastStart.confirm_time
+                        }
+                    }
                 }
                 if (!sleepStart) {
                     Taro.showToast({
@@ -85,10 +116,32 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
                     })
                     return
                 }
-                sleep.real_start_time = sleepStart.time
-                sleep.real_start_date = sleepStart.date
-                sleep.real_end_time = sleepEnd.time
-                sleep.real_end_date = sleepEnd.date
+                // sleep.real_start_set_time = sleepStart.set_time
+                // sleep.real_start_confirm_time = sleepStart.confirm_time
+                // sleep.real_start_time = sleepStart.time
+                // sleep.real_start_date = sleepStart.date
+                // sleep.real_end_set_time = sleepEnd.set_time
+                // sleep.real_end_confirm_time = sleepEnd.confirm_time
+                // sleep.real_end_time = sleepEnd.time
+                // sleep.real_end_date = sleepEnd.date
+
+                sleep.real_start ={
+                    time:sleepStart.time,
+                    date:sleepStart.date,
+                    extra:{
+                        set_time:sleepStart.set_time,
+                        confirm_time:sleepStart.confirm_time
+                    }
+                }
+
+                sleep.real_end ={
+                    time:sleepEnd.time,
+                    date:sleepEnd.date,
+                    extra:{
+                        set_time:sleepEnd.set_time,
+                        confirm_time:sleepEnd.confirm_time
+                    }
+                }
                 break;
             case 'end_fast':
                 if (props.status == 'WAIT_FOR_START') {
@@ -99,7 +152,6 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
                         })
                         return
                     }
-                    debugger
                     if (!sleepStart && props.scenario == 'FAST_SLEEP') {
                         Taro.showToast({
                             icon: 'none',
@@ -107,12 +159,33 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
                         })
                         return
                     }
-                    fast.real_start_time = fastStart.time
-                    fast.real_start_date = fastStart.date
+                    // fast.real_start_set_time = fastStart.set_time
+                    // fast.real_start_confirm_time = fastStart.confirm_time
+                    // fast.real_start_time = fastStart.time
+                    // fast.real_start_date = fastStart.date
+
+                    fast.real_start ={
+                        time:fastStart.time,
+                        date:fastStart.date,
+                        extra:{
+                            set_time:fastStart.set_time,
+                            confirm_time:fastStart.confirm_time
+                        }
+                    }
 
                     if (props.scenario == 'FAST_SLEEP') {
-                        sleep.real_start_time = sleepStart.time
-                        sleep.real_start_date = sleepStart.date
+                        // sleep.real_start_set_time = sleepStart.set_time
+                        // sleep.real_start_confirm_time = sleepStart.confirm_time
+                        // sleep.real_start_time = sleepStart.time
+                        // sleep.real_start_date = sleepStart.date
+                        sleep.real_start ={
+                            time:sleepStart.time,
+                            date:sleepStart.date,
+                            extra:{
+                                set_time:sleepStart.set_time,
+                                confirm_time:sleepStart.confirm_time
+                            }
+                        }
                     }
 
 
@@ -125,8 +198,18 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
                         })
                         return
                     }
-                    sleep.real_start_time = sleepStart.time
-                    sleep.real_start_date = sleepStart.date
+                    // sleep.real_start_set_time = sleepStart.set_time
+                    // sleep.real_start_confirm_time = sleepStart.confirm_time
+                    // sleep.real_start_time = sleepStart.time
+                    // sleep.real_start_date = sleepStart.date
+                    sleep.real_start ={
+                        time:sleepStart.time,
+                        date:sleepStart.date,
+                        extra:{
+                            set_time:sleepStart.set_time,
+                            confirm_time:sleepStart.confirm_time
+                        }
+                    }
                 }
                 if (!sleepEnd && props.scenario == 'FAST_SLEEP') {
                     Taro.showToast({
@@ -144,11 +227,31 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
                 }
 
                 if (props.scenario == 'FAST_SLEEP') {
-                    sleep.real_end_time = sleepEnd.time
-                    sleep.real_end_date = sleepEnd.date
+                    // sleep.real_end_set_time = sleepEnd.set_time
+                    // sleep.real_end_confirm_time = sleepEnd.confirm_time
+                    // sleep.real_end_time = sleepEnd.time
+                    // sleep.real_end_date = sleepEnd.date
+                    sleep.real_end ={
+                        time:sleepEnd.time,
+                        date:sleepEnd.date,
+                        extra:{
+                            set_time:sleepEnd.set_time,
+                            confirm_time:sleepEnd.confirm_time
+                        }
+                    }
+                }
+                // fast.real_end_set_time = fastEnd.set_time
+                // fast.real_end_confirm_time = fastEnd.confirm_time
+                // fast.real_end_time = fastEnd.time
+                // fast.real_end_date = fastEnd.date
+                fast.real_end ={
+                    time:fastEnd.time,
+                    date:fastEnd.date,
+                    extra:{
+                        set_time:fastEnd.set_time,
+                        confirm_time:fastEnd.confirm_time
+                    }
                 }
-                fast.real_end_time = fastEnd.time
-                fast.real_end_date = fastEnd.date
                 break;
         }
         var params: any = {
@@ -302,24 +405,32 @@ export default function IndexConsoleMuti(props: { status: string, event: string,
                     global.pauseIndexTimer = false
                     if (operateType == 'startFast') {
                         setFastStart({
+                            set_time:defaultTimestamp,
+                            confirm_time:new Date().getTime(),
                             time: e,
                             date: dayjs(e).format('YYYYMMDD')
                         })
                     }
                     else if (operateType == 'endFast') {
                         setFastEnd({
+                            set_time:defaultTimestamp,
+                            confirm_time:new Date().getTime(),
                             time: e,
                             date: dayjs(e).format('YYYYMMDD')
                         })
                     }
                     else if (operateType == 'startSleep') {
                         setSleepStart({
+                            set_time:defaultTimestamp,
+                            confirm_time:new Date().getTime(),
                             time: e,
                             date: dayjs(e).format('YYYYMMDD')
                         })
                     }
                     else {
                         setSleepEnd({
+                            set_time:defaultTimestamp,
+                            confirm_time:new Date().getTime(),
                             time: e,
                             date: dayjs(e).format('YYYYMMDD')
                         })