@genesislcap/pbc-documents-ui 14.445.2 → 14.446.0-canary.1

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.
@@ -1,3 +1,4 @@
1
+ import { Auth, Connect } from '@genesislcap/foundation-comms';
1
2
  import { FileMetaType } from '../types';
2
3
  export type UploadParams = {
3
4
  file: File;
@@ -14,5 +15,14 @@ export interface IDocumentService {
14
15
  downloadDocument(documentId: string): any;
15
16
  deleteDocument(documentId: string): any;
16
17
  }
18
+ export declare class DocumentServiceImpl implements IDocumentService {
19
+ private connect;
20
+ private auth;
21
+ constructor(connect: Connect, auth: Auth);
22
+ uploadDocument({ file, path, fileMetaType }: UploadParams): Promise<Response>;
23
+ replaceDocument({ file, fileStorageId }: ReplaceParams): Promise<any>;
24
+ deleteDocument(documentId: string): Promise<void>;
25
+ downloadDocument(documentId: string): void;
26
+ }
17
27
  export declare const IDocumentService: import("@microsoft/fast-foundation").InterfaceSymbol<IDocumentService>;
18
28
  //# sourceMappingURL=document.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"document.service.d.ts","sourceRoot":"","sources":["../../../src/services/document.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,gBAAgB,CAAC,UAAU,EAAE,MAAM,OAAE;IACrC,cAAc,CAAC,UAAU,EAAE,MAAM,OAAE;CACpC;AAsHD,eAAO,MAAM,gBAAgB,wEAE5B,CAAC"}
1
+ {"version":3,"file":"document.service.d.ts","sourceRoot":"","sources":["../../../src/services/document.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,gBAAgB,CAAC,UAAU,EAAE,MAAM,OAAE;IACrC,cAAc,CAAC,UAAU,EAAE,MAAM,OAAE;CACpC;AAED,qBAAa,mBAAoB,YAAW,gBAAgB;IAE/C,OAAO,CAAC,OAAO;IAClB,OAAO,CAAC,IAAI;gBADD,OAAO,EAAE,OAAO,EACnB,IAAI,EAAE,IAAI;IAGpB,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,YAAY;IA0BzD,eAAe,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IA0BrE,cAAc,CAAC,UAAU,EAAE,MAAM;IA4BvC,gBAAgB,CAAC,UAAU,EAAE,MAAM;CAqCpC;AAED,eAAO,MAAM,gBAAgB,wEAE5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=document.service.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.service.test.d.ts","sourceRoot":"","sources":["../../../src/services/document.service.test.ts"],"names":[],"mappings":""}
@@ -84,15 +84,24 @@ let DocumentServiceImpl = class DocumentServiceImpl {
84
84
  }
85
85
  downloadDocument(documentId) {
86
86
  const headers = new Headers();
87
- headers.append('SESSION_AUTH_TOKEN', sessionStorage.getItem('authToken'));
88
- let filename = '';
87
+ if (this.auth.loggedUserResult) {
88
+ headers.append('SESSION_AUTH_TOKEN', this.auth.loggedUserResult.authToken);
89
+ }
90
+ let filename = documentId;
89
91
  fetch(`gwf/file-server/download?fileStorageId=${documentId}`, {
90
92
  method: 'GET',
91
93
  headers: headers,
92
94
  })
93
95
  .then((response) => {
96
+ if (!response.ok) {
97
+ throw new Error(`Download failed: ${response.status} ${response.statusText}`);
98
+ }
94
99
  const contentDispositionHeader = response.headers.get('Content-disposition');
95
- filename = contentDispositionHeader.split(';')[1].split('filename')[1].split('=')[1].trim();
100
+ const match = contentDispositionHeader === null || contentDispositionHeader === void 0 ? void 0 : contentDispositionHeader.match(/filename\s*=\s*(?:"([^"]+)"|([^;\s]+))/i);
101
+ const parsedFilename = (match === null || match === void 0 ? void 0 : match[1]) || (match === null || match === void 0 ? void 0 : match[2]);
102
+ if (parsedFilename) {
103
+ filename = parsedFilename.trim();
104
+ }
96
105
  return response.blob();
97
106
  })
98
107
  .then((blob) => URL.createObjectURL(blob))
@@ -114,5 +123,6 @@ DocumentServiceImpl = __decorate([
114
123
  __param(0, Connect),
115
124
  __param(1, Auth)
116
125
  ], DocumentServiceImpl);
126
+ export { DocumentServiceImpl };
117
127
  export const IDocumentService = DI.createInterface((x) => x.singleton(DocumentServiceImpl));
118
128
  //# sourceMappingURL=document.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"document.service.js","sourceRoot":"","sources":["../../../src/services/document.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.service.js","sourceRoot":"","sources":["../../../src/services/document.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { assert, createLogicSuite } from '@genesislcap/foundation-testing';
2
+ import { DocumentServiceImpl } from './document.service';
3
+ function withStubbedGlobals(run, sessionStore = {}) {
4
+ const original = {
5
+ fetch: globalThis.fetch,
6
+ sessionStorage: globalThis.sessionStorage,
7
+ };
8
+ let captured;
9
+ globalThis.fetch = ((url, init) => {
10
+ captured = { url, init };
11
+ return new Promise(() => { });
12
+ });
13
+ globalThis.sessionStorage = {
14
+ getItem: (key) => (key in sessionStore ? sessionStore[key] : null),
15
+ };
16
+ try {
17
+ run(() => captured);
18
+ }
19
+ finally {
20
+ globalThis.fetch = original.fetch;
21
+ globalThis.sessionStorage = original.sessionStorage;
22
+ }
23
+ }
24
+ function makeService(authToken) {
25
+ const auth = {
26
+ loggedUserResult: authToken === null ? null : { authToken },
27
+ };
28
+ const connect = {};
29
+ return new DocumentServiceImpl(connect, auth);
30
+ }
31
+ const Suite = createLogicSuite('DocumentServiceImpl.downloadDocument');
32
+ Suite('sends the auth token from Auth.loggedUserResult, not raw sessionStorage', () => {
33
+ withStubbedGlobals((capture) => {
34
+ const service = makeService('valid-token-123');
35
+ service.downloadDocument('FILE_ID');
36
+ const { url, init } = capture();
37
+ assert.is(url, 'gwf/file-server/download?fileStorageId=FILE_ID');
38
+ assert.is(init.headers.get('SESSION_AUTH_TOKEN'), 'valid-token-123', 'should use the token from Auth, regardless of the sessionStorage key prefix');
39
+ }, { '@custxClientApp/authToken': 'valid-token-123' });
40
+ });
41
+ Suite('omits the auth header when there is no logged-in user', () => {
42
+ withStubbedGlobals((capture) => {
43
+ const service = makeService(null);
44
+ service.downloadDocument('FILE_ID');
45
+ const { init } = capture();
46
+ assert.not.ok(init.headers.get('SESSION_AUTH_TOKEN'), 'no user means no SESSION_AUTH_TOKEN header (never the string "null")');
47
+ });
48
+ });
49
+ Suite.run();
50
+ //# sourceMappingURL=document.service.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.service.test.js","sourceRoot":"","sources":["../../../src/services/document.service.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAWzD,SAAS,kBAAkB,CACzB,GAA6C,EAC7C,eAAuC,EAAE;IAEzC,MAAM,QAAQ,GAAG;QACf,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,cAAc,EAAG,UAAkB,CAAC,cAAc;KACnD,CAAC;IAEF,IAAI,QAAyB,CAAC;IAG9B,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAW,EAAE,IAAiB,EAAE,EAAE;QACrD,QAAQ,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,OAAO,CAAW,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzC,CAAC,CAAiB,CAAC;IAIlB,UAAkB,CAAC,cAAc,GAAG;QACnC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KAC3E,CAAC;IAEF,IAAI,CAAC;QACH,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,UAAkB,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,SAAwB;IAC3C,MAAM,IAAI,GAAG;QACX,gBAAgB,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE;KACzC,CAAC;IACrB,MAAM,OAAO,GAAG,EAAwB,CAAC;IACzC,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,sCAAsC,CAAC,CAAC;AAEvE,KAAK,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACpF,kBAAkB,CAChB,CAAC,OAAO,EAAE,EAAE;QACV,MAAM,OAAO,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC/C,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,gDAAgD,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,CACN,IAAI,CAAC,OAAmB,CAAC,GAAG,CAAC,oBAAoB,CAAC,EACnD,iBAAiB,EACjB,6EAA6E,CAC9E,CAAC;IACJ,CAAC,EAED,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,CACnD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,uDAAuD,EAAE,GAAG,EAAE;IAClE,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,EAAE,CACV,IAAI,CAAC,OAAmB,CAAC,GAAG,CAAC,oBAAoB,CAAC,EACnD,sEAAsE,CACvE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,GAAG,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"root":["../src/globals.d.ts","../src/index.federated.ts","../src/index.ts","../src/sandbox.ts","../src/typings.d.ts","../src/components/rapid-components.ts","../src/components/zero-components.ts","../src/components/document-upload/document-upload.styles.ts","../src/components/document-upload/document-upload.template.ts","../src/components/document-upload/document-upload.ts","../src/components/document-upload/document-upload.types.ts","../src/components/template-asset-link/template-asset-link.styles.ts","../src/components/template-asset-link/template-asset-link.template.ts","../src/components/template-asset-link/template-asset-link.ts","../src/components/utils/action-cell-renderer.ts","../src/components/utils/column-config.ts","../src/components/utils/icons.ts","../src/config/config.ts","../src/config/configure.ts","../src/config/index.ts","../src/config/templates.ts","../src/main/index.ts","../src/main/main.styles.ts","../src/main/main.template.ts","../src/main/main.ts","../src/services/document.service.ts","../src/tags/index.ts","../src/tags/tags.ts","../src/types/index.ts","../src/types/main.types.ts","../src/types/utils.types.ts","../src/utils/formatting.ts","../src/utils/index.ts","../src/utils/logger.ts","../src/utils/misc.ts","../src/utils/notifications.ts","../src/utils/styles.ts"],"version":"5.9.2"}
1
+ {"root":["../src/globals.d.ts","../src/index.federated.ts","../src/index.ts","../src/sandbox.ts","../src/typings.d.ts","../src/components/rapid-components.ts","../src/components/zero-components.ts","../src/components/document-upload/document-upload.styles.ts","../src/components/document-upload/document-upload.template.ts","../src/components/document-upload/document-upload.ts","../src/components/document-upload/document-upload.types.ts","../src/components/template-asset-link/template-asset-link.styles.ts","../src/components/template-asset-link/template-asset-link.template.ts","../src/components/template-asset-link/template-asset-link.ts","../src/components/utils/action-cell-renderer.ts","../src/components/utils/column-config.ts","../src/components/utils/icons.ts","../src/config/config.ts","../src/config/configure.ts","../src/config/index.ts","../src/config/templates.ts","../src/main/index.ts","../src/main/main.styles.ts","../src/main/main.template.ts","../src/main/main.ts","../src/services/document.service.test.ts","../src/services/document.service.ts","../src/tags/index.ts","../src/tags/tags.ts","../src/types/index.ts","../src/types/main.types.ts","../src/types/utils.types.ts","../src/utils/formatting.ts","../src/utils/index.ts","../src/utils/logger.ts","../src/utils/misc.ts","../src/utils/notifications.ts","../src/utils/styles.ts"],"version":"5.9.2"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/pbc-documents-ui",
3
3
  "description": "Genesis Document Management UI",
4
- "version": "14.445.2",
4
+ "version": "14.446.0-canary.1",
5
5
  "private": false,
6
6
  "license": "SEE LICENSE IN license.txt",
7
7
  "main": "dist/esm/index.js",
@@ -78,37 +78,37 @@
78
78
  "devDependencies": {
79
79
  "@genesiscommunitysuccess/cep-fast-plugin": "4.1.1",
80
80
  "@genesiscommunitysuccess/custom-elements-lsp": "4.1.1",
81
- "@genesislcap/design-system-configurator": "14.445.2",
82
- "@genesislcap/eslint-config": "14.445.2",
83
- "@genesislcap/foundation-testing": "14.445.2",
84
- "@genesislcap/genx": "14.445.2",
85
- "@genesislcap/prettier-config": "14.445.2",
86
- "@genesislcap/stylelint-config": "14.445.2",
81
+ "@genesislcap/design-system-configurator": "14.446.0-canary.1",
82
+ "@genesislcap/eslint-config": "14.446.0-canary.1",
83
+ "@genesislcap/foundation-testing": "14.446.0-canary.1",
84
+ "@genesislcap/genx": "14.446.0-canary.1",
85
+ "@genesislcap/prettier-config": "14.446.0-canary.1",
86
+ "@genesislcap/stylelint-config": "14.446.0-canary.1",
87
87
  "@types/node": "^22.10.2",
88
88
  "rimraf": "^3.0.2",
89
89
  "tslib": "^2.3.1",
90
90
  "typescript": "^4.9.5"
91
91
  },
92
92
  "dependencies": {
93
- "@genesislcap/foundation-comms": "14.445.2",
94
- "@genesislcap/foundation-entity-management": "14.445.2",
95
- "@genesislcap/foundation-events": "14.445.2",
96
- "@genesislcap/foundation-forms": "14.445.2",
97
- "@genesislcap/foundation-header": "14.445.2",
98
- "@genesislcap/foundation-layout": "14.445.2",
99
- "@genesislcap/foundation-logger": "14.445.2",
100
- "@genesislcap/foundation-login": "14.445.2",
101
- "@genesislcap/foundation-notifications": "14.445.2",
102
- "@genesislcap/foundation-store": "14.445.2",
103
- "@genesislcap/foundation-ui": "14.445.2",
104
- "@genesislcap/foundation-user": "14.445.2",
105
- "@genesislcap/foundation-utils": "14.445.2",
106
- "@genesislcap/foundation-zero": "14.445.2",
107
- "@genesislcap/foundation-zero-grid-tabulator": "14.445.2",
108
- "@genesislcap/grid-tabulator": "14.445.2",
109
- "@genesislcap/rapid-design-system": "14.445.2",
110
- "@genesislcap/rapid-grid-tabulator": "14.445.2",
111
- "@genesislcap/web-core": "14.445.2",
93
+ "@genesislcap/foundation-comms": "14.446.0-canary.1",
94
+ "@genesislcap/foundation-entity-management": "14.446.0-canary.1",
95
+ "@genesislcap/foundation-events": "14.446.0-canary.1",
96
+ "@genesislcap/foundation-forms": "14.446.0-canary.1",
97
+ "@genesislcap/foundation-header": "14.446.0-canary.1",
98
+ "@genesislcap/foundation-layout": "14.446.0-canary.1",
99
+ "@genesislcap/foundation-logger": "14.446.0-canary.1",
100
+ "@genesislcap/foundation-login": "14.446.0-canary.1",
101
+ "@genesislcap/foundation-notifications": "14.446.0-canary.1",
102
+ "@genesislcap/foundation-store": "14.446.0-canary.1",
103
+ "@genesislcap/foundation-ui": "14.446.0-canary.1",
104
+ "@genesislcap/foundation-user": "14.446.0-canary.1",
105
+ "@genesislcap/foundation-utils": "14.446.0-canary.1",
106
+ "@genesislcap/foundation-zero": "14.446.0-canary.1",
107
+ "@genesislcap/foundation-zero-grid-tabulator": "14.446.0-canary.1",
108
+ "@genesislcap/grid-tabulator": "14.446.0-canary.1",
109
+ "@genesislcap/rapid-design-system": "14.446.0-canary.1",
110
+ "@genesislcap/rapid-grid-tabulator": "14.446.0-canary.1",
111
+ "@genesislcap/web-core": "14.446.0-canary.1",
112
112
  "rxjs": "^7.5.4",
113
113
  "tslib": "^2.3.1"
114
114
  },
@@ -116,5 +116,5 @@
116
116
  "access": "public"
117
117
  },
118
118
  "customElements": "dist/custom-elements.json",
119
- "gitHead": "bc0c48b46bdb022bfb6f8b88c0daca6beae97a4b"
119
+ "gitHead": "a023fcbc9ddf2e08249425219a33b2573ad0f51e"
120
120
  }
@@ -0,0 +1,87 @@
1
+ import { Auth, Connect } from '@genesislcap/foundation-comms';
2
+ import { assert, createLogicSuite } from '@genesislcap/foundation-testing';
3
+ import { DocumentServiceImpl } from './document.service';
4
+
5
+ /**
6
+ * These tests run in Node (genx test default), so there is no DOM,
7
+ * `window`, or `sessionStorage`. We stub the globals the service touches
8
+ * and capture the outgoing `fetch` request synchronously, before the
9
+ * promise chain (which would reach for DOM APIs) has a chance to run.
10
+ */
11
+
12
+ type CapturedRequest = { url: string; init: RequestInit };
13
+
14
+ function withStubbedGlobals(
15
+ run: (capture: () => CapturedRequest) => void,
16
+ sessionStore: Record<string, string> = {},
17
+ ) {
18
+ const original = {
19
+ fetch: globalThis.fetch,
20
+ sessionStorage: (globalThis as any).sessionStorage,
21
+ };
22
+
23
+ let captured: CapturedRequest;
24
+ // A fetch that records the request but never resolves, so the service's
25
+ // `.then` chain (blob/createObjectURL/DOM) is never reached during the test.
26
+ globalThis.fetch = ((url: string, init: RequestInit) => {
27
+ captured = { url, init };
28
+ return new Promise<Response>(() => {});
29
+ }) as typeof fetch;
30
+
31
+ // Simulate a prefixed app: the real token lives under a prefixed key,
32
+ // so a raw `getItem('authToken')` returns null.
33
+ (globalThis as any).sessionStorage = {
34
+ getItem: (key: string) => (key in sessionStore ? sessionStore[key] : null),
35
+ };
36
+
37
+ try {
38
+ run(() => captured);
39
+ } finally {
40
+ globalThis.fetch = original.fetch;
41
+ (globalThis as any).sessionStorage = original.sessionStorage;
42
+ }
43
+ }
44
+
45
+ function makeService(authToken: string | null) {
46
+ const auth = {
47
+ loggedUserResult: authToken === null ? null : { authToken },
48
+ } as unknown as Auth;
49
+ const connect = {} as unknown as Connect;
50
+ return new DocumentServiceImpl(connect, auth);
51
+ }
52
+
53
+ const Suite = createLogicSuite('DocumentServiceImpl.downloadDocument');
54
+
55
+ Suite('sends the auth token from Auth.loggedUserResult, not raw sessionStorage', () => {
56
+ withStubbedGlobals(
57
+ (capture) => {
58
+ const service = makeService('valid-token-123');
59
+ service.downloadDocument('FILE_ID');
60
+
61
+ const { url, init } = capture();
62
+ assert.is(url, 'gwf/file-server/download?fileStorageId=FILE_ID');
63
+ assert.is(
64
+ (init.headers as Headers).get('SESSION_AUTH_TOKEN'),
65
+ 'valid-token-123',
66
+ 'should use the token from Auth, regardless of the sessionStorage key prefix',
67
+ );
68
+ },
69
+ // Prefixed app: plain `authToken` is absent; only the prefixed key exists.
70
+ { '@custxClientApp/authToken': 'valid-token-123' },
71
+ );
72
+ });
73
+
74
+ Suite('omits the auth header when there is no logged-in user', () => {
75
+ withStubbedGlobals((capture) => {
76
+ const service = makeService(null);
77
+ service.downloadDocument('FILE_ID');
78
+
79
+ const { init } = capture();
80
+ assert.not.ok(
81
+ (init.headers as Headers).get('SESSION_AUTH_TOKEN'),
82
+ 'no user means no SESSION_AUTH_TOKEN header (never the string "null")',
83
+ );
84
+ });
85
+ });
86
+
87
+ Suite.run();
@@ -20,7 +20,7 @@ export interface IDocumentService {
20
20
  deleteDocument(documentId: string);
21
21
  }
22
22
 
23
- class DocumentServiceImpl implements IDocumentService {
23
+ export class DocumentServiceImpl implements IDocumentService {
24
24
  constructor(
25
25
  @Connect private connect: Connect,
26
26
  @Auth private auth: Auth,
@@ -108,16 +108,25 @@ class DocumentServiceImpl implements IDocumentService {
108
108
 
109
109
  downloadDocument(documentId: string) {
110
110
  const headers = new Headers();
111
- headers.append('SESSION_AUTH_TOKEN', sessionStorage.getItem('authToken'));
111
+ if (this.auth.loggedUserResult) {
112
+ headers.append('SESSION_AUTH_TOKEN', this.auth.loggedUserResult.authToken);
113
+ }
112
114
 
113
- let filename = '';
115
+ let filename = documentId;
114
116
  fetch(`gwf/file-server/download?fileStorageId=${documentId}`, {
115
117
  method: 'GET',
116
118
  headers: headers,
117
119
  })
118
120
  .then((response) => {
121
+ if (!response.ok) {
122
+ throw new Error(`Download failed: ${response.status} ${response.statusText}`);
123
+ }
119
124
  const contentDispositionHeader = response.headers.get('Content-disposition');
120
- filename = contentDispositionHeader.split(';')[1].split('filename')[1].split('=')[1].trim();
125
+ const match = contentDispositionHeader?.match(/filename\s*=\s*(?:"([^"]+)"|([^;\s]+))/i);
126
+ const parsedFilename = match?.[1] || match?.[2];
127
+ if (parsedFilename) {
128
+ filename = parsedFilename.trim();
129
+ }
121
130
  return response.blob();
122
131
  })
123
132
  .then((blob) => URL.createObjectURL(blob))