Skip to content
This repository was archived by the owner on Aug 30, 2025. It is now read-only.

Commit f3dc085

Browse files
committed
feat(Homeworks): ajout d'un sélecteur de date pour choisir la semaine des devoirs
1 parent d001cf4 commit f3dc085

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

src/views/account/Homeworks/Homeworks.tsx

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
Pressable,
1616
TouchableOpacity
1717
} from "react-native";
18-
import { dateToEpochWeekNumber, epochWNToDate } from "@/utils/epochWeekNumber";
18+
import { dateToEpochWeekNumber, epochWNToDate, weekNumberToMiddleDate } from "@/utils/epochWeekNumber";
1919

2020
import * as StoreReview from "expo-store-review";
2121

@@ -48,6 +48,7 @@ import { hasFeatureAccountSetup } from "@/utils/multiservice";
4848
import { MultiServiceFeature } from "@/stores/multiService/types";
4949
import { OfflineWarning, useOnlineStatus } from "@/hooks/useOnlineStatus";
5050
import HomeworkItem from "./Atoms/Item";
51+
import DateTimePicker from "@react-native-community/datetimepicker";
5152

5253
const MemoizedHomeworkItem = React.memo(HomeworkItem);
5354
const MemoizedNativeList = React.memo(NativeList);
@@ -86,6 +87,7 @@ const WeekView: Screen<"Homeworks"> = ({ route, navigation }) => {
8687

8788
const [selectedWeek, setSelectedWeek] = useState(currentWeek);
8889

90+
const [showDatePickerWeek, setShowDatePickerWeek] = useState(false);
8991
const [hideDone, setHideDone] = useState(false);
9092

9193
const getItemLayout = useCallback((_: any, index: number) => ({
@@ -341,6 +343,7 @@ const WeekView: Screen<"Homeworks"> = ({ route, navigation }) => {
341343
>
342344
<PressableScale
343345
style={[styles.weekPickerContainer]}
346+
onPress={() => setShowDatePickerWeek(true)}
344347
>
345348
<Reanimated.View
346349
layout={animPapillon(LinearTransition)}
@@ -467,6 +470,31 @@ const WeekView: Screen<"Homeworks"> = ({ route, navigation }) => {
467470
</TouchableOpacity>
468471
</View>
469472
</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+
)}
470498
</PapillonModernHeader>
471499

472500
<AddHomeworkButton

0 commit comments

Comments
 (0)