reset skin when switching to wallet without nft

This commit is contained in:
saml33 2023-09-15 23:08:02 +10:00
parent 9875dab62b
commit b0d8d6bb9d
3 changed files with 27 additions and 2 deletions

View File

@ -39,13 +39,16 @@ import { SIDEBAR_COLLAPSE_KEY } from 'utils/constants'
import { createTransferInstruction } from '@solana/spl-token'
import { PublicKey, TransactionInstruction } from '@solana/web3.js'
const set = mangoStore.getState().set
const SideNav = ({ collapsed }: { collapsed: boolean }) => {
const { t } = useTranslation(['common', 'search'])
const { connected, publicKey } = useWallet()
const { theme } = useTheme()
const { theme, setTheme } = useTheme()
const group = mangoStore.getState().group
const themeData = mangoStore((s) => s.themeData)
const nfts = mangoStore((s) => s.wallet.nfts.data)
const loadingNfts = mangoStore((s) => s.wallet.nfts.initialLoad)
const { mangoAccount } = useMangoAccount()
const setPrependedGlobalAdditionalInstructions = mangoStore(
(s) => s.actions.setPrependedGlobalAdditionalInstructions,
@ -72,6 +75,9 @@ const SideNav = ({ collapsed }: { collapsed: boolean }) => {
// fetch nfts when pk changes
useEffect(() => {
if (publicKey) {
set((state) => {
state.wallet.nfts.initialLoad = true
})
const actions = mangoStore.getState().actions
const connection = mangoStore.getState().connection
actions.fetchNfts(connection, publicKey)
@ -131,6 +137,19 @@ const SideNav = ({ collapsed }: { collapsed: boolean }) => {
return themeData.sideImagePath
}, [mangoNfts, theme, themeData])
// change theme if switching to wallet without nft
useEffect(() => {
if (loadingNfts || !theme) return
if (theme.toLowerCase() in CUSTOM_SKINS) {
const hasSkin = mangoNfts.find(
(nft) => nft.collectionAddress === CUSTOM_SKINS[theme.toLowerCase()],
)
if (!hasSkin) {
setTheme(t('settings:mango-classic'))
}
}
}, [loadingNfts, mangoNfts, publicKey, theme])
return (
<div
className={`transition-all duration-${sideBarAnimationDuration} ${

View File

@ -207,7 +207,7 @@ const TopBar = () => {
className="mr-4"
>{`${t('deposit')} / ${t('withdraw')}`}</Button>
)}
<div className="h-[63px]">
<div className="h-[63px] bg-th-bkg-1">
<button
className={TOPBAR_ICON_BUTTON_CLASSES}
onClick={() => setShowSettingsModal(true)}

View File

@ -261,6 +261,7 @@ export type MangoStore = {
tokens: TokenAccount[]
nfts: {
data: NFT[] | []
initialLoad: boolean
loading: boolean
}
}
@ -440,6 +441,7 @@ const mangoStore = create<MangoStore>()(
nfts: {
data: [],
loading: false,
initialLoad: true,
},
},
window: {
@ -728,8 +730,12 @@ const mangoStore = create<MangoStore>()(
} catch (error) {
console.warn('Error: unable to fetch nfts.', error)
} finally {
const notLoaded = mangoStore.getState().wallet.nfts.initialLoad
set((state) => {
state.wallet.nfts.loading = false
if (notLoaded) {
state.wallet.nfts.initialLoad = false
}
})
}
},