Commit 62361647 authored by Vignesh Mohankumar's avatar Vignesh Mohankumar Committed by GitHub

fix: use localStorage for Fiat announcement (#5750)

* fix: use localStorage for Fiat announcement

* move to redux

* rm locally

* lint

* add change to hook

* fixes
parent deee2784
...@@ -3,11 +3,13 @@ import { useWeb3React } from '@web3-react/core' ...@@ -3,11 +3,13 @@ import { useWeb3React } from '@web3-react/core'
import fiatMaskUrl from 'assets/svg/fiat_mask.svg' import fiatMaskUrl from 'assets/svg/fiat_mask.svg'
import { BaseVariant } from 'featureFlags' import { BaseVariant } from 'featureFlags'
import { useFiatOnrampFlag } from 'featureFlags/flags/fiatOnramp' import { useFiatOnrampFlag } from 'featureFlags/flags/fiatOnramp'
import { useCallback, useEffect, useState } from 'react' import { useCallback, useEffect } from 'react'
import { X } from 'react-feather' import { X } from 'react-feather'
import { useDispatch } from 'react-redux'
import { useToggleWalletDropdown } from 'state/application/hooks' import { useToggleWalletDropdown } from 'state/application/hooks'
import { useAppSelector } from 'state/hooks' import { useAppSelector } from 'state/hooks'
import { useFiatOnrampAck } from 'state/user/hooks' import { useFiatOnrampAck } from 'state/user/hooks'
import { dismissFiatOnramp } from 'state/user/reducer'
import styled from 'styled-components/macro' import styled from 'styled-components/macro'
import { ThemedText } from 'theme' import { ThemedText } from 'theme'
import { isMobile } from 'utils/userAgent' import { isMobile } from 'utils/userAgent'
...@@ -91,25 +93,22 @@ const Body = styled(ThemedText.BodySmall)` ...@@ -91,25 +93,22 @@ const Body = styled(ThemedText.BodySmall)`
position: relative; position: relative;
` `
const ANNOUNCEMENT_RENDERED = 'FiatOnrampAnnouncement-rendered'
const ANNOUNCEMENT_DISMISSED = 'FiatOnrampAnnouncement-dismissed'
const MAX_RENDER_COUNT = 3 const MAX_RENDER_COUNT = 3
export function FiatOnrampAnnouncement() { export function FiatOnrampAnnouncement() {
const { account } = useWeb3React() const { account } = useWeb3React()
const [acks, acknowledge] = useFiatOnrampAck() const [acks, acknowledge] = useFiatOnrampAck()
const [locallyDismissed, setLocallyDismissed] = useState(false) const fiatOnrampDismissed = useAppSelector((state) => state.user.fiatOnrampDismissed)
useEffect(() => { useEffect(() => {
if (!sessionStorage.getItem(ANNOUNCEMENT_RENDERED)) {
acknowledge({ renderCount: acks?.renderCount + 1 }) acknowledge({ renderCount: acks?.renderCount + 1 })
sessionStorage.setItem(ANNOUNCEMENT_RENDERED, 'true') // The dependency list is empty so this is only run once on mount
} }, []) // eslint-disable-line react-hooks/exhaustive-deps
}, [acknowledge, acks])
const dispatch = useDispatch()
const handleClose = useCallback(() => { const handleClose = useCallback(() => {
setLocallyDismissed(true) dispatch(dismissFiatOnramp())
sessionStorage.setItem(ANNOUNCEMENT_DISMISSED, 'true') }, [dispatch])
}, [])
const toggleWalletDropdown = useToggleWalletDropdown() const toggleWalletDropdown = useToggleWalletDropdown()
const handleClick = useCallback(() => { const handleClick = useCallback(() => {
...@@ -124,8 +123,7 @@ export function FiatOnrampAnnouncement() { ...@@ -124,8 +123,7 @@ export function FiatOnrampAnnouncement() {
!account || !account ||
acks?.user || acks?.user ||
fiatOnrampFlag === BaseVariant.Control || fiatOnrampFlag === BaseVariant.Control ||
locallyDismissed || fiatOnrampDismissed ||
sessionStorage.getItem(ANNOUNCEMENT_DISMISSED) ||
acks?.renderCount >= MAX_RENDER_COUNT || acks?.renderCount >= MAX_RENDER_COUNT ||
isMobile || isMobile ||
openModal !== null openModal !== null
......
...@@ -10,6 +10,7 @@ const currentTimestamp = () => new Date().getTime() ...@@ -10,6 +10,7 @@ const currentTimestamp = () => new Date().getTime()
export interface UserState { export interface UserState {
fiatOnrampAcknowledgments: { renderCount: number; system: boolean; user: boolean } fiatOnrampAcknowledgments: { renderCount: number; system: boolean; user: boolean }
fiatOnrampDismissed: boolean
selectedWallet?: ConnectionType selectedWallet?: ConnectionType
...@@ -61,6 +62,8 @@ function pairKey(token0Address: string, token1Address: string) { ...@@ -61,6 +62,8 @@ function pairKey(token0Address: string, token1Address: string) {
export const initialState: UserState = { export const initialState: UserState = {
fiatOnrampAcknowledgments: { renderCount: 0, system: false, user: false }, fiatOnrampAcknowledgments: { renderCount: 0, system: false, user: false },
fiatOnrampDismissed: false,
selectedWallet: undefined, selectedWallet: undefined,
matchesDarkMode: false, matchesDarkMode: false,
userDarkMode: null, userDarkMode: null,
...@@ -88,6 +91,9 @@ const userSlice = createSlice({ ...@@ -88,6 +91,9 @@ const userSlice = createSlice({
) { ) {
state.fiatOnrampAcknowledgments = { ...state.fiatOnrampAcknowledgments, ...payload } state.fiatOnrampAcknowledgments = { ...state.fiatOnrampAcknowledgments, ...payload }
}, },
dismissFiatOnramp(state) {
state.fiatOnrampDismissed = true
},
updateSelectedWallet(state, { payload: { wallet } }) { updateSelectedWallet(state, { payload: { wallet } }) {
state.selectedWallet = wallet state.selectedWallet = wallet
}, },
...@@ -182,6 +188,7 @@ export const { ...@@ -182,6 +188,7 @@ export const {
addSerializedPair, addSerializedPair,
addSerializedToken, addSerializedToken,
updateFiatOnrampAcknowledgments, updateFiatOnrampAcknowledgments,
dismissFiatOnramp,
updateSelectedWallet, updateSelectedWallet,
updateHideClosedPositions, updateHideClosedPositions,
updateMatchesDarkMode, updateMatchesDarkMode,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment