71 lines
1.9 KiB
TypeScript
71 lines
1.9 KiB
TypeScript
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
import type { SessionType } from '@/lib/types';
|
|
|
|
const notificationKey = (aId: string) => `assignment_notification_${aId}`;
|
|
const activeSprintKey = 'active_sprint';
|
|
const studyCycleKey = 'study_cycle';
|
|
|
|
export type ActiveSession = {
|
|
sessionId: string;
|
|
sessionType: SessionType;
|
|
taskId: string | null;
|
|
returnTaskId?: string | null;
|
|
durationSeconds: number;
|
|
endTime: number;
|
|
};
|
|
|
|
export type StudyCycle = {
|
|
taskId: string;
|
|
completedFocusSessions: number;
|
|
lastCompletedSessionType: SessionType;
|
|
lastCompletedAt: number;
|
|
};
|
|
|
|
export async function SaveAssignmentNotificationId(aId: string, notificationId: string) {
|
|
await AsyncStorage.setItem(notificationKey(aId), notificationId);
|
|
}
|
|
|
|
export async function GetAssignmentNotificationId(aId: string) {
|
|
return await AsyncStorage.getItem(notificationKey(aId));
|
|
}
|
|
|
|
export async function RemoveAssignmentNotificationId(aId: string) {
|
|
await AsyncStorage.removeItem(notificationKey(aId));
|
|
}
|
|
|
|
export async function SaveActiveSession(activeSession: ActiveSession) {
|
|
await AsyncStorage.setItem(activeSprintKey, JSON.stringify(activeSession));
|
|
}
|
|
|
|
export async function GetActiveSession() {
|
|
const activeSession = await AsyncStorage.getItem(activeSprintKey);
|
|
|
|
if (!activeSession) {
|
|
return null;
|
|
}
|
|
|
|
return JSON.parse(activeSession) as ActiveSession;
|
|
}
|
|
|
|
export async function RemoveActiveSession() {
|
|
await AsyncStorage.removeItem(activeSprintKey);
|
|
}
|
|
|
|
export async function SaveStudyCycle(studyCycle: StudyCycle) {
|
|
await AsyncStorage.setItem(studyCycleKey, JSON.stringify(studyCycle));
|
|
}
|
|
|
|
export async function GetStudyCycle() {
|
|
const studyCycle = await AsyncStorage.getItem(studyCycleKey);
|
|
|
|
if (!studyCycle) {
|
|
return null;
|
|
}
|
|
|
|
return JSON.parse(studyCycle) as StudyCycle;
|
|
}
|
|
|
|
export async function RemoveStudyCycle() {
|
|
await AsyncStorage.removeItem(studyCycleKey);
|
|
}
|