keycloakify 10.0.0-rc.34 → 10.0.0-rc.36
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/login/lib/useDownloadTerms.d.ts +12 -3
- package/login/lib/useDownloadTerms.js +9 -7
- package/login/lib/useDownloadTerms.js.map +1 -1
- package/login/pages/Terms.js +3 -3
- package/login/pages/Terms.js.map +1 -1
- package/package.json +1 -1
- package/src/login/lib/useDownloadTerms.ts +19 -9
- package/src/login/pages/Terms.tsx +3 -3
@@ -8,10 +8,19 @@ export type KcContextLike = {
|
|
8
8
|
/** Allow to avoid bundling the terms and download it on demand*/
|
9
9
|
export declare function useDownloadTerms(params: {
|
10
10
|
kcContext: KcContextLike;
|
11
|
-
|
11
|
+
downloadTermsMarkdown: (params: {
|
12
12
|
currentLanguageTag: string;
|
13
|
-
}) => Promise<
|
13
|
+
}) => Promise<{
|
14
|
+
termsMarkdown: string;
|
15
|
+
termsLanguageTag: string | undefined;
|
16
|
+
}>;
|
14
17
|
}): void;
|
15
18
|
export declare function useTermsMarkdown(): {
|
16
|
-
|
19
|
+
isDownloadComplete: false;
|
20
|
+
termsMarkdown?: undefined;
|
21
|
+
termsLanguageTag?: undefined;
|
22
|
+
} | {
|
23
|
+
isDownloadComplete: boolean;
|
24
|
+
termsMarkdown: string;
|
25
|
+
termsLanguageTag: string | undefined;
|
17
26
|
};
|
@@ -2,24 +2,26 @@ import { fallbackLanguageTag } from "../../login/i18n";
|
|
2
2
|
import { assert } from "tsafe/assert";
|
3
3
|
import { createStatefulObservable, useRerenderOnChange } from "../../tools/StatefulObservable";
|
4
4
|
import { useOnFistMount } from "../../tools/useOnFirstMount";
|
5
|
-
const
|
5
|
+
const obs = createStatefulObservable(() => undefined);
|
6
6
|
assert();
|
7
7
|
/** Allow to avoid bundling the terms and download it on demand*/
|
8
8
|
export function useDownloadTerms(params) {
|
9
|
-
const { kcContext,
|
9
|
+
const { kcContext, downloadTermsMarkdown } = params;
|
10
10
|
useOnFistMount(async () => {
|
11
11
|
var _a, _b;
|
12
12
|
if (kcContext.pageId === "terms.ftl" || kcContext.termsAcceptanceRequired) {
|
13
|
-
|
13
|
+
obs.current = await downloadTermsMarkdown({
|
14
14
|
currentLanguageTag: (_b = (_a = kcContext.locale) === null || _a === void 0 ? void 0 : _a.currentLanguageTag) !== null && _b !== void 0 ? _b : fallbackLanguageTag
|
15
15
|
});
|
16
|
-
obsTermsMarkdown.current = termsMarkdown;
|
17
16
|
}
|
18
17
|
});
|
19
18
|
}
|
20
19
|
export function useTermsMarkdown() {
|
21
|
-
useRerenderOnChange(
|
22
|
-
|
23
|
-
|
20
|
+
useRerenderOnChange(obs);
|
21
|
+
if (obs.current === undefined) {
|
22
|
+
return { isDownloadComplete: false };
|
23
|
+
}
|
24
|
+
const { termsMarkdown, termsLanguageTag } = obs.current;
|
25
|
+
return { isDownloadComplete: true, termsMarkdown, termsLanguageTag };
|
24
26
|
}
|
25
27
|
//# sourceMappingURL=useDownloadTerms.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useDownloadTerms.js","sourceRoot":"","sources":["../../src/login/lib/useDownloadTerms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACH,wBAAwB,EACxB,mBAAmB,EACtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,MAAM,
|
1
|
+
{"version":3,"file":"useDownloadTerms.js","sourceRoot":"","sources":["../../src/login/lib/useDownloadTerms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACH,wBAAwB,EACxB,mBAAmB,EACtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,MAAM,GAAG,GAAG,wBAAwB,CAMlC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAUnB,MAAM,EAAkD,CAAC;AAEzD,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,MAKhC;IACG,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAAC;IAEpD,cAAc,CAAC,KAAK,IAAI,EAAE;;QACtB,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,uBAAuB,EAAE;YACvE,GAAG,CAAC,OAAO,GAAG,MAAM,qBAAqB,CAAC;gBACtC,kBAAkB,EACd,MAAA,MAAA,SAAS,CAAC,MAAM,0CAAE,kBAAkB,mCAAI,mBAAmB;aAClE,CAAC,CAAC;SACN;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC5B,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEzB,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;QAC3B,OAAO,EAAE,kBAAkB,EAAE,KAAc,EAAE,CAAC;KACjD;IAED,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;IAExD,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;AACzE,CAAC"}
|
package/login/pages/Terms.js
CHANGED
@@ -11,10 +11,10 @@ export default function Terms(props) {
|
|
11
11
|
});
|
12
12
|
const { msg, msgStr } = i18n;
|
13
13
|
const { url } = kcContext;
|
14
|
-
const { termsMarkdown } = useTermsMarkdown();
|
15
|
-
if (
|
14
|
+
const { isDownloadComplete, termsMarkdown, termsLanguageTag } = useTermsMarkdown();
|
15
|
+
if (!isDownloadComplete) {
|
16
16
|
return null;
|
17
17
|
}
|
18
|
-
return (_jsxs(Template, Object.assign({}, { kcContext, i18n, doUseDefaultCss, classes }, { displayMessage: false, headerNode: msg("termsTitle") }, { children: [_jsx("div", Object.assign({ id: "kc-terms-text" }, { children: _jsx(Markdown, { children: termsMarkdown }) })), _jsxs("form", Object.assign({ className: "form-actions", action: url.loginAction, method: "POST" }, { children: [_jsx("input", { className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonClass"), getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass")), name: "accept", id: "kc-accept", type: "submit", value: msgStr("doAccept") }), _jsx("input", { className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonLargeClass")), name: "cancel", id: "kc-decline", type: "submit", value: msgStr("doDecline") })] })), _jsx("div", { className: "clearfix" })] })));
|
18
|
+
return (_jsxs(Template, Object.assign({}, { kcContext, i18n, doUseDefaultCss, classes }, { displayMessage: false, headerNode: msg("termsTitle") }, { children: [_jsx("div", Object.assign({ id: "kc-terms-text", lang: termsLanguageTag }, { children: _jsx(Markdown, { children: termsMarkdown }) })), _jsxs("form", Object.assign({ className: "form-actions", action: url.loginAction, method: "POST" }, { children: [_jsx("input", { className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonClass"), getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass")), name: "accept", id: "kc-accept", type: "submit", value: msgStr("doAccept") }), _jsx("input", { className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonLargeClass")), name: "cancel", id: "kc-decline", type: "submit", value: msgStr("doDecline") })] })), _jsx("div", { className: "clearfix" })] })));
|
19
19
|
}
|
20
20
|
//# sourceMappingURL=Terms.js.map
|
package/login/pages/Terms.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Terms.js","sourceRoot":"","sources":["../../src/login/pages/Terms.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAK1E,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAmE;IAC7F,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;QACrC,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAE1B,MAAM,EAAE,aAAa,EAAE,GAAG,gBAAgB,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"Terms.js","sourceRoot":"","sources":["../../src/login/pages/Terms.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAK1E,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAmE;IAC7F,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;QACrC,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAE1B,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEnF,IAAI,CAAC,kBAAkB,EAAE;QACrB,OAAO,IAAI,CAAC;KACf;IAED,OAAO,CACH,MAAC,QAAQ,oBAAK,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,iBAC7G,4BAAK,EAAE,EAAC,eAAe,EAAC,IAAI,EAAE,gBAAgB,gBAC1C,KAAC,QAAQ,cAAE,aAAa,GAAY,IAClC,EACN,8BAAM,SAAS,EAAC,cAAc,EAAC,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBACjE,gBACI,SAAS,EAAE,IAAI,CACX,YAAY,CAAC,eAAe,CAAC,EAC7B,YAAY,CAAC,eAAe,CAAC,EAC7B,YAAY,CAAC,eAAe,CAAC,EAC7B,YAAY,CAAC,sBAAsB,CAAC,EACpC,YAAY,CAAC,oBAAoB,CAAC,CACrC,EACD,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,WAAW,EACd,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,GAC3B,EACF,gBACI,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,sBAAsB,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC,EACxH,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,YAAY,EACf,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,GAC5B,KACC,EACP,cAAK,SAAS,EAAC,UAAU,GAAG,KACrB,CACd,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
@@ -7,7 +7,13 @@ import {
|
|
7
7
|
import { useOnFistMount } from "keycloakify/tools/useOnFirstMount";
|
8
8
|
import { KcContext } from "../KcContext";
|
9
9
|
|
10
|
-
const
|
10
|
+
const obs = createStatefulObservable<
|
11
|
+
| {
|
12
|
+
termsMarkdown: string;
|
13
|
+
termsLanguageTag: string | undefined;
|
14
|
+
}
|
15
|
+
| undefined
|
16
|
+
>(() => undefined);
|
11
17
|
|
12
18
|
export type KcContextLike = {
|
13
19
|
pageId: string;
|
@@ -22,26 +28,30 @@ assert<KcContext extends KcContextLike ? true : false>();
|
|
22
28
|
/** Allow to avoid bundling the terms and download it on demand*/
|
23
29
|
export function useDownloadTerms(params: {
|
24
30
|
kcContext: KcContextLike;
|
25
|
-
|
31
|
+
downloadTermsMarkdown: (params: {
|
32
|
+
currentLanguageTag: string;
|
33
|
+
}) => Promise<{ termsMarkdown: string; termsLanguageTag: string | undefined }>;
|
26
34
|
}) {
|
27
|
-
const { kcContext,
|
35
|
+
const { kcContext, downloadTermsMarkdown } = params;
|
28
36
|
|
29
37
|
useOnFistMount(async () => {
|
30
38
|
if (kcContext.pageId === "terms.ftl" || kcContext.termsAcceptanceRequired) {
|
31
|
-
|
39
|
+
obs.current = await downloadTermsMarkdown({
|
32
40
|
currentLanguageTag:
|
33
41
|
kcContext.locale?.currentLanguageTag ?? fallbackLanguageTag
|
34
42
|
});
|
35
|
-
|
36
|
-
obsTermsMarkdown.current = termsMarkdown;
|
37
43
|
}
|
38
44
|
});
|
39
45
|
}
|
40
46
|
|
41
47
|
export function useTermsMarkdown() {
|
42
|
-
useRerenderOnChange(
|
48
|
+
useRerenderOnChange(obs);
|
49
|
+
|
50
|
+
if (obs.current === undefined) {
|
51
|
+
return { isDownloadComplete: false as const };
|
52
|
+
}
|
43
53
|
|
44
|
-
const termsMarkdown =
|
54
|
+
const { termsMarkdown, termsLanguageTag } = obs.current;
|
45
55
|
|
46
|
-
return { termsMarkdown };
|
56
|
+
return { isDownloadComplete: true, termsMarkdown, termsLanguageTag };
|
47
57
|
}
|
@@ -18,15 +18,15 @@ export default function Terms(props: PageProps<Extract<KcContext, { pageId: "ter
|
|
18
18
|
|
19
19
|
const { url } = kcContext;
|
20
20
|
|
21
|
-
const { termsMarkdown } = useTermsMarkdown();
|
21
|
+
const { isDownloadComplete, termsMarkdown, termsLanguageTag } = useTermsMarkdown();
|
22
22
|
|
23
|
-
if (
|
23
|
+
if (!isDownloadComplete) {
|
24
24
|
return null;
|
25
25
|
}
|
26
26
|
|
27
27
|
return (
|
28
28
|
<Template {...{ kcContext, i18n, doUseDefaultCss, classes }} displayMessage={false} headerNode={msg("termsTitle")}>
|
29
|
-
<div id="kc-terms-text">
|
29
|
+
<div id="kc-terms-text" lang={termsLanguageTag}>
|
30
30
|
<Markdown>{termsMarkdown}</Markdown>
|
31
31
|
</div>
|
32
32
|
<form className="form-actions" action={url.loginAction} method="POST">
|