From c11f7c14744debb562fc67c4fb18bf3189673932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20LUDWIG?= Date: Tue, 9 Apr 2024 23:53:55 +0200 Subject: [PATCH] chore: fixes --- app/application/habits/history.tsx | 4 +-- docs/CONVENTIONS.md | 8 +++--- .../components/HabitsMainPage/HabitsList.tsx | 17 ++++-------- .../HabitsMainPage/HabitsMainPage.tsx | 27 ++++++++++++------- utils/dates.ts | 13 +++++++++ 5 files changed, 42 insertions(+), 27 deletions(-) diff --git a/app/application/habits/history.tsx b/app/application/habits/history.tsx index efc4c43..b4497fa 100644 --- a/app/application/habits/history.tsx +++ b/app/application/habits/history.tsx @@ -4,11 +4,11 @@ import { Agenda } from "react-native-calendars" import { Text } from "react-native-paper" import { SafeAreaView } from "react-native-safe-area-context" -import { getISODate } from "@/utils/dates" +import { getISODate, getNowDate } from "@/utils/dates" const HistoryPage: React.FC = () => { const today = useMemo(() => { - return new Date() + return getNowDate() }, []) const todayISO = getISODate(today) diff --git a/docs/CONVENTIONS.md b/docs/CONVENTIONS.md index c37cf09..c8d49be 100644 --- a/docs/CONVENTIONS.md +++ b/docs/CONVENTIONS.md @@ -23,13 +23,13 @@ Une pipeline CI ([`.gitlab-ci.yml`](../.gitlab-ci.yml)) est en place pour vérif ## GitFlow -Le projet suit la convention [GitFlow](https://nvie.com/posts/a-successful-git-branching-model/) reposant sur 2 branches principales: +Le projet suit la convention [GitFlow](https://nvie.com/posts/a-successful-git-branching-model/) reposant sur 3 branches principales: - `main`: Contient le code de la dernière version stable et déployé en production. - `staging`: Contient le code en cours de test avant déploiement en production, Quality Assurance (QA). -- `develop`: Contient le code en cours de développement. Les nouvelles fonctionnalités et les correctifs de bugs sont fusionnés ici. +- `develop`: Contient le code en cours de développement. Les nouvelles fonctionnalités et les correctifs de bugs sont fusionnés ici régulièrement. -Chaque nouvelle fonctionnalité ou correctif de bug est développé dans une branche dédiée à partir de `develop`, nommée `feat/` ou `fix/`. Une fois le développement terminé, une merge request est créée pour demander une revue de code, et une fois validée, la branche est fusionnée dans `develop`, puis supprimée. +Idéalement, chaque nouvelle fonctionnalité ou correctif de bug est développé dans une branche dédiée à partir de `develop`, nommée `feat/` ou `fix/`. Une fois le développement terminé, une merge request est créée pour demander une revue de code, et une fois validée, la branche est fusionnée dans `develop`, puis supprimée. ## Convention des commits @@ -39,4 +39,4 @@ Les commits doivent être **atomiques** c'est à dire qu'il respecte 3 règles: - Ne concerne qu'un seul sujet (une fonctionnalité, une correction de bug, etc.). - Doit avoir un message clair et concis. -- Ne doit pas rendre de dépôt "incohérent" (bloque la CI du projet). +- Ne doit pas rendre de dépôt "incohérent" (ne bloque pas la CI du projet). diff --git a/presentation/react/components/HabitsMainPage/HabitsList.tsx b/presentation/react/components/HabitsMainPage/HabitsList.tsx index abd4109..a632fdd 100644 --- a/presentation/react/components/HabitsMainPage/HabitsList.tsx +++ b/presentation/react/components/HabitsMainPage/HabitsList.tsx @@ -1,25 +1,20 @@ import { useState } from "react" import { Dimensions, ScrollView } from "react-native" -import { List } from "react-native-paper" +import { Divider, List } from "react-native-paper" import type { GoalFrequency } from "@/domain/entities/Goal" -import { GOAL_FREQUENCIES } from "@/domain/entities/Goal" import type { HabitsTracker } from "@/domain/entities/HabitsTracker" import { capitalize } from "@/utils/strings" import { HabitCard } from "./HabitCard" -import { HabitsEmpty } from "./HabitsEmpty" export interface HabitsListProps { habitsTracker: HabitsTracker selectedDate: Date + frequenciesFiltered: GoalFrequency[] } export const HabitsList: React.FC = (props) => { - const { habitsTracker, selectedDate } = props - - const frequenciesFiltered = GOAL_FREQUENCIES.filter((frequency) => { - return habitsTracker.habitsHistory[frequency].length > 0 - }) + const { habitsTracker, selectedDate, frequenciesFiltered } = props const [accordionExpanded, setAccordionExpanded] = useState<{ [key in GoalFrequency]: boolean @@ -29,18 +24,16 @@ export const HabitsList: React.FC = (props) => { monthly: true, }) - if (frequenciesFiltered.length <= 0) { - return - } - return ( + {frequenciesFiltered.map((frequency) => { return ( diff --git a/presentation/react/components/HabitsMainPage/HabitsMainPage.tsx b/presentation/react/components/HabitsMainPage/HabitsMainPage.tsx index ebe5492..eae9dc9 100644 --- a/presentation/react/components/HabitsMainPage/HabitsMainPage.tsx +++ b/presentation/react/components/HabitsMainPage/HabitsMainPage.tsx @@ -1,8 +1,10 @@ -import { useMemo, useState } from "react" +import { useState } from "react" import { Agenda } from "react-native-calendars" +import { GOAL_FREQUENCIES } from "@/domain/entities/Goal" import type { HabitsTracker } from "@/domain/entities/HabitsTracker" -import { getISODate } from "@/utils/dates" +import { getISODate, getNowDate } from "@/utils/dates" +import { HabitsEmpty } from "./HabitsEmpty" import { HabitsList } from "./HabitsList" export interface HabitsMainPageProps { @@ -12,31 +14,38 @@ export interface HabitsMainPageProps { export const HabitsMainPage: React.FC = (props) => { const { habitsTracker } = props - const today = useMemo(() => { - return new Date() - }, []) + const today = getNowDate() const todayISO = getISODate(today) const [selectedDate, setSelectedDate] = useState(today) - const selectedISODate = getISODate(selectedDate) + const selectedDateISO = getISODate(selectedDate) + + const frequenciesFiltered = GOAL_FREQUENCIES.filter((frequency) => { + return habitsTracker.habitsHistory[frequency].length > 0 + }) + + if (frequenciesFiltered.length <= 0) { + return + } return ( { setSelectedDate(new Date(date.dateString)) }} markedDates={{ - [todayISO]: { marked: true }, + [todayISO]: { marked: true, today: true }, }} - selected={selectedISODate} + maxDate={todayISO} + selected={selectedDateISO} renderList={() => { return ( ) }} diff --git a/utils/dates.ts b/utils/dates.ts index 43da5a0..4b0124a 100644 --- a/utils/dates.ts +++ b/utils/dates.ts @@ -11,6 +11,19 @@ export const getISODate = (date: Date): string => { return date.toISOString().slice(0, 10) } +export const getNowDate = (): Date => { + const date = new Date() + const milliseconds = Date.UTC( + date.getFullYear(), + date.getMonth(), + date.getDate(), + date.getHours(), + date.getMinutes(), + date.getSeconds(), + ) + return new Date(milliseconds) +} + /** * Get the week number [1-52] for a given date. * @param {Date} date