Skip to content

Commit

Permalink
purchase soulname with identity: added result metadata handling and u…
Browse files Browse the repository at this point in the history
…pdating masa-sdk
  • Loading branch information
hide-on-bush-x committed Aug 8, 2023
1 parent 474b101 commit 46252ef
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 14 deletions.
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -37,7 +37,8 @@
"@celo/rainbowkit-celo": "^1.0.2",
"@ebay/nice-modal-react": "^1.2.10",
"@masa-finance/masa-contracts-identity": "^1.8.0",
"@masa-finance/masa-sdk": "^3.5.2",
"@masa-finance/masa-sdk": "^3.5.6",
"@masa-finance/zksbt-cookie": "^0.5.4",
"@metamask/providers": "^11.0.0",
"@rainbow-me/rainbowkit": "~0.12.17",
"@storybook/react": "^7.0.18",
Expand Down
3 changes: 2 additions & 1 deletion src/provider/masa-shape.ts
@@ -1,5 +1,6 @@
import React from 'react';
import {
CreateSoulNameResult,
GenerateGreenResult,
ICreditScore,
IGreen,
Expand Down Expand Up @@ -147,7 +148,7 @@ export interface MasaShape {
registrationPeriod: number,
paymentMethod: PaymentMethod,
style?: string | undefined
) => Promise<boolean | Error>;
) => Promise<CreateSoulNameResult | (Error & { code?: string | undefined; }) | undefined>;
isConnected?: boolean;
isDisconnected?: boolean;
// new-modal
Expand Down
2 changes: 1 addition & 1 deletion src/refactor/masa/use-identity-purchase.ts
Expand Up @@ -56,7 +56,7 @@ export const useIdentityPurchase = () => {

await queryClient.invalidateQueries(['identity']);
await queryClient.invalidateQueries(['soulnames']);
return !!result?.success;
return result;
} catch (error: unknown) {
const returnError = error as Error & {
code?: string;
Expand Down
2 changes: 1 addition & 1 deletion src/refactor/masa/use-soulnames-purchase.ts
Expand Up @@ -36,7 +36,7 @@ export const useSoulNamesPurchase = () => {
style
);
await queryClient.invalidateQueries(['soulnames']);
return !!result?.success;
return result;
} catch (error: unknown) {
const returnError = error as Error & {
code?: string;
Expand Down
@@ -1,5 +1,8 @@
import React, { useCallback, useMemo, useState } from 'react';
import NiceModal from '@ebay/nice-modal-react';
import { useCookieMonster } from '@masa-finance/zksbt-cookie';
import { CreateSoulNameResult } from '@masa-finance/masa-sdk';
import { useMasaClient } from '../../../../masa-client';
import { useConfig } from '../../../../base-provider';
import CreateSoulnameForm from './CreateSoulnameForm';
import { useRegisterSoulname } from './use-register-soulname';
Expand Down Expand Up @@ -29,29 +32,71 @@ const SoulnameModal = ({
closeOnSuccess?: boolean;
}) => {
const { company } = useConfig();
const { isLoadingSigner } = useWalletClient();
const { isLoadingSigner, address } = useWalletClient();
const { sdk: masa } = useMasaClient();
const { extension, soulname } = useCreateSoulnameModal();

const { fireMintEvent } = useCookieMonster({
clientApp: 'Masa React', // TODO: Forward from MasaClient a client name
clientName: 'Masa',
});

const [shouldRestart, setShouldRestart] = useState(false);
const handleError = useCallback(() => {
setShouldRestart(true);
onError?.();
}, [onError]);

// const [error, setError] = useState<null | {
// title: string;
// subtitle: string;
// }>(null);

// const handleErrorConfirmed = useCallback(() => setError(null), []);

const handleMintSuccess = async (
result: CreateSoulNameResult
) => {

// TODO: Remove lint disable
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
const price = result?.metadata?.value;
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
const priceValue = price?.toNumber() as number ?? '';
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
const paymentMethod = result?.metadata?.paymentMethod as string;

const [symbol, name] = await Promise.all([
masa?.contracts.instances.SoulNameContract.symbol(),
masa?.contracts.instances.SoulNameContract.name(),
]);

fireMintEvent(
address ?? '',
masa?.config.networkName ?? '',
masa?.contracts.instances.SoulNameContract.address ?? '',
name ?? '',
symbol ?? '',
'Soulname',
'0', // TODO: Value in USD
'USD',
paymentMethod,
priceValue.toString(),
{
soulname,
}
);
onMintSuccess?.();
};

const {
hasRegisteredSoulname,
onRegisterSoulname,
isRegisteringSoulname,
errorRegisterSoulname,
} = useRegisterSoulname({
onMintError,
onMintSuccess,
onMintSuccess: handleMintSuccess,
onRegisterFinish,
});
// * handlers
Expand Down
@@ -1,4 +1,5 @@
import { useAsyncFn } from 'react-use';
import { CreateSoulNameResult } from '@masa-finance/masa-sdk';
import { useSoulNamesPurchase } from '../../../../masa/use-soulnames-purchase';
import { useIdentityPurchase } from '../../../../masa/use-identity-purchase';
import { useConfig } from '../../../../base-provider';
Expand All @@ -16,7 +17,9 @@ export const useRegisterSoulname = ({
onMintError,
onRegisterFinish,
}: Partial<{
onMintSuccess?: () => void;
onMintSuccess?: (
result: CreateSoulNameResult
) => void;
onMintError?: () => void;
onRegisterFinish?: () => void;
}>) => {
Expand Down Expand Up @@ -55,7 +58,7 @@ export const useRegisterSoulname = ({
}

if (result) {
onMintSuccess?.();
onMintSuccess?.(result);
}

onRegisterFinish?.();
Expand All @@ -82,7 +85,7 @@ export const useRegisterSoulname = ({
}

if (result) {
onMintSuccess?.();
onMintSuccess?.(result);
}

onRegisterFinish?.();
Expand Down
18 changes: 13 additions & 5 deletions yarn.lock
Expand Up @@ -2196,10 +2196,10 @@
dependencies:
ethers "~5.7.2"

"@masa-finance/masa-sdk@^3.5.2":
version "3.5.2"
resolved "https://registry.yarnpkg.com/@masa-finance/masa-sdk/-/masa-sdk-3.5.2.tgz#69ca5fde9440bf947e2b60982cfa1f5ba902a6e5"
integrity sha512-dfmOiuPHHZXfJ6+AI3EJKi2valZqb8AiJDDF0bNZa4fdQaq4Hgk6jEL/+vR/ajup2OZFs3Has2FsApSUwAehkg==
"@masa-finance/masa-sdk@^3.5.6":
version "3.5.6"
resolved "https://registry.yarnpkg.com/@masa-finance/masa-sdk/-/masa-sdk-3.5.6.tgz#03d3ebc019d41fbb61215e069742883ce75911b0"
integrity sha512-gvNVJ1sL9mGI3RCm+xouIsrOx7ngRd51b2TGnmedZjAUUD6uSamhPI63qW2NdyZxwhDiOqz1KHFN6Zed8zI9gA==
dependencies:
"@masa-finance/masa-contracts-identity" "^1.8.3"
"@masa-finance/masa-token" "^2.0.0"
Expand All @@ -2214,6 +2214,14 @@
resolved "https://registry.yarnpkg.com/@masa-finance/masa-token/-/masa-token-2.0.0.tgz#b87635ab55de166183ad1535199a1a848016d5eb"
integrity sha512-2k4nXBZTVfguJunYXNpQ9EreHW1EVOTmo+U1+OKnnX6lh69MWgoZsWMmSBjyZwJQ2R21QmoVCP57p+LpY0vM1A==

"@masa-finance/zksbt-cookie@^0.5.4":
version "0.5.4"
resolved "https://registry.yarnpkg.com/@masa-finance/zksbt-cookie/-/zksbt-cookie-0.5.4.tgz#eb079b083641892be38e6af7a4205da687af31c7"
integrity sha512-uESWuXdij1b7eP+Q1CdCuLhx4IH/BBIz79oGnjdWMRHu8O3IxZY5rvkNh8bVjSfb/Co5dF0yJIlRw3xeKnJisg==
dependencies:
axios "^1.4.0"
react "^18.2.0"

"@mdx-js/react@^2.1.5":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.3.0.tgz#4208bd6d70f0d0831def28ef28c26149b03180b3"
Expand Down Expand Up @@ -5825,7 +5833,7 @@ axios@^0.27.2:
follow-redirects "^1.14.9"
form-data "^4.0.0"

axios@^1.3.2:
axios@^1.3.2, axios@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f"
integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==
Expand Down

0 comments on commit 46252ef

Please sign in to comment.