aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/admin-tools.js1
-rw-r--r--src/mock.ts26
-rw-r--r--src/utils-common.ts14
-rw-r--r--src/utils-mock.js25
-rw-r--r--src/utils-prod.js12
5 files changed, 46 insertions, 32 deletions
diff --git a/src/admin-tools.js b/src/admin-tools.js
index 362d1b3..54c8d26 100644
--- a/src/admin-tools.js
+++ b/src/admin-tools.js
@@ -1,6 +1,7 @@
import { GraduationChange, submitGraduationChange } from "./graduation-ENV.ts";
import { fetchStudent, fetchStudents } from "./student-ENV.ts";
import { fetchCourses } from "./moodle-ENV.ts";
+import { getCourseId } from "./utils-ENV.js";
let outputNode;
function output(msg) {
diff --git a/src/mock.ts b/src/mock.ts
index 14d408d..bbbc771 100644
--- a/src/mock.ts
+++ b/src/mock.ts
@@ -1,6 +1,26 @@
import { Graduation, GraduationChange } from "./graduation-common.ts";
import { Student } from "./student-common.ts";
+export function getName() {
+ let name = "";
+
+ const params = new URLSearchParams(document.location.search);
+ if (params.has("firstname")) name = params.get("firstname")!;
+ if (params.has("lastname")) name += " " + params.get("lastname")!;
+
+ return name.trim();
+}
+
+globalThis.M = {
+ cfg: {
+ userId: (function () {
+ const name = getName();
+ return _fetchStudentsMock().filter((s) => s.name === name)[0].id;
+ })(),
+ courseId: 1337,
+ },
+};
+
const students = [
new Student(1, "foo bar"),
new Student(2, "maxi mustermensch"),
@@ -12,7 +32,7 @@ const students = [
new Student(8, "6"),
];
-async function fetchStudentsMock(id?: number, name?: string) {
+function _fetchStudentsMock(id?: number, name?: string) {
return students.filter((s) => {
return (
(typeof id === "undefined" || s.id === id) &&
@@ -21,6 +41,10 @@ async function fetchStudentsMock(id?: number, name?: string) {
});
}
+async function fetchStudentsMock(id?: number, name?: string) {
+ return _fetchStudentsMock(id, name);
+}
+
async function fetchSubjectsMock() {
return ["Mathe", "Deutsch", "Englisch"];
}
diff --git a/src/utils-common.ts b/src/utils-common.ts
index 153bbaa..7bca889 100644
--- a/src/utils-common.ts
+++ b/src/utils-common.ts
@@ -22,6 +22,20 @@ export function datetimeStringNow() {
return DATETIME_FMT.format(new Date());
}
+declare global {
+ var M: { cfg: { userId: number; courseId: number } };
+}
+
+export function getUserId(): number {
+ // M is exported by Moodle
+ return globalThis.M.cfg.userId;
+}
+
+export function getCourseId(): number {
+ // M is exported by Moodle
+ return globalThis.M.cfg.courseId;
+}
+
// TODO(muhq): Cache the retrieved URL
export async function getUserIconUrl(userId: number): Promise<string> {
const userRes = await fetch(`https://lernplattform.bycs.de/user/profile.php?id=${userId}`);
diff --git a/src/utils-mock.js b/src/utils-mock.js
index 4fb2b10..99455f9 100644
--- a/src/utils-mock.js
+++ b/src/utils-mock.js
@@ -1,10 +1,13 @@
-import { fetchStudentsMock } from "./mock.ts";
+import { fetchStudentsMock, getName } from "./mock.ts";
+export { getName } from "./mock.ts";
export {
DATE_FMT,
DATETIME_FMT,
dateStringNow,
datetimeStringNow,
+ getCourseId,
getUserIconUrl,
+ getUserId,
splitmix32,
} from "./utils-common.ts";
@@ -23,22 +26,6 @@ export function getFirstAndLastname() {
return [firstname, lastname];
}
-export function getName() {
- let name = "";
-
- const params = new URLSearchParams(document.location.search);
- if (params.has("firstname")) name = params.get("firstname");
- if (params.has("lastname")) name += " " + params.get("lastname");
-
- return name.trim();
-}
-
-export function getUserId() {
- const name = getName();
-
- return fetchStudentsMock.filter((s) => s.name === name)[0].id;
-}
-
export function getActivityUrl(name) {
switch (name) {
case "Cockpit":
@@ -48,10 +35,6 @@ export function getActivityUrl(name) {
}
}
-export function getCourseId() {
- return "1337";
-}
-
export function getSesskey() {
return "sesskey";
}
diff --git a/src/utils-prod.js b/src/utils-prod.js
index 447a17a..3662c97 100644
--- a/src/utils-prod.js
+++ b/src/utils-prod.js
@@ -3,7 +3,9 @@ export {
DATETIME_FMT,
dateStringNow,
datetimeStringNow,
+ getCourseId,
getUserIconUrl,
+ getUserId,
splitmix32,
} from "./utils-common.ts";
@@ -31,16 +33,6 @@ export function getName() {
.textContent;
}
-export function getUserId() {
- // M is exported by Moodle
- return String(M.cfg.userId);
-}
-
-export function getCourseId() {
- // M is exported by Moodle
- return String(M.cfg.courseId);
-}
-
export async function getActivityUrl(name) {
const courseUrl = `https://lernplattform.bycs.de/course/view.php?id=${getCourseId()}`;
const courseRes = await fetch(courseUrl);