mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-08-02 19:31:19 -04:00
28 lines
996 B
TypeScript
28 lines
996 B
TypeScript
import {run} from 'common/supabase/utils'
|
|
import {UserActivity} from 'common/user'
|
|
import {useEffect} from 'react'
|
|
import {usePersistentInMemoryState} from 'web/hooks/use-persistent-in-memory-state'
|
|
import {db} from 'web/lib/supabase/db'
|
|
|
|
export function useUserActivity(userId: string | undefined) {
|
|
const [userActivity, setUserActivity] = usePersistentInMemoryState<UserActivity | undefined>(
|
|
undefined,
|
|
`user-activity-${userId ?? 'none'}`,
|
|
)
|
|
|
|
const refresh = async () => {
|
|
if (!userId) return
|
|
// Direct SELECT on user_activity is revoked from the anon/authenticated roles; read the single row
|
|
// through the capped get_user_activity() SECURITY DEFINER function.
|
|
const {data} = await run(db.rpc('get_user_activity' as any, {uid: userId}))
|
|
const activity = (data as any[])?.[0]
|
|
if (activity) setUserActivity(activity as unknown as UserActivity)
|
|
}
|
|
|
|
useEffect(() => {
|
|
refresh().catch(() => {})
|
|
}, [userId])
|
|
|
|
return {data: userActivity, refresh}
|
|
}
|