@@ -20,6 +20,10 @@ import {
20
20
SET_GEOLOCATION_ENABLED_SUCCEEDED ,
21
21
SET_SYNC_MODE_SUCCEEDED ,
22
22
GET_SYNC_MODE_SUCCEEDED ,
23
+ FLAG_GETTING_STUDENT_MODE ,
24
+ FLAG_SETTING_STUDENT_MODE ,
25
+ GET_STUDENT_MODE_SUCCEEDED ,
26
+ SET_STUDENT_MODE_SUCCEEDED ,
23
27
} from '../types' ;
24
28
import {
25
29
ERROR_GETTING_GEOLOCATION ,
@@ -33,6 +37,8 @@ import {
33
37
ERROR_GETTING_GEOLOCATION_ENABLED ,
34
38
ERROR_GETTING_SYNC_MODE ,
35
39
ERROR_SETTING_SYNC_MODE ,
40
+ ERROR_GETTING_STUDENT_MODE ,
41
+ ERROR_SETTING_STUDENT_MODE ,
36
42
} from '../config/messages' ;
37
43
import {
38
44
GET_USER_FOLDER_CHANNEL ,
@@ -44,6 +50,8 @@ import {
44
50
SET_GEOLOCATION_ENABLED_CHANNEL ,
45
51
GET_SYNC_MODE_CHANNEL ,
46
52
SET_SYNC_MODE_CHANNEL ,
53
+ GET_STUDENT_MODE_CHANNEL ,
54
+ SET_STUDENT_MODE_CHANNEL ,
47
55
} from '../config/channels' ;
48
56
import { createFlag } from './common' ;
49
57
import { ERROR_GENERAL } from '../config/errors' ;
@@ -61,6 +69,8 @@ const flagSettingGeolocationEnabled = createFlag(
61
69
) ;
62
70
const flagGettingSyncMode = createFlag ( FLAG_GETTING_SYNC_MODE ) ;
63
71
const flagSettingSyncMode = createFlag ( FLAG_SETTING_SYNC_MODE ) ;
72
+ const flagGettingStudentMode = createFlag ( FLAG_GETTING_STUDENT_MODE ) ;
73
+ const flagSettingStudentMode = createFlag ( FLAG_SETTING_STUDENT_MODE ) ;
64
74
65
75
const getGeolocation = async ( ) => async dispatch => {
66
76
// only fetch location if online
@@ -292,6 +302,48 @@ const setSyncMode = async syncMode => dispatch => {
292
302
}
293
303
} ;
294
304
305
+ const getStudentMode = async ( ) => dispatch => {
306
+ try {
307
+ dispatch ( flagGettingStudentMode ( true ) ) ;
308
+ window . ipcRenderer . send ( GET_STUDENT_MODE_CHANNEL ) ;
309
+ window . ipcRenderer . once ( GET_STUDENT_MODE_CHANNEL , ( event , studentMode ) => {
310
+ if ( studentMode === ERROR_GENERAL ) {
311
+ toastr . error ( ERROR_MESSAGE_HEADER , ERROR_GETTING_STUDENT_MODE ) ;
312
+ } else {
313
+ dispatch ( {
314
+ type : GET_STUDENT_MODE_SUCCEEDED ,
315
+ payload : studentMode ,
316
+ } ) ;
317
+ }
318
+ dispatch ( flagGettingStudentMode ( false ) ) ;
319
+ } ) ;
320
+ } catch ( e ) {
321
+ console . error ( e ) ;
322
+ toastr . error ( ERROR_MESSAGE_HEADER , ERROR_GETTING_STUDENT_MODE ) ;
323
+ }
324
+ } ;
325
+
326
+ const setStudentMode = async syncAdvancedMode => dispatch => {
327
+ try {
328
+ dispatch ( flagSettingStudentMode ( true ) ) ;
329
+ window . ipcRenderer . send ( SET_STUDENT_MODE_CHANNEL , syncAdvancedMode ) ;
330
+ window . ipcRenderer . once ( SET_STUDENT_MODE_CHANNEL , ( event , mode ) => {
331
+ if ( mode === ERROR_GENERAL ) {
332
+ toastr . error ( ERROR_MESSAGE_HEADER , ERROR_SETTING_STUDENT_MODE ) ;
333
+ } else {
334
+ dispatch ( {
335
+ type : SET_STUDENT_MODE_SUCCEEDED ,
336
+ payload : mode ,
337
+ } ) ;
338
+ }
339
+ dispatch ( flagSettingStudentMode ( false ) ) ;
340
+ } ) ;
341
+ } catch ( e ) {
342
+ console . error ( e ) ;
343
+ toastr . error ( ERROR_MESSAGE_HEADER , ERROR_SETTING_STUDENT_MODE ) ;
344
+ }
345
+ } ;
346
+
295
347
export {
296
348
getUserFolder ,
297
349
getGeolocation ,
@@ -303,4 +355,6 @@ export {
303
355
setGeolocationEnabled ,
304
356
getSyncMode ,
305
357
setSyncMode ,
358
+ getStudentMode ,
359
+ setStudentMode ,
306
360
} ;
0 commit comments