38 lines
838 B
TypeScript
38 lines
838 B
TypeScript
import {
|
|
GetActiveSession,
|
|
RemoveActiveSession,
|
|
RemoveStudyCycle,
|
|
type ActiveSession,
|
|
} from '@/lib/asyncStorage';
|
|
import { supabase } from '@/lib/supabase';
|
|
|
|
export type FinalSessionStatus = 'completed' | 'cancelled' | 'expired';
|
|
|
|
export async function finalizeStoredSession(
|
|
finalStatus: FinalSessionStatus,
|
|
activeSessionOverride?: ActiveSession | null
|
|
) {
|
|
const activeSession = activeSessionOverride ?? await GetActiveSession();
|
|
|
|
if (!activeSession) {
|
|
return null;
|
|
}
|
|
|
|
await RemoveActiveSession();
|
|
|
|
if (finalStatus !== 'completed') {
|
|
await RemoveStudyCycle();
|
|
}
|
|
|
|
const { error } = await supabase.rpc('finalize_sprint_session', {
|
|
p_session_id: activeSession.sessionId,
|
|
p_final_status: finalStatus,
|
|
p_ended_at: new Date().toISOString(),
|
|
});
|
|
|
|
return {
|
|
activeSession,
|
|
error,
|
|
};
|
|
}
|