@uxland/primary-shell 7.13.2 → 7.15.0
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.
- package/dist/{component-C26_oeb6.js → component-RL8LM9a9.js} +2 -2
- package/dist/{component-C26_oeb6.js.map → component-RL8LM9a9.js.map} +1 -1
- package/dist/{index-BzY8_3e-.js → index-cueNwNYW.js} +83 -79
- package/dist/index-cueNwNYW.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.umd.cjs +16 -17
- package/dist/index.umd.cjs.map +1 -1
- package/dist/primary/shell/src/api/user-manager/user-manager.d.ts +2 -0
- package/dist/primary/shell/src/bootstrapper.d.ts +4 -1
- package/dist/primary/shell/src/features/bootstrapper.d.ts +2 -1
- package/dist/primary/shell/src/features/visit/finalize-visit/bootstrapper.d.ts +2 -1
- package/dist/primary/shell/src/features/visit/finalize-visit/component/finalize-visit-button.d.ts +2 -3
- package/package.json +1 -1
- package/src/UI/components/primaria-shell/shell-header/template.ts +0 -1
- package/src/api/user-manager/user-manager.ts +28 -2
- package/src/bootstrapper.ts +6 -2
- package/src/features/bootstrapper.ts +3 -2
- package/src/features/visit/finalize-visit/bootstrapper.ts +11 -2
- package/src/features/visit/finalize-visit/component/finalize-visit-button.ts +7 -18
- package/dist/index-BzY8_3e-.js.map +0 -1
|
@@ -2,11 +2,13 @@ import { TokenManager } from '../token-manager/token-manager';
|
|
|
2
2
|
export interface UserManager {
|
|
3
3
|
getRole: () => string | undefined;
|
|
4
4
|
isUserRoleAdministrative: () => boolean;
|
|
5
|
+
getFullName: () => string | undefined;
|
|
5
6
|
}
|
|
6
7
|
export declare class UserManagerImpl implements UserManager {
|
|
7
8
|
private tokenManager;
|
|
8
9
|
constructor(tokenManager: TokenManager);
|
|
9
10
|
getRole: () => string | undefined;
|
|
10
11
|
isUserRoleAdministrative: () => boolean;
|
|
12
|
+
getFullName: () => string | undefined;
|
|
11
13
|
}
|
|
12
14
|
export declare const createUserManager: (tokenManager: TokenManager) => UserManager;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { PrimariaApi } from '../api/api';
|
|
2
|
-
|
|
2
|
+
import { IShellParams } from '../bootstrapper';
|
|
3
|
+
export declare const useFeatures: (api: PrimariaApi, shellParams?: IShellParams) => void;
|
|
3
4
|
export declare const disposeFeatures: (api: PrimariaApi) => void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { PrimariaApi } from '../../../api/api';
|
|
2
|
-
|
|
2
|
+
import { IShellParams } from '../../../bootstrapper';
|
|
3
|
+
export declare const useFinalizeVisit: (api: PrimariaApi, shellParams?: IShellParams) => void;
|
|
3
4
|
export declare const disposeFinalizeVisit: () => void;
|
package/dist/primary/shell/src/features/visit/finalize-visit/component/finalize-visit-button.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { LitElement } from 'lit';
|
|
2
2
|
export declare class FinalizeVisitButton extends LitElement {
|
|
3
|
+
constructor(visitId: string);
|
|
3
4
|
render(): import('lit').TemplateResult<1>;
|
|
4
|
-
|
|
5
|
-
visitId: string | undefined;
|
|
6
|
-
getVisitId(): Promise<void>;
|
|
5
|
+
visitId: string;
|
|
7
6
|
finalizeVisitHandler(): void;
|
|
8
7
|
}
|
package/package.json
CHANGED
|
@@ -19,7 +19,6 @@ export const template = (props: PrimariaShellHeader) => {
|
|
|
19
19
|
<div id="header-region-container"></div>
|
|
20
20
|
</div>
|
|
21
21
|
<div class="header__right">
|
|
22
|
-
<finalize-visit-button></finalize-visit-button>
|
|
23
22
|
<div id="header-actions-region-container"></div>
|
|
24
23
|
<header-divider></header-divider>
|
|
25
24
|
${when(
|
|
@@ -4,12 +4,15 @@ import { TokenManager } from "../token-manager/token-manager";
|
|
|
4
4
|
interface JWTPayload {
|
|
5
5
|
access_info?: {
|
|
6
6
|
role_type?: string;
|
|
7
|
+
trace_user_given_name?: string;
|
|
8
|
+
trace_user_family_name?: string;
|
|
7
9
|
};
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
export interface UserManager {
|
|
11
13
|
getRole: () => string | undefined;
|
|
12
14
|
isUserRoleAdministrative: () => boolean;
|
|
15
|
+
getFullName: () => string | undefined;
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
export class UserManagerImpl implements UserManager {
|
|
@@ -20,7 +23,7 @@ export class UserManagerImpl implements UserManager {
|
|
|
20
23
|
if (!token) {
|
|
21
24
|
return undefined;
|
|
22
25
|
}
|
|
23
|
-
|
|
26
|
+
|
|
24
27
|
try {
|
|
25
28
|
const payload = jwtDecode<JWTPayload>(token);
|
|
26
29
|
const role = payload.access_info?.role_type;
|
|
@@ -35,6 +38,29 @@ export class UserManagerImpl implements UserManager {
|
|
|
35
38
|
const userRole = this.getRole();
|
|
36
39
|
return userRole === "ADM";
|
|
37
40
|
};
|
|
41
|
+
|
|
42
|
+
getFullName = (): string | undefined => {
|
|
43
|
+
const token = this.tokenManager.getToken();
|
|
44
|
+
if (!token) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
const payload = jwtDecode<JWTPayload>(token);
|
|
50
|
+
const givenName = payload.access_info?.trace_user_given_name;
|
|
51
|
+
const familyName = payload.access_info?.trace_user_family_name;
|
|
52
|
+
|
|
53
|
+
if (!givenName && !familyName) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const fullName = [familyName, givenName].filter(Boolean).join(" ");
|
|
58
|
+
return fullName;
|
|
59
|
+
} catch (error) {
|
|
60
|
+
console.error("Error decoding JWT token:", error);
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
38
64
|
}
|
|
39
65
|
|
|
40
66
|
let userManager: UserManager;
|
|
@@ -42,4 +68,4 @@ export const createUserManager = (tokenManager: TokenManager): UserManager => {
|
|
|
42
68
|
if (userManager) return userManager;
|
|
43
69
|
userManager = new UserManagerImpl(tokenManager);
|
|
44
70
|
return userManager;
|
|
45
|
-
};
|
|
71
|
+
};
|
package/src/bootstrapper.ts
CHANGED
|
@@ -4,10 +4,14 @@ import { useFeatures } from "./features/bootstrapper";
|
|
|
4
4
|
import { useLocalization } from "./locales";
|
|
5
5
|
import { useUI } from "./UI/bootstrapper";
|
|
6
6
|
|
|
7
|
-
export
|
|
7
|
+
export interface IShellParams {
|
|
8
|
+
visitId: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const initializeShell = (hostAppElement: HTMLElement, shellParams?: IShellParams) => {
|
|
8
12
|
useLocalization(shellApi);
|
|
9
13
|
useUI();
|
|
10
|
-
useFeatures(shellApi);
|
|
14
|
+
useFeatures(shellApi, shellParams);
|
|
11
15
|
const shell = new PrimariaShell();
|
|
12
16
|
hostAppElement.appendChild(shell as any);
|
|
13
17
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { mediatorSettings } from "mediatr-ts";
|
|
2
2
|
import { PrimariaApi } from "../api/api";
|
|
3
|
+
import { IShellParams } from "../bootstrapper";
|
|
3
4
|
import { container } from "../infrastructure/ioc/container";
|
|
4
5
|
import { TYPES } from "../infrastructure/ioc/types";
|
|
5
6
|
import { useExitShell, disposeExitShell } from "./exit/bootstrapper";
|
|
@@ -8,12 +9,12 @@ import { GetUserInfo } from "./get-user-info/request";
|
|
|
8
9
|
import { disposeGetVisitId, useGetVisitId } from "./visit/get-visit-id/bootstrapper";
|
|
9
10
|
import { disposeFinalizeVisit, useFinalizeVisit } from "./visit/finalize-visit/bootstrapper";
|
|
10
11
|
|
|
11
|
-
export const useFeatures = (api: PrimariaApi) => {
|
|
12
|
+
export const useFeatures = (api: PrimariaApi, shellParams?: IShellParams) => {
|
|
12
13
|
container.bind(TYPES.primaryApi).toConstantValue(api);
|
|
13
14
|
useGetUserInfo(api);
|
|
14
15
|
useExitShell(api);
|
|
15
16
|
useGetVisitId(api);
|
|
16
|
-
useFinalizeVisit(api);
|
|
17
|
+
useFinalizeVisit(api, shellParams);
|
|
17
18
|
api.broker.send(new GetUserInfo());
|
|
18
19
|
};
|
|
19
20
|
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
import { PrimariaApi } from "../../../api/api";
|
|
2
|
+
import { IShellParams } from "../../../bootstrapper";
|
|
2
3
|
import { BrokerDisposableHandler } from "../../../api/broker/primaria-broker";
|
|
3
4
|
import { container } from "../../../infrastructure/ioc/container";
|
|
4
5
|
import { registerRequest } from "../../utils";
|
|
5
6
|
import { FinalizeVisitHandler } from "./handler";
|
|
6
7
|
import { FinalizeVisit } from "./request";
|
|
8
|
+
import { FinalizeVisitButton } from "./component/finalize-visit-button";
|
|
7
9
|
|
|
8
10
|
let request: BrokerDisposableHandler;
|
|
9
11
|
|
|
10
|
-
export const useFinalizeVisit = (api: PrimariaApi) => {
|
|
12
|
+
export const useFinalizeVisit = (api: PrimariaApi, shellParams?: IShellParams) => {
|
|
11
13
|
disposeFinalizeVisit();
|
|
12
|
-
|
|
14
|
+
if (shellParams?.visitId) {
|
|
15
|
+
api.regionManager.registerView(api.regionManager.regions.shell.headerRightActions, {
|
|
16
|
+
id: "finalize-visit-button",
|
|
17
|
+
sortHint: "0001",
|
|
18
|
+
factory: () => Promise.resolve(new FinalizeVisitButton(shellParams.visitId)),
|
|
19
|
+
});
|
|
20
|
+
request = registerRequest(api, container)(FinalizeVisit, FinalizeVisitHandler);
|
|
21
|
+
}
|
|
13
22
|
};
|
|
14
23
|
|
|
15
24
|
export const disposeFinalizeVisit = () => {
|
|
@@ -1,32 +1,21 @@
|
|
|
1
1
|
import { LitElement, html } from "lit";
|
|
2
2
|
import { template } from "./template";
|
|
3
3
|
import { property } from "lit/decorators.js";
|
|
4
|
-
import { GetVisitId } from "../../get-visit-id/request";
|
|
5
4
|
import { shellApi } from "../../../../api/api";
|
|
6
5
|
import { FinalizeVisit } from "../request";
|
|
7
6
|
|
|
8
7
|
export class FinalizeVisitButton extends LitElement {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
constructor(visitId: string) {
|
|
9
|
+
super();
|
|
10
|
+
this.visitId = visitId;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
this.getVisitId();
|
|
13
|
+
render() {
|
|
14
|
+
return html`${template(this)}`;
|
|
16
15
|
}
|
|
17
16
|
|
|
18
|
-
@property({ type: String })
|
|
19
|
-
visitId: string
|
|
20
|
-
|
|
21
|
-
async getVisitId() {
|
|
22
|
-
try {
|
|
23
|
-
await shellApi.broker.send(new GetVisitId()).then((visitIdResponse: string | undefined) => {
|
|
24
|
-
this.visitId = visitIdResponse;
|
|
25
|
-
});
|
|
26
|
-
} catch (error) {
|
|
27
|
-
console.error(error.message);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
17
|
+
@property({ type: String })
|
|
18
|
+
visitId: string;
|
|
30
19
|
|
|
31
20
|
finalizeVisitHandler() {
|
|
32
21
|
if (this.visitId) {
|