chore: fixes
This commit is contained in:
parent
20b4456245
commit
c11f7c1474
@ -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)
|
||||
|
||||
|
@ -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/<nom-de-la-fonctionnalité>` ou `fix/<nom-du-bug>`. 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/<nom-de-la-fonctionnalité>` ou `fix/<nom-du-bug>`. 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).
|
||||
|
@ -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<HabitsListProps> = (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<HabitsListProps> = (props) => {
|
||||
monthly: true,
|
||||
})
|
||||
|
||||
if (frequenciesFiltered.length <= 0) {
|
||||
return <HabitsEmpty />
|
||||
}
|
||||
|
||||
return (
|
||||
<ScrollView
|
||||
showsVerticalScrollIndicator={false}
|
||||
style={{
|
||||
paddingHorizontal: 20,
|
||||
width: Dimensions.get("window").width,
|
||||
backgroundColor: "white",
|
||||
}}
|
||||
>
|
||||
<Divider />
|
||||
<List.Section>
|
||||
{frequenciesFiltered.map((frequency) => {
|
||||
return (
|
||||
|
@ -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<HabitsMainPageProps> = (props) => {
|
||||
const { habitsTracker } = props
|
||||
|
||||
const today = useMemo(() => {
|
||||
return new Date()
|
||||
}, [])
|
||||
const today = getNowDate()
|
||||
const todayISO = getISODate(today)
|
||||
|
||||
const [selectedDate, setSelectedDate] = useState<Date>(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 <HabitsEmpty />
|
||||
}
|
||||
|
||||
return (
|
||||
<Agenda
|
||||
firstDay={1}
|
||||
showClosingKnob
|
||||
showOnlySelectedDayItems
|
||||
onDayPress={(date) => {
|
||||
setSelectedDate(new Date(date.dateString))
|
||||
}}
|
||||
markedDates={{
|
||||
[todayISO]: { marked: true },
|
||||
[todayISO]: { marked: true, today: true },
|
||||
}}
|
||||
selected={selectedISODate}
|
||||
maxDate={todayISO}
|
||||
selected={selectedDateISO}
|
||||
renderList={() => {
|
||||
return (
|
||||
<HabitsList
|
||||
habitsTracker={habitsTracker}
|
||||
selectedDate={selectedDate}
|
||||
frequenciesFiltered={frequenciesFiltered}
|
||||
/>
|
||||
)
|
||||
}}
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user