mirror of
https://github.com/ManInDark/HabitTrove.git
synced 2026-01-21 06:34:30 +01:00
performance optimization via atoms (#108)
This commit is contained in:
@@ -2,14 +2,14 @@ import { useAtom } from 'jotai'
|
||||
import { calculateCoinsEarnedToday, calculateCoinsSpentToday, calculateTotalEarned, calculateTotalSpent, calculateTransactionsToday, checkPermission } from '@/lib/utils'
|
||||
import {
|
||||
coinsAtom,
|
||||
// coinsEarnedTodayAtom,
|
||||
// totalEarnedAtom,
|
||||
// totalSpentAtom,
|
||||
// coinsSpentTodayAtom,
|
||||
// transactionsTodayAtom,
|
||||
// coinsBalanceAtom,
|
||||
coinsEarnedTodayAtom,
|
||||
totalEarnedAtom,
|
||||
totalSpentAtom,
|
||||
coinsSpentTodayAtom,
|
||||
transactionsTodayAtom,
|
||||
coinsBalanceAtom,
|
||||
settingsAtom,
|
||||
usersAtom
|
||||
usersAtom,
|
||||
} from '@/lib/atoms'
|
||||
import { addCoins, removeCoins, saveCoinsData } from '@/app/actions/data'
|
||||
import { CoinsData, User } from '@/lib/types'
|
||||
@@ -29,7 +29,7 @@ function handlePermissionCheck(
|
||||
})
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
if (!user.isAdmin && !checkPermission(user.permissions, resource, action)) {
|
||||
toast({
|
||||
title: "Permission Denied",
|
||||
@@ -38,7 +38,7 @@ function handlePermissionCheck(
|
||||
})
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -57,12 +57,12 @@ export function useCoins(options?: { selectedUser?: string }) {
|
||||
// Filter transactions for the selectd user
|
||||
const transactions = coins.transactions.filter(t => t.userId === user?.id)
|
||||
|
||||
const balance = transactions.reduce((sum, t) => sum + t.amount, 0)
|
||||
const coinsEarnedToday = calculateCoinsEarnedToday(transactions, settings.system.timezone)
|
||||
const totalEarned = calculateTotalEarned(transactions)
|
||||
const totalSpent = calculateTotalSpent(transactions)
|
||||
const coinsSpentToday = calculateCoinsSpentToday(transactions, settings.system.timezone)
|
||||
const transactionsToday = calculateTransactionsToday(transactions, settings.system.timezone)
|
||||
const [balance] = useAtom(coinsBalanceAtom)
|
||||
const [coinsEarnedToday] = useAtom(coinsEarnedTodayAtom)
|
||||
const [totalEarned] = useAtom(totalEarnedAtom)
|
||||
const [totalSpent] = useAtom(totalSpentAtom)
|
||||
const [coinsSpentToday] = useAtom(coinsSpentTodayAtom)
|
||||
const [transactionsToday] = useAtom(transactionsTodayAtom)
|
||||
|
||||
const add = async (amount: number, description: string, note?: string) => {
|
||||
if (!handlePermissionCheck(currentUser, 'coins', 'write')) return null
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useAtom } from 'jotai'
|
||||
import { habitsAtom, coinsAtom, settingsAtom, usersAtom } from '@/lib/atoms'
|
||||
import { useAtom, atom } from 'jotai'
|
||||
import { habitsAtom, coinsAtom, settingsAtom, usersAtom, habitFreqMapAtom } from '@/lib/atoms'
|
||||
import { addCoins, removeCoins, saveHabitsData } from '@/app/actions/data'
|
||||
import { Habit, Permission, SafeUser, User } from '@/lib/types'
|
||||
import { toast } from '@/hooks/use-toast'
|
||||
@@ -34,7 +34,7 @@ function handlePermissionCheck(
|
||||
})
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
if (!user.isAdmin && !checkPermission(user.permissions, resource, action)) {
|
||||
toast({
|
||||
title: "Permission Denied",
|
||||
@@ -43,7 +43,7 @@ function handlePermissionCheck(
|
||||
})
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -54,6 +54,7 @@ export function useHabits() {
|
||||
const [habitsData, setHabitsData] = useAtom(habitsAtom)
|
||||
const [coins, setCoins] = useAtom(coinsAtom)
|
||||
const [settings] = useAtom(settingsAtom)
|
||||
const [habitFreqMap] = useAtom(habitFreqMapAtom)
|
||||
|
||||
const completeHabit = async (habit: Habit) => {
|
||||
if (!handlePermissionCheck(currentUser, 'habit', 'interact')) return
|
||||
@@ -313,6 +314,7 @@ export function useHabits() {
|
||||
deleteHabit,
|
||||
completePastHabit,
|
||||
archiveHabit,
|
||||
unarchiveHabit
|
||||
unarchiveHabit,
|
||||
habitFreqMap,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user