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; } );