From 4f2e5a61231359ee7b1d9527e03e456d30ff2eca Mon Sep 17 00:00:00 2001 From: lelenei Date: Thu, 13 Jan 2022 11:50:58 +0800 Subject: [PATCH 1/6] fix: gun2 save failure handling --- .../mask/src/plugins/Avatar/Services/gun.ts | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/packages/mask/src/plugins/Avatar/Services/gun.ts b/packages/mask/src/plugins/Avatar/Services/gun.ts index 8397eeba4150..e34e7381249d 100644 --- a/packages/mask/src/plugins/Avatar/Services/gun.ts +++ b/packages/mask/src/plugins/Avatar/Services/gun.ts @@ -21,19 +21,26 @@ export async function getUserAddress(userId: string) { } export async function setUserAddress(userId: string, address: string) { - // delete userId - await NFTAvatarGUN - //@ts-expect-error - .get(userId) - //@ts-expect-error - .put(null).then!() - - // save userId - await NFTAvatarGUN - // @ts-expect-error - .get(userId) - // @ts-expect-error - .put(address).then!() + try { + // delete userId + await NFTAvatarGUN + //@ts-expect-error + .get(userId) + //@ts-expect-error + .put(null).then!() + + // save userId + await NFTAvatarGUN + // @ts-expect-error + .get(userId) + // @ts-expect-error + .put(address).then!() + + const address = await getUserAddress(userId) + if (!address) throw new Error('Save Error !!!') + } catch { + throw new Error('Save Error!!!') + } } export async function getUserAddresses() { From 4526d2d342748a107d89e5a75b9b0f1ecbdcf273 Mon Sep 17 00:00:00 2001 From: lelenei Date: Thu, 13 Jan 2022 12:17:43 +0800 Subject: [PATCH 2/6] fix: reply review --- packages/mask/src/plugins/Avatar/Services/gun.ts | 4 ++-- packages/mask/src/plugins/Avatar/Services/rss3.ts | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/mask/src/plugins/Avatar/Services/gun.ts b/packages/mask/src/plugins/Avatar/Services/gun.ts index e34e7381249d..ada9fa6f4f83 100644 --- a/packages/mask/src/plugins/Avatar/Services/gun.ts +++ b/packages/mask/src/plugins/Avatar/Services/gun.ts @@ -37,9 +37,9 @@ export async function setUserAddress(userId: string, address: string) { .put(address).then!() const address = await getUserAddress(userId) - if (!address) throw new Error('Save Error !!!') + if (!address) throw new Error('Something went wrong, and please check your connection.') } catch { - throw new Error('Save Error!!!') + throw new Error('Something went wrong, and please check your connection.') } } diff --git a/packages/mask/src/plugins/Avatar/Services/rss3.ts b/packages/mask/src/plugins/Avatar/Services/rss3.ts index 5c23bd5af209..2f549129fbe5 100644 --- a/packages/mask/src/plugins/Avatar/Services/rss3.ts +++ b/packages/mask/src/plugins/Avatar/Services/rss3.ts @@ -79,8 +79,11 @@ export async function saveNFTAvatarToRSS(address: string, nft: AvatarMetaDB, sig nft, } } - - await RSS3.setFileData(rss, address, '_nfts', _nfts) + try { + await RSS3.setFileData(rss, address, '_nfts', _nfts) + } catch { + throw new Error('Something went wrong, and please check your connection.') + } // clear cache if (cache.has(address)) cache.delete(address) From 6349bbd20e3b415fe21de71eb0d9181b422283a3 Mon Sep 17 00:00:00 2001 From: lelenei Date: Thu, 13 Jan 2022 13:07:18 +0800 Subject: [PATCH 3/6] fix: reply review --- packages/mask/src/plugins/Avatar/Services/gun.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/mask/src/plugins/Avatar/Services/gun.ts b/packages/mask/src/plugins/Avatar/Services/gun.ts index ada9fa6f4f83..1a10e38b4562 100644 --- a/packages/mask/src/plugins/Avatar/Services/gun.ts +++ b/packages/mask/src/plugins/Avatar/Services/gun.ts @@ -37,10 +37,9 @@ export async function setUserAddress(userId: string, address: string) { .put(address).then!() const address = await getUserAddress(userId) - if (!address) throw new Error('Something went wrong, and please check your connection.') - } catch { - throw new Error('Something went wrong, and please check your connection.') - } + if (address) return + } catch {} + throw new Error('Something went wrong, and please check your connection.') } export async function getUserAddresses() { From 74334cfff5ade38fdb53c3fda8f24404b1ae0503 Mon Sep 17 00:00:00 2001 From: lelenei Date: Thu, 13 Jan 2022 13:32:16 +0800 Subject: [PATCH 4/6] chore: add exception handling --- packages/mask/src/plugins/Avatar/Services/rss3.ts | 10 +++++++--- .../twitter.com/injection/NFT/NFTAvatarInTwitter.tsx | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/mask/src/plugins/Avatar/Services/rss3.ts b/packages/mask/src/plugins/Avatar/Services/rss3.ts index 2f549129fbe5..eba8fcff629b 100644 --- a/packages/mask/src/plugins/Avatar/Services/rss3.ts +++ b/packages/mask/src/plugins/Avatar/Services/rss3.ts @@ -35,9 +35,13 @@ export async function getNFTAvatarFromRSS(userId: string, address: string) { nft = nfts as NFTRSSNode } - const sig_address = web3.eth.accounts.recover(nft.nft.userId, nft.signature) - if (!isSameAddress(sig_address, address)) return - return nft.nft + try { + const sig_address = web3.eth.accounts.recover(nft.nft.userId, nft.signature) + if (!isSameAddress(sig_address, address)) return + return nft.nft + } catch { + throw new Error('Failed to recover signature, and please check your connection.') + } } async function _getNFTAvatarFromRSS( diff --git a/packages/mask/src/social-network-adaptor/twitter.com/injection/NFT/NFTAvatarInTwitter.tsx b/packages/mask/src/social-network-adaptor/twitter.com/injection/NFT/NFTAvatarInTwitter.tsx index e56fed2ab7a4..34850160d6d8 100644 --- a/packages/mask/src/social-network-adaptor/twitter.com/injection/NFT/NFTAvatarInTwitter.tsx +++ b/packages/mask/src/social-network-adaptor/twitter.com/injection/NFT/NFTAvatarInTwitter.tsx @@ -71,6 +71,7 @@ function NFTAvatarInTwitter() { setNFTEvent(data) } + // After the avatar is set, it cannot be saved immediately, and must wait until the avatar of twitter is updated useAsync(async () => { if (!wallet || !NFTAvatar) return From 83f824f938a346096841456e82a57443ade93905 Mon Sep 17 00:00:00 2001 From: lelenei Date: Fri, 14 Jan 2022 10:39:26 +0800 Subject: [PATCH 5/6] fix: reply review --- packages/mask/src/plugins/Avatar/Services/gun.ts | 11 ++++++----- packages/mask/src/plugins/Avatar/Services/rss3.ts | 9 +++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/mask/src/plugins/Avatar/Services/gun.ts b/packages/mask/src/plugins/Avatar/Services/gun.ts index 1a10e38b4562..7d5ade983f70 100644 --- a/packages/mask/src/plugins/Avatar/Services/gun.ts +++ b/packages/mask/src/plugins/Avatar/Services/gun.ts @@ -1,4 +1,5 @@ import { delay } from '@masknet/shared-base' +import { isSameAddress } from '@masknet/web3-shared-evm' import { gun2 } from '../../../network/gun/version.2' import { NFT_AVATAR_GUN_SERVER } from '../constants' @@ -35,11 +36,11 @@ export async function setUserAddress(userId: string, address: string) { .get(userId) // @ts-expect-error .put(address).then!() - - const address = await getUserAddress(userId) - if (address) return - } catch {} - throw new Error('Something went wrong, and please check your connection.') + } catch { + throw new Error('Something went wrong, and please check your connection.') + } + const _address = await getUserAddress(userId) + if (!isSameAddress(_address, address)) throw new Error('gun2 is not able to save the address correctly') } export async function getUserAddresses() { diff --git a/packages/mask/src/plugins/Avatar/Services/rss3.ts b/packages/mask/src/plugins/Avatar/Services/rss3.ts index eba8fcff629b..552200519e40 100644 --- a/packages/mask/src/plugins/Avatar/Services/rss3.ts +++ b/packages/mask/src/plugins/Avatar/Services/rss3.ts @@ -40,7 +40,7 @@ export async function getNFTAvatarFromRSS(userId: string, address: string) { if (!isSameAddress(sig_address, address)) return return nft.nft } catch { - throw new Error('Failed to recover signature, and please check your connection.') + throw new Error('Failed to recover signature.') } } @@ -83,11 +83,8 @@ export async function saveNFTAvatarToRSS(address: string, nft: AvatarMetaDB, sig nft, } } - try { - await RSS3.setFileData(rss, address, '_nfts', _nfts) - } catch { - throw new Error('Something went wrong, and please check your connection.') - } + + await RSS3.setFileData(rss, address, '_nfts', _nfts) // clear cache if (cache.has(address)) cache.delete(address) From 24676e740bf6b3de34657d8c3cb352433f426fc0 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Fri, 14 Jan 2022 11:55:37 +0800 Subject: [PATCH 6/6] refactor: move valdiation into final --- packages/mask/src/plugins/Avatar/Services/gun.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/mask/src/plugins/Avatar/Services/gun.ts b/packages/mask/src/plugins/Avatar/Services/gun.ts index 7d5ade983f70..11b40c12d67c 100644 --- a/packages/mask/src/plugins/Avatar/Services/gun.ts +++ b/packages/mask/src/plugins/Avatar/Services/gun.ts @@ -37,10 +37,12 @@ export async function setUserAddress(userId: string, address: string) { // @ts-expect-error .put(address).then!() } catch { - throw new Error('Something went wrong, and please check your connection.') + // do nothing + } finally { + const _address = await getUserAddress(userId) + if (!isSameAddress(_address, address)) + throw new Error('Something went wrong, and please check your connection.') } - const _address = await getUserAddress(userId) - if (!isSameAddress(_address, address)) throw new Error('gun2 is not able to save the address correctly') } export async function getUserAddresses() {