Skip to content

Commit

Permalink
fix: correct invalidation of credit scores and green
Browse files Browse the repository at this point in the history
  • Loading branch information
simodrws committed May 12, 2023
1 parent e7601fd commit f56f314
Show file tree
Hide file tree
Showing 6 changed files with 204 additions and 103 deletions.
38 changes: 36 additions & 2 deletions src/provider/hooks.ts
Expand Up @@ -3,6 +3,8 @@ import { queryClient } from './masa-query-client';
import { useAsyncFn } from 'react-use';
import { DependencyList } from 'react';
import {
getCreditScoresQueryKey,
getGreenQueryKey,
getIdentityQueryKey,
getSessionDataQueryKey,
getSessionQueryKey,
Expand All @@ -18,8 +20,8 @@ const QUERIES = [
'session',
'sessionData',
'soulnames',
// 'credit-scores',
// 'green',
'green',
'credit-scores',
];

export type QueryKeyRetrievalInput = {
Expand All @@ -39,6 +41,10 @@ export const getQueryKeys = () => ({
getWalletQueryKey({ masa, signer, walletAddress }),
soulnames: ({ masa, signer, walletAddress }: QueryKeyRetrievalInput) =>
getSoulnamesQueryKey({ masa, signer, walletAddress }),
green: ({ masa, signer, walletAddress }: QueryKeyRetrievalInput) =>
getGreenQueryKey({ masa, signer, walletAddress }),
'credit-scores': ({ masa, signer, walletAddress }: QueryKeyRetrievalInput) =>
getCreditScoresQueryKey({ masa, signer, walletAddress }),
});

export const invalidateAllQueries = async ({
Expand Down Expand Up @@ -101,6 +107,34 @@ export const invalidateIdentity = async ({
);
};

export const invalidateCreditScores = async ({
masa,
signer,
walletAddress,
}: QueryKeyRetrievalInput) => {
await queryClient.invalidateQueries(
getQueryKeys()['credit-scores']({
masa,
signer,
walletAddress,
})
);
};

export const invalidateGreen = async ({
masa,
signer,
walletAddress,
}: QueryKeyRetrievalInput) => {
await queryClient.invalidateQueries(
getQueryKeys().green({
masa,
signer,
walletAddress,
})
);
};

export const useLogout = (
options: {
masa?: Masa;
Expand Down
63 changes: 11 additions & 52 deletions src/provider/masa-context-provider.tsx
Expand Up @@ -73,21 +73,14 @@ export const MasaContextProvider = ({
const { walletAddress, isWalletLoading, hasWalletAddress, reloadWallet } =
useWallet(masaInstance, signer);

const {
isConnected,
isDisconnected,
// isDisconnected,
// isLoggedIn: loggedIn,
// isLoggingOut,
hasAccountAddress,
accountAddress,
} = useAccountState({
masa: masaInstance,
walletAddress,
signer,
hasWalletAddress,
reloadWallet,
});
const { isConnected, isDisconnected, hasAccountAddress, accountAddress } =
useAccountState({
masa: masaInstance,
walletAddress,
signer,
hasWalletAddress,
reloadWallet,
});

// session
const { isLoggedIn, handleLogin, handleLogout, isSessionLoading } =
Expand Down Expand Up @@ -128,7 +121,7 @@ export const MasaContextProvider = ({
isCreditScoresLoading,
handleCreateCreditScore,
reloadCreditScores,
} = useCreditScores(masaInstance, walletAddress, identity);
} = useCreditScores(masaInstance, accountAddress, identity);

// greens
const {
Expand All @@ -137,7 +130,7 @@ export const MasaContextProvider = ({
handleGenerateGreen,
handleCreateGreen,
reloadGreens,
} = useGreen(masaInstance, walletAddress);
} = useGreen(masaInstance, accountAddress);

// scope
const { scope, setScope, areScopesFullfiled } = useScopes(
Expand Down Expand Up @@ -204,42 +197,8 @@ export const MasaContextProvider = ({
wagmiLoading,
]);

// const providerWagmi = useProvider();

// useEffect(() => {
// if (forceNetwork && currentNetwork?.networkName !== forceNetwork)
// openSwitchChainModal();
// else if (!isLoggedIn && provider) openAuthenticateModal();
// if (isLoggedIn) {
// if (!soulnames || (soulnames && soulnames.length === 0)) {
// // TODO: add scopes
// openCreateSoulnameModal();
// }
// }
// }, [
// isLoggedIn,
// provider,
// forceNetwork,
// soulnames,
// currentNetwork,
// // openAuthenticateModal,
// // openSwitchChainModal,
// // openCreateSoulnameModal,
// ]);

const connect = useCallback(
(options?: { scope?: string[]; callback?: () => void }) => {
// if (useRainbowKitWalletConnect) {
// openConnectModal?.();
// // setRainbowKitModalCallback(() => {
// // return () => {
// // openAuthenticateModal();
// // openConnectedModal();
// // };
// // });
// // return;
// }

if (verbose) {
console.info({ forcedPage, useRainbowKitWalletConnect, options });
}
Expand All @@ -255,7 +214,6 @@ export const MasaContextProvider = ({
});

openConnectModal?.();
console.log('OPENING RK MODAL');
} else {
setModalOpen(true);
}
Expand Down Expand Up @@ -306,6 +264,7 @@ export const MasaContextProvider = ({
void loadMasa();
}, [arweaveConfig, environmentName, verbose, currentNetwork, signer]);

if (verbose) console.log('MASA STATE', { greens, soulnames, creditScores });
const context: MasaShape = {
// masa instance
masa: masaInstance,
Expand Down
93 changes: 73 additions & 20 deletions src/provider/modules/credit-scores/credit-scores.ts
Expand Up @@ -2,28 +2,31 @@ import { useCallback, useMemo } from 'react';
import { useQuery } from 'react-query';
import { queryClient } from '../../masa-query-client';
import { ICreditScore, Masa, NetworkName } from '@masa-finance/masa-sdk';
import { BigNumber } from 'ethers';
import { BigNumber, Signer } from 'ethers';

export const useCreditScores = (
masa?: Masa,
walletAddress?: string,
export const getCreditScoresQueryKey = ({
masa,
walletAddress,
}: {
masa?: Masa;
signer?: Signer; // unused
walletAddress?: string; // unused
}) => {
return ['credit-scores', walletAddress, masa?.config.networkName];
};

export const useCreditScoresQuery = ({
masa,
walletAddress,
identity,
}: {
masa?: Masa;
walletAddress?: string;
identity?: {
identityId?: BigNumber;
address?: string;
}
): {
creditScores?:
| {
tokenId: BigNumber;
tokenUri: string;
metadata?: ICreditScore;
}[];
handleCreateCreditScore: () => Promise<boolean | undefined>;
status: string;
isCreditScoresLoading: boolean;
reloadCreditScores: () => void;
error: unknown;
} => {
};
}) => {
const queryKey: (string | NetworkName | undefined)[] = useMemo(() => {
return ['credit-scores', walletAddress, masa?.config.networkName];
}, [walletAddress, masa]);
Expand Down Expand Up @@ -58,19 +61,69 @@ export const useCreditScores = (
},
});

const invalidateCreditScores = useCallback(
async () => await queryClient.invalidateQueries(['credit-scores']),
[]
);

return {
creditScores,
status,
isLoading,
isFetching,
reloadCreditScores,
invalidateCreditScores,
error,
};
};

export type UseCreditScoresReturnType = {
creditScores?:
| {
tokenId: BigNumber;
tokenUri: string;
metadata?: ICreditScore;
}[];
handleCreateCreditScore: () => Promise<boolean | undefined>;
status: string;
isCreditScoresLoading: boolean;
reloadCreditScores: () => void;
invalidateCreditScores: () => void;
error: unknown;
};

export const useCreditScores = (
masa?: Masa,
walletAddress?: string,
identity?: {
identityId?: BigNumber;
address?: string;
}
): UseCreditScoresReturnType => {
const {
creditScores,
status,
isLoading,
isFetching,
reloadCreditScores,
invalidateCreditScores,
error,
} = useCreditScoresQuery({ masa, walletAddress, identity });

const handleCreateCreditScore = useCallback(async (): Promise<
boolean | undefined
> => {
const response = await masa?.creditScore.create();
await queryClient.invalidateQueries(queryKey);
await invalidateCreditScores();
return response?.success;
}, [masa, queryKey]);
}, [masa, invalidateCreditScores]);

return {
creditScores,
isCreditScoresLoading: isLoading || isFetching,
handleCreateCreditScore,
reloadCreditScores,
invalidateCreditScores,
status,
error,
};
Expand Down

0 comments on commit f56f314

Please sign in to comment.