aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/utils-common.ts19
-rw-r--r--src/utils-mock.js11
-rw-r--r--src/utils-prod.js12
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);
- }
-}