-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTimePicker.tsx
86 lines (79 loc) · 2.13 KB
/
TimePicker.tsx
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
import React from 'react';
import {TimePickerModal} from 'react-native-paper-dates';
import AsyncStorage from '@react-native-async-storage/async-storage';
interface TimePickerProps {
isStart: boolean;
day: number;
updateData: Function;
}
const TimePicker = (props: TimePickerProps) => {
const isStart = props.isStart;
const day = props.day;
const [visible, setVisible] = React.useState(true);
const onDismiss = () => setVisible(false);
const storeData = React.useCallback(
async (value: {
startHours: number;
startMinutes: number;
endHours: number;
endMinutes: number;
}) => {
try {
const json = JSON.stringify(value);
await AsyncStorage.setItem('@MyStorage:' + day, json);
} catch (e) {
// saving error
}
},
[day],
);
const getData = React.useCallback(async () => {
try {
const jsonValue = await AsyncStorage.getItem('@MyStorage:' + day);
return jsonValue != null ? JSON.parse(jsonValue) : null;
} catch (e) {
// error reading value
}
}, [day]);
// @ts-ignore
const onConfirm = React.useCallback(
async (hoursAndMinutes: {hours: number; minutes: number}) => {
const hours = hoursAndMinutes.hours;
const minutes = hoursAndMinutes.minutes;
await getData().then(json => {
if (json == null) {
console.log(true);
json = {
startHours: null,
startMinutes: null,
endHours: null,
endMinutes: null,
};
}
if (isStart) {
json.startHours = hours;
json.startMinutes = minutes;
} else {
json.endHours = hours;
json.endMinutes = minutes;
}
storeData(json);
});
props.updateData(day);
setVisible(false);
//console.log({hours, minutes});
//getData().then(json => console.log(json));
},
[storeData, isStart, props, day, getData],
);
return (
<TimePickerModal
minutes={41}
hours={9}
visible={visible}
onDismiss={onDismiss}
onConfirm={onConfirm}
/>
);
};
export default TimePicker;