eletrotupi / tcc/ frontend/hooks/useHistoryFeed.ts6b006f28cdcc256212589357ed92e3c06f935c2a
1.2 KB | 41 lines Raw
1
// hooks/useHistoryFeed.ts
2
import { useMemo } from "react";
3
import {
4
  mergeAndSort,
5
  filterByCategory,
6
  groupByDate,
7
} from "@/lib/utils/history";
8
import {
9
  mapMoodToHistoryCard,
10
  mapSleepToHistoryCard,
11
  mapTriggerToHistoryCard,
12
} from "@/lib/history/mappers";
13
import type { HistoryCategory } from "@/lib/history/types";
14
import { useMoodEntries, useSleepRecords, useTriggers } from "@/hooks";
15

16
export function useHistoryFeed(activeFilter: HistoryCategory | "all") {
17
  const { data: moodsPage } = useMoodEntries({});
18
  const { data: sleepPage } = useSleepRecords({});
19
  const { data: triggersPage } = useTriggers({});
20

21
  const moods = moodsPage?.entries ?? [];
22
  const sleepRecords = sleepPage?.entries ?? [];
23
  const triggers = triggersPage?.entries ?? [];
24

25
  const grouped = useMemo(() => {
26
    const merged = mergeAndSort([
27
      moods.map(mapMoodToHistoryCard),
28
      sleepRecords.map(mapSleepToHistoryCard),
29
      triggers.map(mapTriggerToHistoryCard),
30
    ]);
31

32
    console.log("Sleep records", sleepRecords)
33
    console.log("Merged data", merged)
34

35
    const filtered = filterByCategory(merged, activeFilter);
36
    return groupByDate(filtered);
37
  }, [moods, sleepRecords, triggers, activeFilter]);
38

39
  // TODO: expose the isLoading here
40
  return grouped;
41
}