@capytale/activity.js 3.1.20 → 3.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,6 @@ import type { MeBackend } from "../../api/me/backend";
3
3
  import type { UserLoader } from "../../entity/user";
4
4
  import type { ActivityTypeBackend } from "../activityType/backend";
5
5
  import type { RouteResolver } from "../../api/http/route";
6
- import ActivitySession from ".";
7
- export type SessionLoader = (id: number, readOnly?: boolean) => Promise<ActivitySession>;
6
+ import ActivitySession, { ActivityMode } from ".";
7
+ export type SessionLoader = (id: number, readOnly?: boolean, mode?: ActivityMode) => Promise<ActivitySession>;
8
8
  export default function (res: RouteResolver, al: ActivityLoader, mb: MeBackend, ul: UserLoader, atl: ActivityTypeBackend): SessionLoader;
@@ -1,7 +1,7 @@
1
1
  import ActivityError from "../error";
2
2
  import ActivitySession from ".";
3
3
  export default function (res, al, mb, ul, atl) {
4
- async function loadSession(id, readOnly) {
4
+ async function loadSession(id, readOnly, mode) {
5
5
  const aPromise = al(id, readOnly);
6
6
  const mePromise = mb.getMeAsync();
7
7
  const a = await aPromise;
@@ -15,7 +15,12 @@ export default function (res, al, mb, ul, atl) {
15
15
  }
16
16
  else {
17
17
  if (a.isTeacher(me.uid)) {
18
- m = "create";
18
+ if ((mode === "create") || (mode === "view")) {
19
+ m = mode;
20
+ }
21
+ else {
22
+ m = "create";
23
+ }
19
24
  }
20
25
  else {
21
26
  m = "view";
@@ -29,7 +34,12 @@ export default function (res, al, mb, ul, atl) {
29
34
  throw new ActivityError("Vous devez être connecté pour accéder à cette activité.");
30
35
  }
31
36
  if (a.isTeacher(me.uid)) {
32
- m = "review";
37
+ if ((mode === "assignment") || (mode === "review")) {
38
+ m = mode;
39
+ }
40
+ else {
41
+ m = "review";
42
+ }
33
43
  student = await ul(a.assignmentNode.owner.value);
34
44
  }
35
45
  else if (a.isStudent(me.uid)) {
@@ -39,6 +49,9 @@ export default function (res, al, mb, ul, atl) {
39
49
  throw new ActivityError("Accès non autorisé.");
40
50
  }
41
51
  }
52
+ if ((mode != null) && (m !== mode)) {
53
+ console.log("Mode mismatch", `query param : ${mode}`, `inferred : ${m}`, "using inferred mode");
54
+ }
42
55
  const at = await atl.get(a.activityType);
43
56
  return new ActivitySession(res, a, at, me, m, student);
44
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/activity/activitySession/backend.ts"],"names":[],"mappings":"AAQA,OAAO,aAAa,MAAM,SAAS,CAAC;AAEpC,OAAO,eAAiC,MAAM,GAAG,CAAC;AAIlD,MAAM,CAAC,OAAO,WAAW,GAAkB,EAAE,EAAkB,EAAE,EAAa,EAAE,EAAc,EAAE,GAAwB;IACpH,KAAK,UAAU,WAAW,CAAC,EAAU,EAAE,QAAkB;QACrD,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC;QACzB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC;QAC3B,uCAAuC;QACvC,IAAI,OAAO,GAAqB,SAAS,CAAC;QAC1C,IAAI,CAAe,CAAC;QACpB,IAAI,IAAI,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACb,CAAC,GAAG,MAAM,CAAC;YACf,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,CAAC,GAAG,QAAQ,CAAC;gBACjB,CAAC;qBAAM,CAAC;oBACJ,CAAC,GAAG,MAAM,CAAC;gBACf,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,kBAAkB;gBAClC,MAAM,IAAI,aAAa,CAAC,uEAAuE,CAAC,CAAC;YACrG,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACb,MAAM,IAAI,aAAa,CAAC,yDAAyD,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,CAAC,GAAG,QAAQ,CAAC;gBACb,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAsB,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,CAAC,GAAG,YAAY,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,aAAa,CAAC,qBAAqB,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC","sourcesContent":["import { RestReference } from \"~api/rest/restObject\";\nimport type { ActivityLoader } from \"~/activityBunch/backend\";\nimport type { MeBackend } from \"~api/me/backend\";\nimport type { UserLoader } from \"~entity/user\";\nimport type { ActivityTypeBackend } from \"~/activityType/backend\";\nimport type User from \"~entity/user\";\nimport type { RouteResolver } from \"~api/http/route\";\n\nimport ActivityError from \"~/error\";\n\nimport ActivitySession, { ActivityMode } from \".\";\n\nexport type SessionLoader = (id: number, readOnly?: boolean) => Promise<ActivitySession>;\n\nexport default function (res: RouteResolver, al: ActivityLoader, mb: MeBackend, ul: UserLoader, atl: ActivityTypeBackend): SessionLoader {\n async function loadSession(id: number, readOnly?: boolean): Promise<ActivitySession> {\n const aPromise = al(id, readOnly);\n const mePromise = mb.getMeAsync();\n const a = await aPromise;\n const me = await mePromise;\n // TODO: Détecter le cas hors connexion\n let student: User | undefined = undefined;\n let m: ActivityMode;\n if (null == a.assignmentNode) {\n if (me == null) {\n m = \"view\";\n } else {\n if (a.isTeacher(me.uid)) {\n m = \"create\";\n } else {\n m = \"view\";\n }\n }\n } else {\n if (a.code.value == 'student_activity')\n throw new ActivityError(\"Cette activité a été crée par un élève, elle ne peut pas être clonée.\");\n if (me == null) {\n throw new ActivityError(\"Vous devez être connecté pour accéder à cette activité.\");\n }\n if (a.isTeacher(me.uid)) {\n m = \"review\";\n student = await ul(a.assignmentNode.owner.value as RestReference);\n } else if (a.isStudent(me.uid)) {\n m = \"assignment\";\n } else {\n throw new ActivityError(\"Accès non autorisé.\");\n }\n }\n const at = await atl.get(a.activityType);\n return new ActivitySession(res, a, at, me, m, student);\n }\n return loadSession;\n}"]}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/activity/activitySession/backend.ts"],"names":[],"mappings":"AAQA,OAAO,aAAa,MAAM,SAAS,CAAC;AAEpC,OAAO,eAAiC,MAAM,GAAG,CAAC;AAIlD,MAAM,CAAC,OAAO,WAAW,GAAkB,EAAE,EAAkB,EAAE,EAAa,EAAE,EAAc,EAAE,GAAwB;IACpH,KAAK,UAAU,WAAW,CAAC,EAAU,EAAE,QAAkB,EAAE,IAAmB;QAC1E,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC;QACzB,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC;QAC3B,uCAAuC;QACvC,IAAI,OAAO,GAAqB,SAAS,CAAC;QAC1C,IAAI,CAAe,CAAC;QACpB,IAAI,IAAI,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACb,CAAC,GAAG,MAAM,CAAC;YACf,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;wBAC3C,CAAC,GAAG,IAAI,CAAC;oBACb,CAAC;yBAAM,CAAC;wBACJ,CAAC,GAAG,QAAQ,CAAC;oBACjB,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,CAAC,GAAG,MAAM,CAAC;gBACf,CAAC;YACL,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,kBAAkB;gBAClC,MAAM,IAAI,aAAa,CAAC,uEAAuE,CAAC,CAAC;YACrG,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACb,MAAM,IAAI,aAAa,CAAC,yDAAyD,CAAC,CAAC;YACvF,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;oBACjD,CAAC,GAAG,IAAI,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACJ,CAAC,GAAG,QAAQ,CAAC;gBACjB,CAAC;gBACD,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAsB,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,CAAC,GAAG,YAAY,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,aAAa,CAAC,qBAAqB,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAiB,IAAI,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACzC,OAAO,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,WAAW,CAAC;AACvB,CAAC","sourcesContent":["import { RestReference } from \"~api/rest/restObject\";\nimport type { ActivityLoader } from \"~/activityBunch/backend\";\nimport type { MeBackend } from \"~api/me/backend\";\nimport type { UserLoader } from \"~entity/user\";\nimport type { ActivityTypeBackend } from \"~/activityType/backend\";\nimport type User from \"~entity/user\";\nimport type { RouteResolver } from \"~api/http/route\";\n\nimport ActivityError from \"~/error\";\n\nimport ActivitySession, { ActivityMode } from \".\";\n\nexport type SessionLoader = (id: number, readOnly?: boolean, mode?: ActivityMode) => Promise<ActivitySession>;\n\nexport default function (res: RouteResolver, al: ActivityLoader, mb: MeBackend, ul: UserLoader, atl: ActivityTypeBackend): SessionLoader {\n async function loadSession(id: number, readOnly?: boolean, mode?: ActivityMode): Promise<ActivitySession> {\n const aPromise = al(id, readOnly);\n const mePromise = mb.getMeAsync();\n const a = await aPromise;\n const me = await mePromise;\n // TODO: Détecter le cas hors connexion\n let student: User | undefined = undefined;\n let m: ActivityMode;\n if (null == a.assignmentNode) {\n if (me == null) {\n m = \"view\";\n } else {\n if (a.isTeacher(me.uid)) {\n if ((mode === \"create\") || (mode === \"view\")) {\n m = mode;\n } else {\n m = \"create\";\n }\n } else {\n m = \"view\";\n }\n }\n } else {\n if (a.code.value == 'student_activity')\n throw new ActivityError(\"Cette activité a été crée par un élève, elle ne peut pas être clonée.\");\n if (me == null) {\n throw new ActivityError(\"Vous devez être connecté pour accéder à cette activité.\");\n }\n if (a.isTeacher(me.uid)) {\n if ((mode === \"assignment\") || (mode === \"review\")) {\n m = mode;\n } else {\n m = \"review\";\n }\n student = await ul(a.assignmentNode.owner.value as RestReference);\n } else if (a.isStudent(me.uid)) {\n m = \"assignment\";\n } else {\n throw new ActivityError(\"Accès non autorisé.\");\n }\n }\n if ((mode != null) && (m !== mode)) {\n console.log(\"Mode mismatch\", `query param : ${mode}`, `inferred : ${m}`, \"using inferred mode\");\n }\n const at = await atl.get(a.activityType);\n return new ActivitySession(res, a, at, me, m, student);\n }\n return loadSession;\n}"]}
@@ -1,6 +1,7 @@
1
1
  export default function createLtiSession(): {
2
2
  setSessId(sessId: string): void;
3
3
  getProperty(key: string): any;
4
+ setProperty(key: string, value: any): void;
4
5
  readonly isActive: boolean;
5
6
  getSessId(): string | null;
6
7
  addLtiAuthHeader(hdr: Headers): Headers;
package/api/lti/index.js CHANGED
@@ -20,6 +20,12 @@ export default function createLtiSession() {
20
20
  return;
21
21
  return ltiProps[key];
22
22
  },
23
+ setProperty(key, value) {
24
+ if (!isActive)
25
+ return;
26
+ ltiProps[key] = value;
27
+ sessionStorage.setItem(`lti_props_${ltiSessionId}`, JSON.stringify(ltiProps));
28
+ },
23
29
  get isActive() {
24
30
  return isActive;
25
31
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/lti/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACpC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,YAAoB,CAAC;IACzB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgC,CAAC;IACrC,OAAO;QACH,SAAS,CAAC,MAAc;YACpB,IAAI,YAAY,KAAK,MAAM;gBAAE,OAAO;YACpC,YAAY,GAAG,MAAM,CAAC;YACtB,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,MAAM,EAAE,CAAE,CAAC;YAC5D,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;YACrE,QAAQ,GAAG,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACtE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,QAAQ,GAAG,EAAE,CAAC;YAC3C,QAAQ,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,WAAW,CAAC,GAAW;YACnB,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,QAAQ;YACR,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,SAAS;YACL,OAAO,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC;QACD,gBAAgB,CAAC,GAAY;YACzB,IAAI,QAAQ,IAAI,IAAI;gBAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;YACpE,OAAO,GAAG,CAAC;QACf,CAAC;KACJ,CAAC;AACN,CAAC","sourcesContent":["export default function createLtiSession() {\n let isActive = false;\n let ltiSessionId: string;\n let ltiToken: string;\n let ltiProps: { [key: string]: any };\n return {\n setSessId(sessId: string) {\n if (ltiSessionId === sessId) return;\n ltiSessionId = sessId;\n ltiToken = sessionStorage.getItem(`lti_session_${sessId}`)!;\n const ltiPropsString = sessionStorage.getItem(`lti_props_${sessId}`);\n ltiProps = ltiPropsString == null ? {} : (JSON.parse(ltiPropsString));\n if (Array.isArray(ltiProps)) ltiProps = {};\n isActive = true;\n },\n getProperty(key: string): any {\n if (!isActive) return;\n return ltiProps[key];\n },\n get isActive() {\n return isActive;\n },\n getSessId(): string | null {\n return isActive ? ltiSessionId : null;\n },\n addLtiAuthHeader(hdr: Headers): Headers {\n if (ltiToken != null) hdr.set('X-CAPYTALE-AUTH', 'lti ' + ltiToken);\n return hdr;\n }\n };\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/lti/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACpC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,YAAoB,CAAC;IACzB,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgC,CAAC;IACrC,OAAO;QACH,SAAS,CAAC,MAAc;YACpB,IAAI,YAAY,KAAK,MAAM;gBAAE,OAAO;YACpC,YAAY,GAAG,MAAM,CAAC;YACtB,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,MAAM,EAAE,CAAE,CAAC;YAC5D,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;YACrE,QAAQ,GAAG,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;YACtE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,QAAQ,GAAG,EAAE,CAAC;YAC3C,QAAQ,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,WAAW,CAAC,GAAW;YACnB,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,WAAW,CAAC,GAAW,EAAE,KAAU;YAC/B,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,cAAc,CAAC,OAAO,CAAC,aAAa,YAAY,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,QAAQ;YACR,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,SAAS;YACL,OAAO,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC;QACD,gBAAgB,CAAC,GAAY;YACzB,IAAI,QAAQ,IAAI,IAAI;gBAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;YACpE,OAAO,GAAG,CAAC;QACf,CAAC;KACJ,CAAC;AACN,CAAC","sourcesContent":["export default function createLtiSession() {\n let isActive = false;\n let ltiSessionId: string;\n let ltiToken: string;\n let ltiProps: { [key: string]: any };\n return {\n setSessId(sessId: string) {\n if (ltiSessionId === sessId) return;\n ltiSessionId = sessId;\n ltiToken = sessionStorage.getItem(`lti_session_${sessId}`)!;\n const ltiPropsString = sessionStorage.getItem(`lti_props_${sessId}`);\n ltiProps = ltiPropsString == null ? {} : (JSON.parse(ltiPropsString));\n if (Array.isArray(ltiProps)) ltiProps = {};\n isActive = true;\n },\n getProperty(key: string): any {\n if (!isActive) return;\n return ltiProps[key];\n },\n setProperty(key: string, value: any): void {\n if (!isActive) return;\n ltiProps[key] = value;\n sessionStorage.setItem(`lti_props_${ltiSessionId}`, JSON.stringify(ltiProps));\n },\n get isActive() {\n return isActive;\n },\n getSessId(): string | null {\n return isActive ? ltiSessionId : null;\n },\n addLtiAuthHeader(hdr: Headers): Headers {\n if (ltiToken != null) hdr.set('X-CAPYTALE-AUTH', 'lti ' + ltiToken);\n return hdr;\n }\n };\n}"]}
@@ -1,4 +1,6 @@
1
1
  import type { SessionLoader } from "../../activity/activitySession/backend";
2
2
  declare const sessionLoader: SessionLoader;
3
+ declare function autoLoad(readOnly?: boolean): ReturnType<typeof sessionLoader>;
3
4
  export default sessionLoader;
4
5
  export type { SessionLoader };
6
+ export { autoLoad };
@@ -4,6 +4,15 @@ import al from "./activityBunch";
4
4
  import mb from "./me";
5
5
  import ul from "./user";
6
6
  import atl from "./activityType";
7
+ import urlParser from "./urlParser";
7
8
  const sessionLoader = sessionBackend(res, al, mb, ul, atl);
9
+ function autoLoad(readOnly) {
10
+ const id = urlParser.getActivityNid();
11
+ if (id == null)
12
+ throw new Error('No nid');
13
+ const mode = urlParser.getActivityMode();
14
+ return sessionLoader(id, readOnly, mode);
15
+ }
8
16
  export default sessionLoader;
17
+ export { autoLoad };
9
18
  //# sourceMappingURL=activitySession.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activitySession.js","sourceRoot":"","sources":["../../src/backend/capytale/activitySession.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAO,wCAAwC,CAAC;AAErE,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,EAAE,MAAM,QAAQ,CAAC;AACxB,OAAO,GAAG,MAAM,gBAAgB,CAAC;AAEjC,MAAM,aAAa,GAAkB,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAE1E,eAAe,aAAa,CAAC","sourcesContent":["import type { SessionLoader } from \"../../activity/activitySession/backend\";\nimport sessionBackend from \"../../activity/activitySession/backend\";\n\nimport res from \"./resolver\";\nimport al from \"./activityBunch\";\nimport mb from \"./me\";\nimport ul from \"./user\";\nimport atl from \"./activityType\";\n\nconst sessionLoader: SessionLoader = sessionBackend(res, al, mb, ul, atl);\n\nexport default sessionLoader;\nexport type { SessionLoader };\n"]}
1
+ {"version":3,"file":"activitySession.js","sourceRoot":"","sources":["../../src/backend/capytale/activitySession.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAO,wCAAwC,CAAC;AAErE,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjC,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,EAAE,MAAM,QAAQ,CAAC;AACxB,OAAO,GAAG,MAAM,gBAAgB,CAAC;AAEjC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,aAAa,GAAkB,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAE1E,SAAS,QAAQ,CAAC,QAAkB;IAClC,MAAM,EAAE,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;IACtC,IAAI,EAAE,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC;IACzC,OAAO,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,eAAe,aAAa,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,CAAC","sourcesContent":["import type { SessionLoader } from \"../../activity/activitySession/backend\";\nimport sessionBackend from \"../../activity/activitySession/backend\";\n\nimport res from \"./resolver\";\nimport al from \"./activityBunch\";\nimport mb from \"./me\";\nimport ul from \"./user\";\nimport atl from \"./activityType\";\n\nimport urlParser from \"./urlParser\";\n\nconst sessionLoader: SessionLoader = sessionBackend(res, al, mb, ul, atl);\n\nfunction autoLoad(readOnly?: boolean): ReturnType<typeof sessionLoader> {\n const id = urlParser.getActivityNid();\n if (id == null) throw new Error('No nid');\n const mode = urlParser.getActivityMode();\n return sessionLoader(id, readOnly, mode);\n}\n\nexport default sessionLoader;\nexport type { SessionLoader };\nexport { autoLoad };"]}
@@ -1,6 +1,7 @@
1
1
  declare const ltiSession: {
2
2
  setSessId(sessId: string): void;
3
3
  getProperty(key: string): any;
4
+ setProperty(key: string, value: any): void;
4
5
  readonly isActive: boolean;
5
6
  getSessId(): string | null;
6
7
  addLtiAuthHeader(hdr: Headers): Headers;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capytale/activity.js",
3
- "version": "3.1.20",
3
+ "version": "3.1.22",
4
4
  "author": "Capytale.fr",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "bin": {