-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path_DATA.js
106 lines (93 loc) · 2.09 KB
/
_DATA.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import {AsyncStorage} from 'react-native';
import {Notifications} from 'expo';
import * as Permissions from 'expo-permissions';
const NOTIFICATION_KEY = 'MobileFlashcards:notifications';
let decks = {
React: {
title: 'React',
questions: [
{
question: 'Is React a library for managing user interfaces?',
answer: 'yes',
answered: false,
userAnswer: null
},
{
question: 'Do you make Ajax requests in the render method in React?',
answer: 'no',
answered: false,
userAnswer: null
}
],
completedOn: null
},
JavaScript: {
title: 'JavaScript',
questions: [
{
question: 'Is a closure the combination of a function and the lexical environment within which that function was declared.?',
answer: 'yes',
answered: false,
userAnswer: null
}
],
completedOn: null
}
};
const _getDecks = () =>
{
return new Promise((res, rej) =>
{
setTimeout(() => res({...decks}), 500)
})
};
const clearLocalNotifications = () =>
{
return AsyncStorage.removeItem(NOTIFICATION_KEY)
.then(Notifications.cancelAllScheduledNotificationsAsync)
}
const createNotifications = () =>
{
return {
title: 'Take your Quiz',
body: 'Don\'t forget to complete at least one quiz today.',
android: {
sound: true,
priority: 'high',
sticky: false,
vibrate: true
}
}
};
const setLocalNotifications = () =>
{
AsyncStorage.getItem(NOTIFICATION_KEY)
.then(JSON.parse)
.then(data =>
{
if (data === null)
{
Permissions.askAsync(Permissions.NOTIFICATIONS)
.then(({status}) =>
{
if (status === 'granted')
{
Notifications.cancelAllScheduledNotificationsAsync();
let tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
tomorrow.setHours(17);
tomorrow.setMinutes(0);
Notifications.scheduleLocalNotificationAsync(
createNotifications(),
{
time: tomorrow,
repeat: 'day'
}
)
AsyncStorage.setItem(NOTIFICATION_KEY, JSON.stringify(true));
}
})
}
})
}
export {_getDecks, clearLocalNotifications, createNotifications, setLocalNotifications};