From 93a3f83dbd0dbefa7e14585f767bec0b4c560a50 Mon Sep 17 00:00:00 2001 From: gourav Date: Mon, 17 Nov 2025 12:52:05 +0530 Subject: [PATCH 1/5] fix: ui-bugs-eidwallet --- .../src/routes/(auth)/onboarding/+page.svelte | 580 +++++++++--------- 1 file changed, 296 insertions(+), 284 deletions(-) diff --git a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte index cbbb7e2a..0aadb288 100644 --- a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte +++ b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte @@ -1,265 +1,276 @@
{ >

- @@ -365,69 +376,70 @@ onMount(async () => { placeholder="Enter verification code" />
- NextNext
{/if} - {:else} - {#if checkingHardware} -
-
- -

Checking device capabilities...

-
+ {:else if checkingHardware} +
+
+ +

Checking device capabilities...

- {:else if showHardwareError} -

- Hardware Security Not Available -

-

- Your phone doesn't support hardware crypto keys, which is a requirement for verified IDs. -

-

- Please use the pre-verification code option to create a demo account instead. -

-
- { - isPaneOpen = false; - handlePreVerified(); - }} - > - Use Pre-Verification Code - +
+ {:else if showHardwareError} +

+ Hardware Security Not Available +

+

+ Your phone doesn't support hardware crypto keys, which is a + requirement for verified IDs. +

+

+ Please use the pre-verification code option to create a demo account + instead. +

+
+ { + isPaneOpen = false; + handlePreVerified(); + }} + > + Use Pre-Verification Code + +
+ {:else if loading} +
+
+ +

Initializing security keys...

- {:else} - {#if loading} -
-
- -

Initializing security keys...

-
-
- {:else} -

- Your Digital Self begins with the Real You -

-

- In the Web 3.0 Data Space, identity is linked to reality. We begin - by verifying your real-world passport, which serves as the - foundation for issuing your secure ePassport. At the same time, we - generate your eName – a unique digital identifier – and create your - eVault to store and protect your personal data. -

-
- Next -
- {/if} - {/if} +
+ {:else} +

+ Your Digital Self begins with the Real You +

+

+ In the Web 3.0 Data Space, identity is linked to reality. We begin + by verifying your real-world passport, which serves as the + foundation for issuing your secure ePassport. At the same time, we + generate your eName – a unique digital identifier – and create your + eVault to store and protect your personal data. +

+
+ Next +
{/if} From e27f40b2d90f27ffab5581cd5b2b4ce6de87c588 Mon Sep 17 00:00:00 2001 From: gourav Date: Mon, 17 Nov 2025 13:00:24 +0530 Subject: [PATCH 2/5] fix: format and lint --- .../src/routes/(auth)/onboarding/+page.svelte | 457 +++++++++--------- 1 file changed, 223 insertions(+), 234 deletions(-) diff --git a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte index 0aadb288..28bb4c63 100644 --- a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte +++ b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte @@ -1,276 +1,265 @@
Date: Mon, 17 Nov 2025 13:50:49 +0530 Subject: [PATCH 3/5] fix: now cancel button does something --- .../src/lib/ui/Drawer/Drawer.svelte | 106 +++---- .../src/routes/(app)/settings/+page.svelte | 287 +++++++++--------- 2 files changed, 199 insertions(+), 194 deletions(-) diff --git a/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte b/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte index fa1c6e4e..7bf583cf 100644 --- a/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte +++ b/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte @@ -1,65 +1,65 @@
-import { goto } from "$app/navigation"; -import { SettingsNavigationBtn } from "$lib/fragments"; -import type { GlobalState } from "$lib/global"; -import { runtime } from "$lib/global/runtime.svelte"; -import { ButtonAction, Drawer } from "$lib/ui"; -import { - Key01Icon, - LanguageSquareIcon, - Link02Icon, - PinCodeIcon, - Shield01Icon, -} from "@hugeicons/core-free-icons"; -import { getContext } from "svelte"; - -const getGlobalState = getContext<() => GlobalState>("globalState"); -const setGlobalState = - getContext<(value: GlobalState) => void>("setGlobalState"); -let globalState = getGlobalState(); - -let isDeleteConfirmationOpen = $state(false); -let isFinalConfirmationOpen = $state(false); - -// Hidden eVault profile retry functionality -let tapCount = $state(0); -let lastTapTime = $state(0); -let isRetrying = $state(false); -let retryMessage = $state(""); - -function showDeleteConfirmation() { - isDeleteConfirmationOpen = true; -} - -function confirmDelete() { - isDeleteConfirmationOpen = false; - isFinalConfirmationOpen = true; -} - -async function nukeWallet() { - const newGlobalState = await globalState.reset(); - setGlobalState(newGlobalState); - globalState = newGlobalState; - goto("/onboarding"); -} - -function cancelDelete() { - isDeleteConfirmationOpen = false; - isFinalConfirmationOpen = false; -} - -async function handleVersionTap() { - const now = Date.now(); - - // Reset counter if more than 3 seconds between taps - if (now - lastTapTime > 3000) { - tapCount = 0; + import { goto } from "$app/navigation"; + import { SettingsNavigationBtn } from "$lib/fragments"; + import type { GlobalState } from "$lib/global"; + import { runtime } from "$lib/global/runtime.svelte"; + import { ButtonAction, Drawer } from "$lib/ui"; + import { + Key01Icon, + LanguageSquareIcon, + Link02Icon, + PinCodeIcon, + Shield01Icon, + } from "@hugeicons/core-free-icons"; + import { getContext } from "svelte"; + + const getGlobalState = getContext<() => GlobalState>("globalState"); + const setGlobalState = + getContext<(value: GlobalState) => void>("setGlobalState"); + let globalState = getGlobalState(); + + let isDeleteConfirmationOpen = $state(false); + let isFinalConfirmationOpen = $state(false); + + // Hidden eVault profile retry functionality + let tapCount = $state(0); + let lastTapTime = $state(0); + let isRetrying = $state(false); + let retryMessage = $state(""); + + function showDeleteConfirmation() { + isDeleteConfirmationOpen = true; } - tapCount++; - lastTapTime = now; + function confirmDelete() { + isDeleteConfirmationOpen = false; + isFinalConfirmationOpen = true; + } + + async function nukeWallet() { + const newGlobalState = await globalState.reset(); + setGlobalState(newGlobalState); + globalState = newGlobalState; + goto("/onboarding"); + } - // Show tap count feedback (only visible to user) - if (tapCount >= 5) { - retryMessage = `Taps: ${tapCount}/10`; + function cancelDelete() { + isDeleteConfirmationOpen = false; + isFinalConfirmationOpen = false; } - // Trigger eVault profile retry after 10 taps - if (tapCount === 10) { - isRetrying = true; - retryMessage = "Retrying eVault profile setup..."; - - try { - await globalState.vaultController.retryProfileCreation(); - retryMessage = "✅ eVault profile setup completed successfully!"; - - // Reset after success - setTimeout(() => { - tapCount = 0; - retryMessage = ""; - isRetrying = false; - }, 3000); - } catch (error) { - console.error("Failed to retry eVault profile setup:", error); - retryMessage = - "❌ Failed to setup eVault profile. Check console for details."; - - // Reset after error - setTimeout(() => { - tapCount = 0; - retryMessage = ""; - isRetrying = false; - }, 5000); + async function handleVersionTap() { + const now = Date.now(); + + // Reset counter if more than 3 seconds between taps + if (now - lastTapTime > 3000) { + tapCount = 0; + } + + tapCount++; + lastTapTime = now; + + // Show tap count feedback (only visible to user) + if (tapCount >= 5) { + retryMessage = `Taps: ${tapCount}/10`; + } + + // Trigger eVault profile retry after 10 taps + if (tapCount === 10) { + isRetrying = true; + retryMessage = "Retrying eVault profile setup..."; + + try { + await globalState.vaultController.retryProfileCreation(); + retryMessage = + "✅ eVault profile setup completed successfully!"; + + // Reset after success + setTimeout(() => { + tapCount = 0; + retryMessage = ""; + isRetrying = false; + }, 3000); + } catch (error) { + console.error("Failed to retry eVault profile setup:", error); + retryMessage = + "❌ Failed to setup eVault profile. Check console for details."; + + // Reset after error + setTimeout(() => { + tapCount = 0; + retryMessage = ""; + isRetrying = false; + }, 5000); + } } } -} -$effect(() => { - runtime.header.title = "Settings"; -}); + $effect(() => { + runtime.header.title = "Settings"; + });
@@ -146,59 +147,63 @@ $effect(() => {
- -
-

- ⚠️ Delete Account Warning -

-

- Are you sure you want to delete your account? This action will: -

-
    -
  • • Permanently delete all your personal data
  • -
  • • Remove your ePassport and eVault access
  • -
  • • Delete your eName and all associated credentials
  • -
  • • Make your data inaccessible within 24 hours
  • -
  • • This action cannot be undone
  • -
-
- Cancel - Continue +{#if isDeleteConfirmationOpen} + +
+

+ ⚠️ Delete Account Warning +

+

+ Are you sure you want to delete your account? This action will: +

+
    +
  • • Permanently delete all your personal data
  • +
  • • Remove your ePassport and eVault access
  • +
  • • Delete your eName and all associated credentials
  • +
  • • Make your data inaccessible within 24 hours
  • +
  • • This action cannot be undone
  • +
+
+ Cancel + Continue +
-
- + +{/if} - -
-

- 🚨 Final Confirmation -

-

- This is your final warning. Once you confirm: -

-
-

- All your data will be permanently deleted and you will lose - access to your ePassport, eVault, and eName forever. +{#if isFinalConfirmationOpen} + +

+

+ 🚨 Final Confirmation +

+

+ This is your final warning. Once you confirm:

+
+

+ All your data will be permanently deleted and you will lose + access to your ePassport, eVault, and eName forever. +

+
+

+ Are you absolutely certain you want to proceed? +

+
+ Cancel + Delete +
-

- Are you absolutely certain you want to proceed? -

-
- Cancel - Delete -
-
- + +{/if} From f8988dc8ff7e2d23f9745d440054b15b3e02e9ff Mon Sep 17 00:00:00 2001 From: gourav Date: Mon, 17 Nov 2025 13:58:31 +0530 Subject: [PATCH 4/5] fix: demo name continue button --- .../src/lib/ui/Drawer/Drawer.svelte | 106 +++++----- .../src/routes/(app)/settings/+page.svelte | 181 +++++++++--------- .../src/routes/(auth)/onboarding/+page.svelte | 7 +- 3 files changed, 148 insertions(+), 146 deletions(-) diff --git a/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte b/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte index 7bf583cf..fa1c6e4e 100644 --- a/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte +++ b/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte @@ -1,65 +1,65 @@
- import { goto } from "$app/navigation"; - import { SettingsNavigationBtn } from "$lib/fragments"; - import type { GlobalState } from "$lib/global"; - import { runtime } from "$lib/global/runtime.svelte"; - import { ButtonAction, Drawer } from "$lib/ui"; - import { - Key01Icon, - LanguageSquareIcon, - Link02Icon, - PinCodeIcon, - Shield01Icon, - } from "@hugeicons/core-free-icons"; - import { getContext } from "svelte"; - - const getGlobalState = getContext<() => GlobalState>("globalState"); - const setGlobalState = - getContext<(value: GlobalState) => void>("setGlobalState"); - let globalState = getGlobalState(); - - let isDeleteConfirmationOpen = $state(false); - let isFinalConfirmationOpen = $state(false); - - // Hidden eVault profile retry functionality - let tapCount = $state(0); - let lastTapTime = $state(0); - let isRetrying = $state(false); - let retryMessage = $state(""); - - function showDeleteConfirmation() { - isDeleteConfirmationOpen = true; +import { goto } from "$app/navigation"; +import { SettingsNavigationBtn } from "$lib/fragments"; +import type { GlobalState } from "$lib/global"; +import { runtime } from "$lib/global/runtime.svelte"; +import { ButtonAction, Drawer } from "$lib/ui"; +import { + Key01Icon, + LanguageSquareIcon, + Link02Icon, + PinCodeIcon, + Shield01Icon, +} from "@hugeicons/core-free-icons"; +import { getContext } from "svelte"; + +const getGlobalState = getContext<() => GlobalState>("globalState"); +const setGlobalState = + getContext<(value: GlobalState) => void>("setGlobalState"); +let globalState = getGlobalState(); + +let isDeleteConfirmationOpen = $state(false); +let isFinalConfirmationOpen = $state(false); + +// Hidden eVault profile retry functionality +let tapCount = $state(0); +let lastTapTime = $state(0); +let isRetrying = $state(false); +let retryMessage = $state(""); + +function showDeleteConfirmation() { + isDeleteConfirmationOpen = true; +} + +function confirmDelete() { + isDeleteConfirmationOpen = false; + isFinalConfirmationOpen = true; +} + +async function nukeWallet() { + const newGlobalState = await globalState.reset(); + setGlobalState(newGlobalState); + globalState = newGlobalState; + goto("/onboarding"); +} + +function cancelDelete() { + isDeleteConfirmationOpen = false; + isFinalConfirmationOpen = false; +} + +async function handleVersionTap() { + const now = Date.now(); + + // Reset counter if more than 3 seconds between taps + if (now - lastTapTime > 3000) { + tapCount = 0; } - function confirmDelete() { - isDeleteConfirmationOpen = false; - isFinalConfirmationOpen = true; - } - - async function nukeWallet() { - const newGlobalState = await globalState.reset(); - setGlobalState(newGlobalState); - globalState = newGlobalState; - goto("/onboarding"); - } + tapCount++; + lastTapTime = now; - function cancelDelete() { - isDeleteConfirmationOpen = false; - isFinalConfirmationOpen = false; + // Show tap count feedback (only visible to user) + if (tapCount >= 5) { + retryMessage = `Taps: ${tapCount}/10`; } - async function handleVersionTap() { - const now = Date.now(); - - // Reset counter if more than 3 seconds between taps - if (now - lastTapTime > 3000) { - tapCount = 0; - } - - tapCount++; - lastTapTime = now; - - // Show tap count feedback (only visible to user) - if (tapCount >= 5) { - retryMessage = `Taps: ${tapCount}/10`; - } - - // Trigger eVault profile retry after 10 taps - if (tapCount === 10) { - isRetrying = true; - retryMessage = "Retrying eVault profile setup..."; - - try { - await globalState.vaultController.retryProfileCreation(); - retryMessage = - "✅ eVault profile setup completed successfully!"; - - // Reset after success - setTimeout(() => { - tapCount = 0; - retryMessage = ""; - isRetrying = false; - }, 3000); - } catch (error) { - console.error("Failed to retry eVault profile setup:", error); - retryMessage = - "❌ Failed to setup eVault profile. Check console for details."; - - // Reset after error - setTimeout(() => { - tapCount = 0; - retryMessage = ""; - isRetrying = false; - }, 5000); - } + // Trigger eVault profile retry after 10 taps + if (tapCount === 10) { + isRetrying = true; + retryMessage = "Retrying eVault profile setup..."; + + try { + await globalState.vaultController.retryProfileCreation(); + retryMessage = "✅ eVault profile setup completed successfully!"; + + // Reset after success + setTimeout(() => { + tapCount = 0; + retryMessage = ""; + isRetrying = false; + }, 3000); + } catch (error) { + console.error("Failed to retry eVault profile setup:", error); + retryMessage = + "❌ Failed to setup eVault profile. Check console for details."; + + // Reset after error + setTimeout(() => { + tapCount = 0; + retryMessage = ""; + isRetrying = false; + }, 5000); } } +} - $effect(() => { - runtime.header.title = "Settings"; - }); +$effect(() => { + runtime.header.title = "Settings"; +});
diff --git a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte index 28bb4c63..d2f784c9 100644 --- a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte +++ b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte @@ -349,8 +349,11 @@ onMount(async () => { placeholder="Enter your demo name for ePassport" />
- ContinueContinue
{:else} From 1e2298079551c106590c9497d5e487c1dff5f20d Mon Sep 17 00:00:00 2001 From: gourav Date: Mon, 17 Nov 2025 17:45:30 +0530 Subject: [PATCH 5/5] fix: format and lint --- platforms/blabsy/src/components/input/image-preview.tsx | 6 +++--- platforms/blabsy/src/lib/utils/image-utils.ts | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/platforms/blabsy/src/components/input/image-preview.tsx b/platforms/blabsy/src/components/input/image-preview.tsx index e35afc91..6ecf5c33 100644 --- a/platforms/blabsy/src/components/input/image-preview.tsx +++ b/platforms/blabsy/src/components/input/image-preview.tsx @@ -67,9 +67,9 @@ export function ImagePreview({ type: img.type })) }); - + const processed = combineBase64Images(imagesPreview); - + console.log('[ImagePreview] Processed images:', { originalCount: imagesPreview?.length || 0, processedCount: processed.length, @@ -82,7 +82,7 @@ export function ImagePreview({ type: img.type })) }); - + return processed; }, [imagesPreview]); diff --git a/platforms/blabsy/src/lib/utils/image-utils.ts b/platforms/blabsy/src/lib/utils/image-utils.ts index 70128f6f..7f4ab678 100644 --- a/platforms/blabsy/src/lib/utils/image-utils.ts +++ b/platforms/blabsy/src/lib/utils/image-utils.ts @@ -42,7 +42,10 @@ export function combineBase64Images( } else { // Handle odd number of images (last item) if (dataPart) { - if (dataPart.src.startsWith('data:') && !dataPart.src.includes(',')) { + if ( + dataPart.src.startsWith('data:') && + !dataPart.src.includes(',') + ) { // Incomplete base64 image, skip it } else { result.push(dataPart);