|
5 | 5 | * |
6 | 6 | * TODO: This could possibly be simplified if the `callback.getType` method in the SDK |
7 | 7 | * returned a union of the possible types, rather than just a generic `string` type. |
8 | | - */ |
| 8 | + */ |
9 | 9 |
|
10 | | - import { CallbackType } from '@forgerock/javascript-sdk'; |
| 10 | + import { CallbackType, WebAuthnStepType } from '@forgerock/javascript-sdk'; |
11 | 11 | import type { z } from 'zod'; |
12 | 12 |
|
13 | 13 | // Callback handler components |
|
27 | 27 | import Unknown from '$journey/callbacks/unknown/unknown.svelte'; |
28 | 28 | import ValidatedCreatePassword from '$journey/callbacks/password/validated-create-password.svelte'; |
29 | 29 | import ValidatedCreateUsername from '$journey/callbacks/username/validated-create-username.svelte'; |
| 30 | + import DeviceProfile from '$journey/callbacks/device-profile/device-profile.svelte'; |
| 31 | + import Metadata from '$journey/callbacks/metadata/metadata.svelte'; |
30 | 32 |
|
31 | 33 | import type { |
32 | 34 | AttributeInputCallback, |
|
45 | 47 | ValidatedCreatePasswordCallback, |
46 | 48 | ValidatedCreateUsernameCallback, |
47 | 49 | FRCallback, |
| 50 | + DeviceProfileCallback, |
| 51 | + MetadataCallback, |
48 | 52 | } from '@forgerock/javascript-sdk'; |
49 | 53 |
|
50 | 54 | import type { |
|
55 | 59 | import type { styleSchema } from '$lib/style.store'; |
56 | 60 | import type { Maybe } from '$lib/interfaces'; |
57 | 61 |
|
58 | | - export let props: { |
| 62 | + type Props = { |
59 | 63 | callback: FRCallback; |
60 | 64 | callbackMetadata: Maybe<CallbackMetadata>; |
61 | 65 | selfSubmitFunction: SelfSubmitFunction; |
62 | 66 | stepMetadata: Maybe<StepMetadata>; |
63 | 67 | style: z.infer<typeof styleSchema>; |
64 | 68 | }; |
| 69 | + export let props: |
| 70 | + | Props |
| 71 | + | (Props & { recoveryCodes: Array<string> }) |
| 72 | + | (Props & { webAuthnValue: WebAuthnStepType }); |
65 | 73 |
|
66 | 74 | let cbType: string; |
67 | 75 |
|
|
81 | 89 | let _TermsAndConditionsCallback: TermsAndConditionsCallback; |
82 | 90 | let _TextOutputCallback: TextOutputCallback; |
83 | 91 | let _SuspendedTextOutputCallback: SuspendedTextOutputCallback; |
| 92 | + let _MetadataCallback: MetadataCallback; |
| 93 | + let _DeviceProfileCallback: DeviceProfileCallback; |
84 | 94 | let _FRCallback: FRCallback; |
85 | 95 |
|
86 | 96 | $: { |
87 | 97 | cbType = props.callback.getType(); |
88 | 98 |
|
89 | | - switch(cbType) { |
| 99 | + switch (cbType) { |
90 | 100 | case CallbackType.BooleanAttributeInputCallback: |
91 | 101 | _BooleanAttributeInputCallback = props.callback as AttributeInputCallback<boolean>; |
92 | | - break; |
93 | | - case CallbackType.ChoiceCallback: |
| 102 | + break; |
| 103 | + case CallbackType.ChoiceCallback: |
94 | 104 | _ChoiceCallback = props.callback as ChoiceCallback; |
95 | 105 | break; |
96 | 106 | case CallbackType.ConfirmationCallback: |
|
119 | 129 | break; |
120 | 130 | case CallbackType.StringAttributeInputCallback: |
121 | 131 | _StringAttributeInputCallback = props.callback as AttributeInputCallback<string>; |
122 | | - break; |
123 | | - case CallbackType.ValidatedCreatePasswordCallback: |
| 132 | + break; |
| 133 | + case CallbackType.ValidatedCreatePasswordCallback: |
124 | 134 | _ValidatedCreatePasswordCallback = props.callback as ValidatedCreatePasswordCallback; |
125 | 135 | break; |
126 | 136 | case CallbackType.ValidatedCreateUsernameCallback: |
|
135 | 145 | case CallbackType.SuspendedTextOutputCallback: |
136 | 146 | _SuspendedTextOutputCallback = props.callback as SuspendedTextOutputCallback; |
137 | 147 | break; |
| 148 | + case CallbackType.DeviceProfileCallback: |
| 149 | + _DeviceProfileCallback = props.callback as DeviceProfileCallback; |
| 150 | + break; |
| 151 | + case CallbackType.MetadataCallback: |
| 152 | + _MetadataCallback = props.callback as MetadataCallback; |
| 153 | + break; |
138 | 154 | default: |
139 | 155 | _FRCallback = props.callback as FRCallback; |
140 | 156 | } |
|
237 | 253 | callback: _SuspendedTextOutputCallback, |
238 | 254 | }} |
239 | 255 | <TextOutput {...newProps} /> |
| 256 | +{:else if cbType === CallbackType.DeviceProfileCallback} |
| 257 | + {@const newProps = { |
| 258 | + ...props, |
| 259 | + callback: _DeviceProfileCallback, |
| 260 | + }} |
| 261 | + <DeviceProfile {...newProps} /> |
| 262 | +{:else if cbType === CallbackType.MetadataCallback} |
| 263 | + {@const newProps = { |
| 264 | + ...props, |
| 265 | + callback: _MetadataCallback, |
| 266 | + }} |
| 267 | + <Metadata {...newProps} /> |
240 | 268 | {:else} |
241 | 269 | {@const newProps = { |
242 | 270 | ...props, |
|
0 commit comments