import { StatsSnapshot } from "@/api_fsb"; import { RootState } from "@/store"; import { createSelector, createSlice, PayloadAction } from "@reduxjs/toolkit"; const initialState: StatsSnapshot[] = []; const grlStatsSlice = createSlice({ name: "grlStats", initialState, reducers: { addStatsData(state, action: PayloadAction) { state.push(action.payload); }, }, }); export const { addStatsData } = grlStatsSlice.actions; export default grlStatsSlice.reducer; export const selectRecentStats = createSelector( [(state: RootState) => state.stats], (stats): StatsSnapshot | null => { const lastStat = stats[stats.length - 1]; return lastStat ?? null; }, ); export const activeUsers = createSelector( [selectRecentStats], (recentStats): number | null => { return recentStats?.active_users_last_24h ?? null; }, ); export const activeSurveys = createSelector( [selectRecentStats], (recentStats): number | null => { return recentStats?.live_task_count?.total ?? null; }, ); export const maxPayout = createSelector( [selectRecentStats], (recentStats): number | null => { return recentStats?.live_tasks_max_payout?.value ?? null; }, );