@@ -15,7 +15,7 @@ import {
15
15
Pressable ,
16
16
TouchableOpacity
17
17
} from "react-native" ;
18
- import { dateToEpochWeekNumber , epochWNToDate } from "@/utils/epochWeekNumber" ;
18
+ import { dateToEpochWeekNumber , epochWNToDate , weekNumberToMiddleDate } from "@/utils/epochWeekNumber" ;
19
19
20
20
import * as StoreReview from "expo-store-review" ;
21
21
@@ -48,6 +48,7 @@ import { hasFeatureAccountSetup } from "@/utils/multiservice";
48
48
import { MultiServiceFeature } from "@/stores/multiService/types" ;
49
49
import { OfflineWarning , useOnlineStatus } from "@/hooks/useOnlineStatus" ;
50
50
import HomeworkItem from "./Atoms/Item" ;
51
+ import DateTimePicker from "@react-native-community/datetimepicker" ;
51
52
52
53
const MemoizedHomeworkItem = React . memo ( HomeworkItem ) ;
53
54
const MemoizedNativeList = React . memo ( NativeList ) ;
@@ -86,6 +87,7 @@ const WeekView: Screen<"Homeworks"> = ({ route, navigation }) => {
86
87
87
88
const [ selectedWeek , setSelectedWeek ] = useState ( currentWeek ) ;
88
89
90
+ const [ showDatePickerWeek , setShowDatePickerWeek ] = useState ( false ) ;
89
91
const [ hideDone , setHideDone ] = useState ( false ) ;
90
92
91
93
const getItemLayout = useCallback ( ( _ : any , index : number ) => ( {
@@ -341,6 +343,7 @@ const WeekView: Screen<"Homeworks"> = ({ route, navigation }) => {
341
343
>
342
344
< PressableScale
343
345
style = { [ styles . weekPickerContainer ] }
346
+ onPress = { ( ) => setShowDatePickerWeek ( true ) }
344
347
>
345
348
< Reanimated . View
346
349
layout = { animPapillon ( LinearTransition ) }
@@ -467,6 +470,31 @@ const WeekView: Screen<"Homeworks"> = ({ route, navigation }) => {
467
470
</ TouchableOpacity >
468
471
</ View >
469
472
</ View >
473
+
474
+ { showDatePickerWeek && (
475
+ < DateTimePicker
476
+ value = { weekNumberToMiddleDate ( selectedWeek ) }
477
+ mode = "date"
478
+ display = "default"
479
+ onChange = { ( _event , selectedDate ) => {
480
+ setShowDatePickerWeek ( false ) ;
481
+ if ( selectedDate ) {
482
+ selectedDate . setUTCHours ( 1 , 0 , 0 , 0 ) ;
483
+
484
+ const weekNumber = dateToEpochWeekNumber ( selectedDate ) ;
485
+ const index = data . findIndex ( ( week ) => week === weekNumber ) ;
486
+ if ( index !== - 1 ) {
487
+ flatListRef . current ?. scrollToIndex ( { index, animated : true } ) ;
488
+ setSelectedWeek ( weekNumber ) ;
489
+
490
+ setTimeout ( async ( ) => {
491
+ await updateHomeworks ( true , false , true ) ;
492
+ } , 500 ) ;
493
+ }
494
+ }
495
+ } }
496
+ />
497
+ ) }
470
498
</ PapillonModernHeader >
471
499
472
500
< AddHomeworkButton
0 commit comments