diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/utils-common.ts | 19 | ||||
| -rw-r--r-- | src/utils-mock.js | 11 | ||||
| -rw-r--r-- | src/utils-prod.js | 12 |
3 files changed, 20 insertions, 22 deletions
diff --git a/src/utils-common.ts b/src/utils-common.ts index 7bca889..d644b10 100644 --- a/src/utils-common.ts +++ b/src/utils-common.ts @@ -36,8 +36,20 @@ export function getCourseId(): number { return globalThis.M.cfg.courseId; } -// TODO(muhq): Cache the retrieved URL +export class CourseLocalStorage { + static getItem(key: string) { + return localStorage.getItem(`${key}-${getCourseId()}`); + } + + static setItem(key: string, val: string) { + return localStorage.setItem(`${key}-${getCourseId()}`, val); + } +} + export async function getUserIconUrl(userId: number): Promise<string> { + let url = CourseLocalStorage.getItem(`bycs-sol-user-icon-${userId}`); + if (url) return url; + const userRes = await fetch(`https://lernplattform.bycs.de/user/profile.php?id=${userId}`); const userDoc = new DOMParser().parseFromString(await userRes.text(), "text/html"); const userpicture = userDoc.querySelector(".userpicture"); @@ -45,7 +57,10 @@ export async function getUserIconUrl(userId: number): Promise<string> { return ""; } - return (userpicture as HTMLImageElement).src ?? ""; + url = (userpicture as HTMLImageElement).src ?? ""; + CourseLocalStorage.setItem(`bycs-sol-user-icon-${userId}`, url); + + return url; } // SplitMix32 implementation taken from: diff --git a/src/utils-mock.js b/src/utils-mock.js index 99455f9..cd3c10c 100644 --- a/src/utils-mock.js +++ b/src/utils-mock.js @@ -1,6 +1,7 @@ import { fetchStudentsMock, getName } from "./mock.ts"; export { getName } from "./mock.ts"; export { + CourseLocalStorage, DATE_FMT, DATETIME_FMT, dateStringNow, @@ -43,13 +44,3 @@ export function getCourseParticipantsUrl() { console.error("Try to get mocked participations URL"); return ""; } - -export class CourseLocalStorage { - static getItem(key) { - return localStorage.getItem(`${key}-mock`); - } - - static setItem(key, val) { - return localStorage.setItem(`${key}-mock`, val); - } -} diff --git a/src/utils-prod.js b/src/utils-prod.js index 3662c97..fc6e316 100644 --- a/src/utils-prod.js +++ b/src/utils-prod.js @@ -1,4 +1,6 @@ +import { getCourseId } from "./utils-common.ts"; export { + CourseLocalStorage, DATE_FMT, DATETIME_FMT, dateStringNow, @@ -55,13 +57,3 @@ export function getSesskey() { export function getCourseParticipantsUrl() { return `https://lernplattform.bycs.de/user/index.php?id=${getCourseId()}&perpage=5000&tifirst&tilast`; } - -export class CourseLocalStorage { - static getItem(key) { - return localStorage.getItem(`${key}-${getCourseId()}`); - } - - static setItem(key, val) { - return localStorage.setItem(`${key}-${getCourseId()}`, val); - } -} |
