eletrotupi / tcc/ frontend/hooks/useHistoryFeed.ts96e7fe0f1dcc90b9ddef3032a78b7040d2068378
1.0 KB | 31 lines Raw
1
// hooks/useHistoryFeed.ts
2
import { useMemo } from 'react'
3
import { mergeAndSort, filterByCategory, groupByDate } from '@/lib/utils/history'
4
import {
5
  mapMoodToHistoryCard,
6
  mapSleepToHistoryCard,
7
  mapTriggerToHistoryCard,
8
  mapInterventionToHistoryCard
9
} from '@/lib/history/mappers'
10
import type { HistoryCategory } from '@/lib/history/types'
11
import { useMoodEntries, useSleepRecords } from '@/hooks';
12

13
export function useHistoryFeed(activeFilter: HistoryCategory | 'all') {
14
  const { data: moodsPage }        = useMoodEntries({})
15
  const { data: sleepPage }        = useSleepRecords({})
16

17
  const moods        = moodsPage?.entries ?? []
18
  const sleepRecords = sleepPage?.entries ?? []
19

20
  const grouped = useMemo(() => {
21
    const merged = mergeAndSort([
22
      moods.map(mapMoodToHistoryCard),
23
      sleepRecords.map(mapSleepToHistoryCard),
24
    ])
25
    const filtered = filterByCategory(merged, activeFilter)
26
    return groupByDate(filtered)
27
  }, [moods, sleepRecords, activeFilter])
28

29
  // TODO: expose the isLoading here
30
  return grouped
31
}