Skip to content

Commit

Permalink
🐛 wallet: Fix wallet button stuck on loading when declining install
Browse files Browse the repository at this point in the history
  • Loading branch information
noomly committed Jul 13, 2023
1 parent cd79f43 commit 17fff03
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 21 deletions.
2 changes: 1 addition & 1 deletion packages/wallet/src/components/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export default function Header({
onInitialized,
}: HeaderProps) {
async function onMetamaskClick() {
if (await initializeArsnap()) {
if ((await initializeArsnap()) === "success") {
onInitialized();
}
}
Expand Down
15 changes: 4 additions & 11 deletions packages/wallet/src/utils/arsnap.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import * as adapter from "@pianity/arsnap-adapter";

import { getPermissions, RpcPermission } from "@pianity/arsnap-adapter";
import { CustomError } from "@/utils/types";
import { REQUIRED_PERMISSIONS } from "@/consts";

export async function getMissingPermissions(permissions: RpcPermission[]) {
Expand All @@ -14,30 +13,24 @@ export async function getMissingPermissions(permissions: RpcPermission[]) {
return missigPermissions;
}

export type InitializationErrorKind =
| "WrongMetamaskVersion"
| "InstallationDeclined"
| "PermissionsDeclined";
export class InitializationError extends CustomError<InitializationErrorKind> {}

export async function initializeArsnap() {
try {
await adapter.connect();
} catch (e) {
if ((e as any)?.code === -32601) {
throw new InitializationError("WrongMetamaskVersion");
return "wrongMetamaskVersion";
}
throw new InitializationError("InstallationDeclined");
return "installationDeclined";
}

const missingPermissions = await getMissingPermissions(REQUIRED_PERMISSIONS);

if (missingPermissions.length > 0) {
const granted = await adapter.requestPermissions(missingPermissions);
if (!granted) {
throw new InitializationError("PermissionsDeclined");
return "permissionsDeclined";
}
}

return true;
return "success";
}
15 changes: 6 additions & 9 deletions packages/wallet/src/views/Welcome.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import arweaveLogo from "@/assets/arweave.svg";
import { InitializationError, initializeArsnap } from "@/utils/arsnap";
import { initializeArsnap } from "@/utils/arsnap";
import MetamaskButton from "@/components/interface/MetamaskButton";
import Text from "@/components/interface/typography/Text";
import ViewContainer from "@/components/interface/layout/ViewContainer";
Expand All @@ -14,15 +14,12 @@ export default function Welcome({ onInitialized }: WelcomeProps) {
if (!window.ethereum) {
window.open("https://metamask.io/flask/", "_blank");
} else {
try {
await initializeArsnap();
const initResult = await initializeArsnap();

if (initResult === "success") {
onInitialized();
} catch (e) {
if (e instanceof InitializationError) {
if (e.kind === "WrongMetamaskVersion") {
window.open("https://metamask.io/flask/", "_blank");
}
}
} else if (initResult === "wrongMetamaskVersion") {
window.open("https://metamask.io/flask/", "_blank");
}
}
}
Expand Down

0 comments on commit 17fff03

Please sign in to comment.