Skip to content

Commit

Permalink
Consolidate cache loading code (#108)
Browse files Browse the repository at this point in the history
  • Loading branch information
PurelyAnecdotal authored Dec 27, 2024
1 parent afa0e6a commit ac4cf00
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 35 deletions.
57 changes: 23 additions & 34 deletions src/lib/cache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,54 +59,43 @@ export const loadGradebook = async () => {
gradebookLoaded.set(true);
};

export const loadAttendance = async () => {
attendanceLoaded.set(false);

writeCacheToStore('attendance', attendance);
const loadUsingCache = async <T>(key: string, store: Writable<T>, indicator: Writable<boolean>, retrievalFunc: () => Promise<T>) => {
indicator.set(false);

const attendanceRecord = await get(studentAccount)?.attendance();
writeCacheToStore(key, store);

attendance.set(attendanceRecord);
localStorage.setItem('attendance', JSON.stringify(attendanceRecord));
const record = await retrievalFunc();

attendanceLoaded.set(true);
};
store.set(record);
localStorage.setItem(key, JSON.stringify(record));

export const loadStudentInfo = async () => {
studentInfoLoaded.set(false);
indicator.set(true);
}

writeCacheToStore('studentInfo', studentInfo);
export const loadAttendance = async () => {
const acc = get(studentAccount);
if (!acc) return;

const studentInfoRecord = await get(studentAccount)?.studentInfo();
loadUsingCache('attendance', attendance, attendanceLoaded, acc.attendance.bind(acc));
};

studentInfo.set(studentInfoRecord);
localStorage.setItem('studentInfo', JSON.stringify(studentInfoRecord));
export const loadStudentInfo = async () => {
const acc = get(studentAccount);
if (!acc) return;

studentInfoLoaded.set(true);
loadUsingCache('studentInfo', studentInfo, studentInfoLoaded, acc.studentInfo.bind(acc));
};

export const loadDocuments = async () => {
documentsLoaded.set(false);
const acc = get(studentAccount);
if (!acc) return;

writeCacheToStore('documents', documents);

const documentsRecord = await get(studentAccount)?.documents();

documents.set(documentsRecord);
localStorage.setItem('documents', JSON.stringify(documentsRecord));

documentsLoaded.set(true);
loadUsingCache('documents', documents, documentsLoaded, acc.documents.bind(acc));
};

export const loadMailData = async () => {
mailDataLoaded.set(false);

writeCacheToStore('mailData', mailData);

const mailDataRecord = await get(studentAccount)?.mailData();

mailData.set(mailDataRecord);
localStorage.setItem('mailData', JSON.stringify(mailDataRecord));
const acc = get(studentAccount);
if (!acc) return;

mailDataLoaded.set(true);
loadUsingCache('mailData', mailData, mailDataLoaded, acc.mailData.bind(acc));
};
2 changes: 1 addition & 1 deletion src/lib/synergy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type { AuthToken } from '$lib/types/AuthToken';
import type { Documents } from '$lib/types/Documents';
import type { Gradebook } from '$lib/types/Gradebook';
import type { MailData } from '$lib/types/MailData';
import type { ReportCard, ReportCardNotFound } from '$lib/types/ReportCard';
import type { ReportCard } from '$lib/types/ReportCard';
import type { StudentInfo } from '$lib/types/StudentInfo';
import { XMLBuilder, XMLParser } from 'fast-xml-parser';

Expand Down

0 comments on commit ac4cf00

Please sign in to comment.