Skip to content

Commit 18882a2

Browse files
committed
feat: improve case when wallet does not support browser
1 parent 87212d8 commit 18882a2

File tree

4 files changed

+24
-2
lines changed

4 files changed

+24
-2
lines changed

src/main.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ export const connect = async ({
244244
},
245245
theme: modalTheme === "system" ? null : (modalTheme ?? null),
246246
modalWallets,
247+
discoveryWallets,
247248
},
248249
}) as unknown as ModalInstance // Prevents vite build errors
249250
})

src/modal/Modal.svelte

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script lang="ts">
22
import { onMount } from "svelte"
3+
import type { WalletProvider } from "@starknet-io/get-starknet-core"
34
45
import {
56
type Callback,
@@ -39,6 +40,7 @@
3940
return layout
4041
}
4142
43+
export let discoveryWallets: WalletProvider[]
4244
export let modalWallets: ModalWallet[] = []
4345
export let selectedWallet: ModalWallet | null = null
4446
$: selectedConnector =
@@ -176,6 +178,8 @@
176178
extensionName={selectedWallet?.name.includes("Ready")
177179
? "Ready Wallet (formerly Argent)"
178180
: selectedConnector?.name}
181+
extensionId={selectedWallet?.id}
182+
discoveryWallets={discoveryWallets}
179183
/>
180184
{/if}
181185
</main>

src/modal/layouts/DownloadWallet/DownloadWallet.svelte

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script lang="ts">
2-
import { StoreVersion } from "../../../types/modal"
2+
import type { WalletProvider } from "@starknet-io/get-starknet-core"
3+
import type { StoreVersion } from "../../../types/modal"
34
45
import AppleIcon from "../../components/icons/brands/AppleIcon.svelte"
56
import PlayStore from "../../components/icons/brands/PlayStore.svelte"
@@ -16,9 +17,14 @@
1617
import HorizontalLine from "../../components/HorizontalLine.svelte"
1718
1819
export let isArgent: boolean = false
20+
export let extensionId: string = ""
1921
export let extensionName: string = ""
2022
export let store: StoreVersion | null
2123
export let storeLink: string | undefined
24+
export let discoveryWallets: WalletProvider[]
25+
26+
const discoveredWallet = discoveryWallets.find((w: WalletProvider) => w.id.toLowerCase() === extensionId.toLowerCase())
27+
const discoveredWalletDownloads = Object.entries(discoveredWallet?.downloads || {})
2228
2329
const storeData = {
2430
// @dev - Be mindful of name property length, it might break the UI
@@ -39,6 +45,7 @@
3945

4046
<section class="flex flex-col flex-grow justify-between">
4147
<div class="flex flex-col gap-2">
48+
<!-- Upon removal of Argent mobile, remove and code else `!isArgent` if case from line 84 -->
4249
{#if isArgent}
4350
<ArgentDownloadItem
4451
title="Ready mobile"
@@ -80,6 +87,16 @@
8087
{/if}
8188
</svelte:fragment>
8289
</ArgentDownloadItem>
90+
{:else if !isArgent}
91+
<p class="text-[16px] text-primary">
92+
<span class="capitalize">{extensionName}</span> is not available on your browser.<br/><br/>
93+
{#if discoveredWalletDownloads.length > 0}
94+
Try on other browsers:{" "}
95+
{#each discoveredWalletDownloads as discovery, i}
96+
<Link as="a" className="capitalize" href={discovery[1]}>{discovery[0]}</Link>{i + 1 === discoveredWalletDownloads.length ? "." : ", "}
97+
{/each}
98+
{/if}
99+
</p>
83100
{/if}
84101
</div>
85102

src/modal/layouts/WalletList.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts">
2-
import { Callback, ModalWallet, Theme } from "../../types/modal"
2+
import type { Callback, ModalWallet, Theme } from "../../types/modal"
33
import WalletButton from "../components/buttons/WalletButton.svelte"
44
55
export let theme: Theme

0 commit comments

Comments
 (0)