Browse Source

Fixed crash on nightmode change, sync reminder notification with server

keplyx 4 years ago
parent
commit
f228ed0cee
4 changed files with 38 additions and 4 deletions
  1. 1
    1
      App.js
  2. BIN
      assets/drawer-cover.png
  3. 5
    3
      screens/SettingsScreen.js
  4. 32
    0
      utils/NotificationsManager.js

+ 1
- 1
App.js View File

85
         if (this.state.isLoading) {
85
         if (this.state.isLoading) {
86
             return (
86
             return (
87
                 <AppLoading
87
                 <AppLoading
88
-                    startAsync={this.loadAssetsAsync}
88
+                    startAsync={() => this.loadAssetsAsync()}
89
                     onFinish={() => this.onLoadFinished()}
89
                     onFinish={() => this.onLoadFinished()}
90
                     onError={console.warn}
90
                     onError={console.warn}
91
                 />
91
                 />

BIN
assets/drawer-cover.png View File


+ 5
- 3
screens/SettingsScreen.js View File

23
 import AsyncStorageManager from "../utils/AsyncStorageManager";
23
 import AsyncStorageManager from "../utils/AsyncStorageManager";
24
 import Touchable from "react-native-platform-touchable";
24
 import Touchable from "react-native-platform-touchable";
25
 import {Platform} from "react-native";
25
 import {Platform} from "react-native";
26
+import NotificationsManager from "../utils/NotificationsManager";
26
 
27
 
27
 type Props = {
28
 type Props = {
28
     navigation: Object,
29
     navigation: Object,
53
         this.setState({
54
         this.setState({
54
             proxiwashNotifPickerSelected: value
55
             proxiwashNotifPickerSelected: value
55
         });
56
         });
57
+        let intVal = 0;
58
+        if (value !== 'never')
59
+            intVal = parseInt(value);
60
+        NotificationsManager.setMachineReminderNotificationTime(intVal);
56
     }
61
     }
57
 
62
 
58
     /**
63
     /**
70
                 onValueChange={(value) => this.onProxiwashNotifPickerValueChange(value)}
75
                 onValueChange={(value) => this.onProxiwashNotifPickerValueChange(value)}
71
             >
76
             >
72
                 <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.never')} value="never"/>
77
                 <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.never')} value="never"/>
73
-                <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.1')} value="1"/>
74
-                <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.2')} value="2"/>
75
-                <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.3')} value="3"/>
76
                 <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.5')} value="5"/>
78
                 <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.5')} value="5"/>
77
                 <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.10')} value="10"/>
79
                 <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.10')} value="10"/>
78
                 <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.20')} value="20"/>
80
                 <Picker.Item label={i18n.t('settingsScreen.proxiwashNotifReminderPicker.20')} value="20"/>

+ 32
- 0
utils/NotificationsManager.js View File

159
                 console.log(error);
159
                 console.log(error);
160
             });
160
             });
161
     }
161
     }
162
+
163
+    /**
164
+     * Send the selected reminder time for notifications to the server
165
+     * @param time
166
+     */
167
+    static setMachineReminderNotificationTime(time: number) {
168
+        console.log(time);
169
+        let token = AsyncStorageManager.getInstance().preferences.expoToken.current;
170
+        if (token === '') {
171
+            throw Error('Expo token not available');
172
+        }
173
+        let data = {
174
+            function: 'set_machine_reminder',
175
+            token: token,
176
+            time: time,
177
+        };
178
+        fetch(EXPO_TOKEN_SERVER, {
179
+            method: 'POST',
180
+            headers: new Headers({
181
+                Accept: 'application/json',
182
+                'Content-Type': 'application/json',
183
+            }),
184
+            body: JSON.stringify(data) // <-- Post parameters
185
+        })
186
+            .then((response) => response.text())
187
+            .then((responseText) => {
188
+                console.log(responseText);
189
+            })
190
+            .catch((error) => {
191
+                console.log(error);
192
+            });
193
+    }
162
 }
194
 }

Loading…
Cancel
Save