@hsuite/native-connect-angular 1.0.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/README.md +48 -0
- package/USAGE_EXAMPLES.md +476 -0
- package/assets/wallets/extension.svg +7 -0
- package/assets/wallets/hashpack.svg +6 -0
- package/assets/wallets/hsuite.svg +11 -0
- package/assets/wallets/kabila.svg +11 -0
- package/assets/wallets/walletconnect.svg +13 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-summary.json +50 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +476 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +476 -0
- package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
- package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +116 -0
- package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
- package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +116 -0
- package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +685 -0
- package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +766 -0
- package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
- package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +116 -0
- package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1495 -0
- package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1588 -0
- package/coverage/lcov-report/lib/components/account-selector/index.html +161 -0
- package/coverage/lcov-report/lib/components/wallet-account-display/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
- package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
- package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
- package/coverage/lcov-report/lib/components/wallet-session-display/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
- package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
- package/coverage/lcov-report/lib/directives/index.html +146 -0
- package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +670 -0
- package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +547 -0
- package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +781 -0
- package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +715 -0
- package/coverage/lcov-report/lib/index.html +116 -0
- package/coverage/lcov-report/lib/models/connection-config.model.ts.html +280 -0
- package/coverage/lcov-report/lib/models/index.html +131 -0
- package/coverage/lcov-report/lib/models/provider-types.ts.html +577 -0
- package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +1138 -0
- package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
- package/coverage/lcov-report/lib/providers/hsuite-native/index.html +116 -0
- package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +2347 -0
- package/coverage/lcov-report/lib/providers/index.html +146 -0
- package/coverage/lcov-report/lib/providers/p2p-native/index.html +131 -0
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
- package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1132 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +176 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +673 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +146 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
- package/coverage/lcov-report/lib/services/index.html +191 -0
- package/coverage/lcov-report/lib/services/logger.service.ts.html +463 -0
- package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
- package/coverage/lcov-report/lib/services/transaction-builders/index.html +161 -0
- package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
- package/coverage/lcov-report/lib/services/transaction.service.ts.html +1123 -0
- package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +2641 -0
- package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +637 -0
- package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +643 -0
- package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +496 -0
- package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +823 -0
- package/coverage/lcov-report/lib/transports/index.html +116 -0
- package/coverage/lcov-report/lib/utils/index.html +116 -0
- package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +319 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov.info +19252 -0
- package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
- package/coverage/lib/components/account-selector/account-actions/index.html +116 -0
- package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
- package/coverage/lib/components/account-selector/account-filter/index.html +116 -0
- package/coverage/lib/components/account-selector/account-formatting.service.ts.html +685 -0
- package/coverage/lib/components/account-selector/account-grouping.service.ts.html +766 -0
- package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
- package/coverage/lib/components/account-selector/account-list/index.html +116 -0
- package/coverage/lib/components/account-selector/account-selector.component.ts.html +1495 -0
- package/coverage/lib/components/account-selector/account-selector.service.ts.html +1588 -0
- package/coverage/lib/components/account-selector/index.html +161 -0
- package/coverage/lib/components/wallet-account-display/index.html +116 -0
- package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
- package/coverage/lib/components/wallet-connect-button/index.html +116 -0
- package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
- package/coverage/lib/components/wallet-connect-prompt/index.html +116 -0
- package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
- package/coverage/lib/components/wallet-connected-guard/index.html +116 -0
- package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
- package/coverage/lib/components/wallet-connection-modal/index.html +116 -0
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
- package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
- package/coverage/lib/components/wallet-session-display/index.html +116 -0
- package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
- package/coverage/lib/components/wallet-transaction-status/index.html +116 -0
- package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
- package/coverage/lib/directives/index.html +146 -0
- package/coverage/lib/directives/wallet-connected.directive.ts.html +670 -0
- package/coverage/lib/directives/wallet-context.directive.ts.html +547 -0
- package/coverage/lib/directives/wallet-events.directive.ts.html +781 -0
- package/coverage/lib/hsuite-wallet.module.ts.html +715 -0
- package/coverage/lib/index.html +116 -0
- package/coverage/lib/models/connection-config.model.ts.html +280 -0
- package/coverage/lib/models/index.html +131 -0
- package/coverage/lib/models/provider-types.ts.html +577 -0
- package/coverage/lib/providers/base-wallet-provider.ts.html +1138 -0
- package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
- package/coverage/lib/providers/hsuite-native/index.html +116 -0
- package/coverage/lib/providers/hsuite-native-provider.ts.html +2347 -0
- package/coverage/lib/providers/index.html +146 -0
- package/coverage/lib/providers/p2p-native/index.html +131 -0
- package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
- package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
- package/coverage/lib/providers/wallet-error-handler.ts.html +1132 -0
- package/coverage/lib/providers/walletconnect/core/index.html +176 -0
- package/coverage/lib/providers/walletconnect/core/session-health.ts.html +673 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
- package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
- package/coverage/lib/providers/walletconnect/signers/index.html +146 -0
- package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
- package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
- package/coverage/lib/services/index.html +191 -0
- package/coverage/lib/services/logger.service.ts.html +463 -0
- package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
- package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
- package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
- package/coverage/lib/services/transaction-builders/index.html +161 -0
- package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
- package/coverage/lib/services/transaction.service.ts.html +1123 -0
- package/coverage/lib/services/unified-wallet.service.ts.html +2641 -0
- package/coverage/lib/services/wallet-context.service.ts.html +637 -0
- package/coverage/lib/services/wallet-event-bus.service.ts.html +643 -0
- package/coverage/lib/services/wallet-providers.service.ts.html +496 -0
- package/coverage/lib/transports/chrome-extension-transport.ts.html +823 -0
- package/coverage/lib/transports/index.html +116 -0
- package/coverage/lib/utils/index.html +116 -0
- package/coverage/lib/utils/ledger-icons.util.ts.html +319 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/dist/README.md +48 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs +14592 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -0
- package/dist/index.d.ts +6949 -0
- package/examples/minimal-connect.ts +178 -0
- package/examples/multi-protocol.ts +495 -0
- package/examples/transaction-signing.ts +361 -0
- package/jest.config.json +45 -0
- package/karma.conf.js +42 -0
- package/ng-package.json +20 -0
- package/package.json +60 -0
- package/src/index.ts +203 -0
- package/src/lib/components/account-selector/account-actions/account-actions.component.ts +261 -0
- package/src/lib/components/account-selector/account-filter/account-filter.component.ts +401 -0
- package/src/lib/components/account-selector/account-formatting.service.ts +200 -0
- package/src/lib/components/account-selector/account-grouping.service.ts +227 -0
- package/src/lib/components/account-selector/account-list/account-list.component.ts +470 -0
- package/src/lib/components/account-selector/account-selector.component.html +135 -0
- package/src/lib/components/account-selector/account-selector.component.scss +2039 -0
- package/src/lib/components/account-selector/account-selector.component.ts +470 -0
- package/src/lib/components/account-selector/account-selector.service.ts +501 -0
- package/src/lib/components/wallet-account-display/wallet-account-display.component.html +34 -0
- package/src/lib/components/wallet-account-display/wallet-account-display.component.scss +99 -0
- package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +140 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.html +14 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.scss +272 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.ts +240 -0
- package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.html +24 -0
- package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.scss +50 -0
- package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts +108 -0
- package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.html +24 -0
- package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts +73 -0
- package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.html +56 -0
- package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.scss +218 -0
- package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts +117 -0
- package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.html +94 -0
- package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.scss +272 -0
- package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts +734 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.html +197 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.scss +678 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +730 -0
- package/src/lib/components/wallet-session-display/wallet-session-display.component.html +110 -0
- package/src/lib/components/wallet-session-display/wallet-session-display.component.scss +179 -0
- package/src/lib/components/wallet-session-display/wallet-session-display.component.ts +197 -0
- package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.html +65 -0
- package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.scss +254 -0
- package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts +206 -0
- package/src/lib/directives/wallet-connected.directive.ts +195 -0
- package/src/lib/directives/wallet-context.directive.ts +154 -0
- package/src/lib/directives/wallet-events.directive.ts +232 -0
- package/src/lib/hsuite-wallet.module.ts +210 -0
- package/src/lib/models/connection-config.model.ts +65 -0
- package/src/lib/models/provider-types.ts +164 -0
- package/src/lib/models/unified-account.model.ts +76 -0
- package/src/lib/models/wallet-context.model.ts +121 -0
- package/src/lib/models/wallet-events.model.ts +158 -0
- package/src/lib/providers/base-wallet-provider.ts +351 -0
- package/src/lib/providers/hsuite-native/channel-client.service.spec.ts +73 -0
- package/src/lib/providers/hsuite-native/channel-client.service.ts +862 -0
- package/src/lib/providers/hsuite-native/index.ts +8 -0
- package/src/lib/providers/hsuite-native-provider.ts +754 -0
- package/src/lib/providers/mobile-native/mobile-native.provider.spec.ts +19 -0
- package/src/lib/providers/p2p-native/index.ts +30 -0
- package/src/lib/providers/p2p-native/p2p-native.provider.spec.ts +523 -0
- package/src/lib/providers/p2p-native/p2p-native.provider.ts +723 -0
- package/src/lib/providers/p2p-native/p2p-session-manager.ts +695 -0
- package/src/lib/providers/wallet-error-handler.ts +349 -0
- package/src/lib/providers/walletconnect/core/base-signer.interface.ts +122 -0
- package/src/lib/providers/walletconnect/core/session-health.ts +196 -0
- package/src/lib/providers/walletconnect/core/walletconnect-client-manager.ts +364 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.integration.spec.ts +348 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +826 -0
- package/src/lib/providers/walletconnect/core/walletconnect-session-store.ts +273 -0
- package/src/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts +299 -0
- package/src/lib/providers/walletconnect/core/walletconnect-types.ts +48 -0
- package/src/lib/providers/walletconnect/index.ts +33 -0
- package/src/lib/providers/walletconnect/signers/hedera-signer.spec.ts +367 -0
- package/src/lib/providers/walletconnect/signers/hedera-signer.ts +610 -0
- package/src/lib/providers/walletconnect/signers/signer-factory.spec.ts +62 -0
- package/src/lib/providers/walletconnect/signers/signer-factory.ts +120 -0
- package/src/lib/providers/walletconnect/signers/xrpl-signer.spec.ts +296 -0
- package/src/lib/providers/walletconnect/signers/xrpl-signer.ts +478 -0
- package/src/lib/services/logger.service.ts +126 -0
- package/src/lib/services/transaction-builders/base-transaction-builder.service.ts +585 -0
- package/src/lib/services/transaction-builders/hedera-amount-utils.ts +84 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.spec.ts +741 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +1285 -0
- package/src/lib/services/transaction-builders/index.ts +54 -0
- package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.spec.ts +937 -0
- package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.ts +832 -0
- package/src/lib/services/transaction.service.ts +346 -0
- package/src/lib/services/unified-wallet.service.spec.ts +1382 -0
- package/src/lib/services/unified-wallet.service.ts +852 -0
- package/src/lib/services/wallet-context.service.ts +184 -0
- package/src/lib/services/wallet-event-bus.service.ts +186 -0
- package/src/lib/services/wallet-providers.service.ts +137 -0
- package/src/lib/transports/chrome-extension-transport.ts +246 -0
- package/src/lib/utils/index.ts +14 -0
- package/src/lib/utils/ledger-icons.util.ts +78 -0
- package/test/test-setup.ts +21 -0
- package/test-setup.ts +63 -0
- package/tsconfig.build.json +11 -0
- package/tsconfig.json +29 -0
- package/tsconfig.spec.json +15 -0
- package/vitest.config.ts +48 -0
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HSuite Native Connect
|
|
3
|
+
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
4
|
+
*
|
|
5
|
+
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
6
|
+
*
|
|
7
|
+
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
8
|
+
* visit https://hsuite.finance/licensing
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @file account-filter.component.ts
|
|
13
|
+
* @description Compact header and filtering component for account selector
|
|
14
|
+
*
|
|
15
|
+
* Provides compact header display with account preview and collapse/expand
|
|
16
|
+
* functionality. Extracted from AccountSelectorComponent for better maintainability.
|
|
17
|
+
*
|
|
18
|
+
* **Features:**
|
|
19
|
+
* - Compact header with active account preview
|
|
20
|
+
* - Collapsible account list toggle
|
|
21
|
+
* - Network and wallet badges
|
|
22
|
+
* - Multiple size variants (default, navbar, small)
|
|
23
|
+
* - Multiple format options (label-count, address-count, etc.)
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import {
|
|
27
|
+
Component,
|
|
28
|
+
EventEmitter,
|
|
29
|
+
Input,
|
|
30
|
+
Output,
|
|
31
|
+
inject,
|
|
32
|
+
ChangeDetectionStrategy,
|
|
33
|
+
ViewEncapsulation,
|
|
34
|
+
} from '@angular/core';
|
|
35
|
+
import { CommonModule } from '@angular/common';
|
|
36
|
+
import { IonBadge, IonIcon } from '@ionic/angular/standalone';
|
|
37
|
+
import { addIcons } from 'ionicons';
|
|
38
|
+
import { chevronDownOutline } from 'ionicons/icons';
|
|
39
|
+
import { AccountFormattingService } from '../account-formatting.service';
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Format options for compact header display
|
|
43
|
+
*/
|
|
44
|
+
export type CompactHeaderFormat =
|
|
45
|
+
| 'label-count'
|
|
46
|
+
| 'address-count'
|
|
47
|
+
| 'count-only'
|
|
48
|
+
| 'label-only'
|
|
49
|
+
| 'address-only';
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Size variants for compact header
|
|
53
|
+
*/
|
|
54
|
+
export type CompactHeaderSize = 'default' | 'navbar' | 'small';
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Active account data for display
|
|
58
|
+
*/
|
|
59
|
+
export interface ActiveAccountData {
|
|
60
|
+
address: string;
|
|
61
|
+
networkId: string;
|
|
62
|
+
label?: string;
|
|
63
|
+
providerType?: string;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @component AccountFilterComponent
|
|
68
|
+
* Compact header with active account preview and collapse toggle.
|
|
69
|
+
*/
|
|
70
|
+
@Component({
|
|
71
|
+
selector: 'wallet-account-filter',
|
|
72
|
+
standalone: true,
|
|
73
|
+
imports: [CommonModule, IonBadge, IonIcon],
|
|
74
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
75
|
+
encapsulation: ViewEncapsulation.None,
|
|
76
|
+
template: `
|
|
77
|
+
<!-- Custom Header Text (optional) -->
|
|
78
|
+
<div *ngIf="customHeaderText" class="custom-header-text">
|
|
79
|
+
{{ customHeaderText }}
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<!-- Compact Header -->
|
|
83
|
+
<div
|
|
84
|
+
class="compact-header"
|
|
85
|
+
[class.navbar-size]="headerSize === 'navbar'"
|
|
86
|
+
[class.small-size]="headerSize === 'small'"
|
|
87
|
+
role="button"
|
|
88
|
+
tabindex="0"
|
|
89
|
+
[attr.aria-expanded]="!isCollapsed"
|
|
90
|
+
[attr.aria-label]="getAriaLabel()"
|
|
91
|
+
(click)="onToggle()"
|
|
92
|
+
(keydown.enter)="onToggle()"
|
|
93
|
+
(keydown.space)="$event.preventDefault(); onToggle()"
|
|
94
|
+
>
|
|
95
|
+
<!-- Account Preview -->
|
|
96
|
+
<div class="account-preview">
|
|
97
|
+
<span class="account-address-compact">{{ getActiveAddress() }}</span>
|
|
98
|
+
<ion-badge [color]="getActiveNetworkColor()" size="small" class="network-badge-compact">
|
|
99
|
+
{{ getActiveNetworkType() }}
|
|
100
|
+
</ion-badge>
|
|
101
|
+
<img [src]="walletLogoSrc" [alt]="'Wallet logo'" class="wallet-logo-compact" />
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<!-- Account Count Badge -->
|
|
105
|
+
<ion-badge color="primary" class="account-count-badge">
|
|
106
|
+
{{ totalAccountCount }}
|
|
107
|
+
</ion-badge>
|
|
108
|
+
|
|
109
|
+
<!-- Expand/Collapse Icon -->
|
|
110
|
+
<ion-icon
|
|
111
|
+
*ngIf="collapsible"
|
|
112
|
+
name="chevron-down-outline"
|
|
113
|
+
class="toggle-icon"
|
|
114
|
+
[class.expanded]="!isCollapsed"
|
|
115
|
+
>
|
|
116
|
+
</ion-icon>
|
|
117
|
+
</div>
|
|
118
|
+
`,
|
|
119
|
+
styles: [
|
|
120
|
+
`
|
|
121
|
+
:host {
|
|
122
|
+
display: block;
|
|
123
|
+
width: 100%;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* Custom Header Text */
|
|
127
|
+
.custom-header-text {
|
|
128
|
+
font-size: var(--account-selector-font-size-sm, 12px);
|
|
129
|
+
font-weight: var(--account-selector-font-weight-medium, 500);
|
|
130
|
+
color: var(--account-selector-text-secondary, var(--ion-color-medium));
|
|
131
|
+
margin-bottom: var(--account-selector-spacing-sm, 8px);
|
|
132
|
+
padding: 0 var(--account-selector-spacing-xs, 4px);
|
|
133
|
+
text-transform: uppercase;
|
|
134
|
+
letter-spacing: 0.5px;
|
|
135
|
+
line-height: var(--account-selector-line-height-normal, 1.5);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* Compact Header */
|
|
139
|
+
.compact-header {
|
|
140
|
+
display: flex;
|
|
141
|
+
align-items: center;
|
|
142
|
+
gap: var(--account-selector-spacing-md, 12px);
|
|
143
|
+
padding: var(--account-selector-spacing-md, 12px) var(--account-selector-spacing-lg, 16px);
|
|
144
|
+
background: var(--account-selector-item-bg, rgba(var(--ion-color-light-rgb), 0.05));
|
|
145
|
+
border: 1px solid
|
|
146
|
+
var(--account-selector-border-color, rgba(var(--ion-color-light-rgb), 0.1));
|
|
147
|
+
border-radius: var(--account-selector-content-border-radius, 12px);
|
|
148
|
+
cursor: pointer;
|
|
149
|
+
transition: all var(--account-selector-transition-normal, 0.2s) ease;
|
|
150
|
+
user-select: none;
|
|
151
|
+
min-height: var(--account-selector-touch-target-min, 44px);
|
|
152
|
+
margin-bottom: var(--account-selector-spacing-md, 12px);
|
|
153
|
+
box-shadow:
|
|
154
|
+
var(--account-selector-shadow-inset, var(--shadow-inset)),
|
|
155
|
+
var(--account-selector-shadow-sm, var(--shadow-sm));
|
|
156
|
+
|
|
157
|
+
&:hover {
|
|
158
|
+
background: var(--account-selector-item-bg-hover, rgba(var(--ion-color-light-rgb), 0.08));
|
|
159
|
+
border-color: var(
|
|
160
|
+
--account-selector-border-color-hover,
|
|
161
|
+
rgba(var(--ion-color-light-rgb), 0.2)
|
|
162
|
+
);
|
|
163
|
+
transform: translateY(-1px);
|
|
164
|
+
box-shadow:
|
|
165
|
+
var(--account-selector-shadow-inset, var(--shadow-inset)),
|
|
166
|
+
var(--account-selector-shadow-md, var(--shadow-md));
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
&:active {
|
|
170
|
+
transform: scale(0.98);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
&:focus {
|
|
174
|
+
outline: 2px solid var(--account-selector-border-color-focus, var(--ion-color-primary));
|
|
175
|
+
outline-offset: 2px;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* Navbar size variant */
|
|
179
|
+
&.navbar-size {
|
|
180
|
+
padding: 8px 12px;
|
|
181
|
+
min-height: 40px;
|
|
182
|
+
border-radius: 10px;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* Small size variant */
|
|
186
|
+
&.small-size {
|
|
187
|
+
padding: 6px 10px;
|
|
188
|
+
min-height: 36px;
|
|
189
|
+
border-radius: 8px;
|
|
190
|
+
gap: 10px;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* Account Preview Section */
|
|
195
|
+
.account-preview {
|
|
196
|
+
display: flex;
|
|
197
|
+
align-items: center;
|
|
198
|
+
gap: var(--account-selector-spacing-sm, 8px);
|
|
199
|
+
flex: 1;
|
|
200
|
+
min-width: 0;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.account-address-compact {
|
|
204
|
+
font-size: var(--account-selector-font-size-sm, 13px);
|
|
205
|
+
font-weight: var(--account-selector-font-weight-semibold, 600);
|
|
206
|
+
color: var(--account-selector-text-primary, var(--ion-text-color));
|
|
207
|
+
font-family: var(--ion-font-family-monospace, 'Courier New', monospace);
|
|
208
|
+
line-height: var(--account-selector-line-height-normal, 1.5);
|
|
209
|
+
overflow: hidden;
|
|
210
|
+
text-overflow: ellipsis;
|
|
211
|
+
white-space: nowrap;
|
|
212
|
+
flex-shrink: 1;
|
|
213
|
+
transition: color var(--account-selector-transition-fast, 0.15s) ease;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.network-badge-compact {
|
|
217
|
+
font-size: var(--account-selector-badge-font-size, 10px);
|
|
218
|
+
font-weight: var(--account-selector-font-weight-semibold, 600);
|
|
219
|
+
padding: var(--account-selector-badge-padding, 3px 7px);
|
|
220
|
+
border-radius: var(--account-selector-badge-border-radius, 6px);
|
|
221
|
+
flex-shrink: 0;
|
|
222
|
+
line-height: var(--account-selector-line-height-tight, 1.2);
|
|
223
|
+
transition: transform var(--account-selector-transition-fast, 0.15s) ease;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.wallet-logo-compact {
|
|
227
|
+
width: var(--account-selector-logo-size-sm, 20px);
|
|
228
|
+
height: var(--account-selector-logo-size-sm, 20px);
|
|
229
|
+
border-radius: var(--account-selector-logo-border-radius, 4px);
|
|
230
|
+
flex-shrink: 0;
|
|
231
|
+
box-shadow: var(--account-selector-logo-shadow, var(--shadow-sm));
|
|
232
|
+
transition: transform var(--account-selector-transition-fast, 0.15s) ease;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.account-count-badge {
|
|
236
|
+
font-size: var(--account-selector-font-size-xs, 11px);
|
|
237
|
+
font-weight: var(--account-selector-font-weight-semibold, 600);
|
|
238
|
+
padding: var(--account-selector-badge-padding, 3px 8px);
|
|
239
|
+
border-radius: var(--account-selector-badge-border-radius, 6px);
|
|
240
|
+
flex-shrink: 0;
|
|
241
|
+
line-height: var(--account-selector-line-height-tight, 1.2);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.toggle-icon {
|
|
245
|
+
font-size: var(--account-selector-icon-size, 20px);
|
|
246
|
+
color: var(--account-selector-text-secondary, var(--ion-color-medium));
|
|
247
|
+
transition: transform var(--account-selector-transition-slow, 0.3s)
|
|
248
|
+
cubic-bezier(0.4, 0, 0.2, 1);
|
|
249
|
+
flex-shrink: 0;
|
|
250
|
+
|
|
251
|
+
&.expanded {
|
|
252
|
+
transform: rotate(180deg);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Hover effects */
|
|
257
|
+
.compact-header:hover {
|
|
258
|
+
.network-badge-compact,
|
|
259
|
+
.wallet-logo-compact {
|
|
260
|
+
transform: scale(1.05);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.toggle-icon {
|
|
264
|
+
color: var(--account-selector-text-on-primary, var(--ion-color-primary));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
`,
|
|
268
|
+
],
|
|
269
|
+
})
|
|
270
|
+
export class AccountFilterComponent {
|
|
271
|
+
protected readonly formatting = inject(AccountFormattingService);
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Active account data for display
|
|
275
|
+
*/
|
|
276
|
+
@Input() activeAccount: ActiveAccountData | null = null;
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Total number of connected accounts
|
|
280
|
+
*/
|
|
281
|
+
@Input() totalAccountCount = 0;
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Whether the account list is collapsed
|
|
285
|
+
*/
|
|
286
|
+
@Input() isCollapsed = false;
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Whether collapse/expand is enabled
|
|
290
|
+
*/
|
|
291
|
+
@Input() collapsible = true;
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Custom header text (e.g., "Connected with", "Using wallet")
|
|
295
|
+
*/
|
|
296
|
+
@Input() customHeaderText?: string;
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Format for compact header display
|
|
300
|
+
*/
|
|
301
|
+
@Input() headerFormat: CompactHeaderFormat = 'label-count';
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Size variant for compact header
|
|
305
|
+
*/
|
|
306
|
+
@Input() headerSize: CompactHeaderSize = 'default';
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Wallet logo source URL
|
|
310
|
+
*/
|
|
311
|
+
@Input() walletLogoSrc = 'assets/wallets/hsuite.svg';
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Emitted when collapse toggle is clicked
|
|
315
|
+
*/
|
|
316
|
+
@Output() toggleCollapseEvent = new EventEmitter<void>();
|
|
317
|
+
|
|
318
|
+
constructor() {
|
|
319
|
+
addIcons({ chevronDownOutline });
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Handle toggle click
|
|
324
|
+
*/
|
|
325
|
+
protected onToggle(): void {
|
|
326
|
+
if (this.collapsible) {
|
|
327
|
+
this.toggleCollapseEvent.emit();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Get active account address (truncated)
|
|
333
|
+
*/
|
|
334
|
+
protected getActiveAddress(): string {
|
|
335
|
+
if (!this.activeAccount?.address) return 'No account';
|
|
336
|
+
return this.formatting.truncateAddress(this.activeAccount.address);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Get active account network type
|
|
341
|
+
*/
|
|
342
|
+
protected getActiveNetworkType(): string {
|
|
343
|
+
if (!this.activeAccount?.networkId) return '';
|
|
344
|
+
return this.formatting.formatNetwork(this.activeAccount.networkId);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Get active account network color
|
|
349
|
+
*/
|
|
350
|
+
protected getActiveNetworkColor(): string {
|
|
351
|
+
if (!this.activeAccount?.networkId) return 'medium';
|
|
352
|
+
return this.formatting.getNetworkColor(this.activeAccount.networkId);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Get primary text based on format
|
|
357
|
+
*/
|
|
358
|
+
protected getPrimaryText(): string {
|
|
359
|
+
switch (this.headerFormat) {
|
|
360
|
+
case 'label-count':
|
|
361
|
+
case 'label-only':
|
|
362
|
+
return this.activeAccount?.label || 'No Account';
|
|
363
|
+
|
|
364
|
+
case 'address-count':
|
|
365
|
+
case 'address-only':
|
|
366
|
+
return this.activeAccount
|
|
367
|
+
? this.formatting.truncateAddress(this.activeAccount.address)
|
|
368
|
+
: 'No Account';
|
|
369
|
+
|
|
370
|
+
case 'count-only': {
|
|
371
|
+
const count = this.totalAccountCount;
|
|
372
|
+
return count === 1 ? '1 wallet connected' : `${count} wallets connected`;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
default:
|
|
376
|
+
return 'Select Account';
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Get secondary text based on format
|
|
382
|
+
*/
|
|
383
|
+
protected getSecondaryText(): string | null {
|
|
384
|
+
if (this.headerFormat === 'label-count' || this.headerFormat === 'address-count') {
|
|
385
|
+
const count = this.totalAccountCount;
|
|
386
|
+
return count === 1 ? '1 account' : `${count} accounts`;
|
|
387
|
+
}
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Get ARIA label for accessibility
|
|
393
|
+
*/
|
|
394
|
+
protected getAriaLabel(): string {
|
|
395
|
+
const label = this.activeAccount?.label || 'No account';
|
|
396
|
+
const count = this.totalAccountCount;
|
|
397
|
+
const collapsed = this.isCollapsed;
|
|
398
|
+
|
|
399
|
+
return `${label}, ${count} account${count !== 1 ? 's' : ''} connected. ${collapsed ? 'Click to expand' : 'Click to collapse'} account list.`;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HSuite Native Connect
|
|
3
|
+
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
4
|
+
*
|
|
5
|
+
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
6
|
+
*
|
|
7
|
+
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
8
|
+
* visit https://hsuite.finance/licensing
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @file account-formatting.service.ts
|
|
13
|
+
* @description Account display formatting utilities
|
|
14
|
+
*
|
|
15
|
+
* Provides formatting utilities for displaying accounts, addresses,
|
|
16
|
+
* networks, and ledgers in the AccountSelectorComponent.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { Injectable } from '@angular/core';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Account formatting service.
|
|
23
|
+
*
|
|
24
|
+
* Provides utilities for formatting account-related display strings.
|
|
25
|
+
*/
|
|
26
|
+
@Injectable({ providedIn: 'root' })
|
|
27
|
+
export class AccountFormattingService {
|
|
28
|
+
/**
|
|
29
|
+
* Truncate address for display.
|
|
30
|
+
*
|
|
31
|
+
* @param address - Full address
|
|
32
|
+
* @param prefixLength - Characters to show at start (default: 6)
|
|
33
|
+
* @param suffixLength - Characters to show at end (default: 4)
|
|
34
|
+
* @returns Truncated address with ellipsis
|
|
35
|
+
*/
|
|
36
|
+
truncateAddress(address: string, prefixLength = 6, suffixLength = 4): string {
|
|
37
|
+
if (!address) return '';
|
|
38
|
+
if (address.length <= prefixLength + suffixLength + 3) return address;
|
|
39
|
+
return `${address.substring(0, prefixLength)}...${address.substring(address.length - suffixLength)}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Get display name for a ledger.
|
|
44
|
+
*
|
|
45
|
+
* @param ledgerId - Ledger ID
|
|
46
|
+
* @returns Display name
|
|
47
|
+
*/
|
|
48
|
+
getLedgerName(ledgerId: string): string {
|
|
49
|
+
const names: Record<string, string> = {
|
|
50
|
+
hedera: 'Hedera',
|
|
51
|
+
xrpl: 'XRPL',
|
|
52
|
+
};
|
|
53
|
+
return names[ledgerId?.toLowerCase()] || ledgerId?.toUpperCase() || 'Unknown';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get color for a ledger badge.
|
|
58
|
+
*
|
|
59
|
+
* @param ledgerId - Ledger ID
|
|
60
|
+
* @returns Ionic color name
|
|
61
|
+
*/
|
|
62
|
+
getLedgerColor(ledgerId: string): string {
|
|
63
|
+
const colors: Record<string, string> = {
|
|
64
|
+
hedera: 'success',
|
|
65
|
+
xrpl: 'tertiary',
|
|
66
|
+
};
|
|
67
|
+
return colors[ledgerId?.toLowerCase()] || 'medium';
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Format network display name with proper casing.
|
|
72
|
+
*
|
|
73
|
+
* @param networkId - Network ID (e.g., "hedera:testnet")
|
|
74
|
+
* @returns Formatted network name (e.g., "Testnet")
|
|
75
|
+
*/
|
|
76
|
+
formatNetwork(networkId: string): string {
|
|
77
|
+
const network = this.extractNetwork(networkId);
|
|
78
|
+
const names: Record<string, string> = {
|
|
79
|
+
mainnet: 'Mainnet',
|
|
80
|
+
testnet: 'Testnet',
|
|
81
|
+
devnet: 'Devnet',
|
|
82
|
+
};
|
|
83
|
+
return names[network.toLowerCase()] || network;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Extract network name from full networkId.
|
|
88
|
+
*
|
|
89
|
+
* @param networkId - Full network ID
|
|
90
|
+
* @returns Network name only
|
|
91
|
+
*/
|
|
92
|
+
extractNetwork(networkId?: string): string {
|
|
93
|
+
if (!networkId) return 'unknown';
|
|
94
|
+
const parts = networkId.split(':');
|
|
95
|
+
return parts[parts.length - 1] || networkId;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Get color for a network badge.
|
|
100
|
+
*
|
|
101
|
+
* @param networkId - Network ID
|
|
102
|
+
* @returns Ionic color name
|
|
103
|
+
*/
|
|
104
|
+
getNetworkColor(networkId: string): string {
|
|
105
|
+
const network = this.extractNetwork(networkId).toLowerCase();
|
|
106
|
+
const colors: Record<string, string> = {
|
|
107
|
+
mainnet: 'primary',
|
|
108
|
+
testnet: 'warning',
|
|
109
|
+
devnet: 'secondary',
|
|
110
|
+
};
|
|
111
|
+
return colors[network] || 'medium';
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Get display name for a provider type.
|
|
116
|
+
*
|
|
117
|
+
* @param providerType - Provider type ID
|
|
118
|
+
* @returns Display name
|
|
119
|
+
*/
|
|
120
|
+
getProviderName(providerType: string): string {
|
|
121
|
+
const names: Record<string, string> = {
|
|
122
|
+
'hsuite-native': 'HSuite Native',
|
|
123
|
+
'walletconnect-v2': 'WalletConnect',
|
|
124
|
+
};
|
|
125
|
+
return names[providerType] || providerType;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Get provider display name from provider ID.
|
|
130
|
+
*
|
|
131
|
+
* @param providerId - Provider ID
|
|
132
|
+
* @returns Display name
|
|
133
|
+
*/
|
|
134
|
+
getProviderDisplayName(providerId: string): string {
|
|
135
|
+
const nameMap: Record<string, string> = {
|
|
136
|
+
'walletconnect-v2': 'WalletConnect',
|
|
137
|
+
'hsuite-native': 'HSuite Wallet',
|
|
138
|
+
};
|
|
139
|
+
return nameMap[providerId] || providerId;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Get wallet logo path based on provider type.
|
|
144
|
+
*
|
|
145
|
+
* @param providerType - Provider type
|
|
146
|
+
* @returns Asset path for logo
|
|
147
|
+
*/
|
|
148
|
+
getWalletLogo(providerType: string): string {
|
|
149
|
+
if (providerType === 'walletconnect-v2') {
|
|
150
|
+
return 'assets/wallets/walletconnect.svg';
|
|
151
|
+
}
|
|
152
|
+
return 'assets/wallets/hsuite.svg';
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Get wallet logo for provider name string.
|
|
157
|
+
*
|
|
158
|
+
* @param providerName - Provider display name
|
|
159
|
+
* @returns Asset path for logo
|
|
160
|
+
*/
|
|
161
|
+
getWalletLogoForProvider(providerName: string): string {
|
|
162
|
+
if (providerName === 'WalletConnect') {
|
|
163
|
+
return 'assets/wallets/walletconnect.svg';
|
|
164
|
+
}
|
|
165
|
+
return 'assets/wallets/hsuite.svg';
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Get protocol icon name.
|
|
170
|
+
*
|
|
171
|
+
* @param protocol - Protocol name
|
|
172
|
+
* @returns Ionicon name
|
|
173
|
+
*/
|
|
174
|
+
getProtocolIcon(protocol: string): string {
|
|
175
|
+
return protocol === 'HSuite Native' ? 'link' : 'scan';
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Format account label.
|
|
180
|
+
*
|
|
181
|
+
* @param account - Account object
|
|
182
|
+
* @returns Display label
|
|
183
|
+
*/
|
|
184
|
+
formatAccountLabel(account: any): string {
|
|
185
|
+
return account?.label || 'Account';
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Format full account label with ledger and address.
|
|
190
|
+
*
|
|
191
|
+
* @param account - Account object
|
|
192
|
+
* @returns Full display label
|
|
193
|
+
*/
|
|
194
|
+
formatAccountLabelFull(account: any): string {
|
|
195
|
+
const label = account?.label || 'Account';
|
|
196
|
+
const ledger = this.getLedgerName(account?.ledgerId);
|
|
197
|
+
const address = this.truncateAddress(account?.address);
|
|
198
|
+
return `${label} (${ledger}) - ${address}`;
|
|
199
|
+
}
|
|
200
|
+
}
|