Skip to content
This repository was archived by the owner on Jun 24, 2022. It is now read-only.

switcher added #2013

Merged
merged 15 commits into from
Jan 24, 2022
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion src/custom/components/Settings/SettingsMod.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import styled, { ThemeContext } from 'styled-components/macro'
import { useOnClickOutside } from 'hooks/useOnClickOutside'
import { ApplicationModal } from 'state/application/actions'
import { useModalOpen, useToggleSettingsMenu } from 'state/application/hooks'
import { useExpertModeManager /* , useUserSingleHopOnly */ } from 'state/user/hooks'
import { useExpertModeManager /* , useUserSingleHopOnly */, useRecipientToggleManager } from 'state/user/hooks'
import { TYPE } from 'theme'
import { ButtonError } from 'components/Button'
import { AutoColumn } from 'components/Column'
Expand Down Expand Up @@ -122,6 +122,7 @@ export default function SettingsTab({ className, placeholderSlippage, SettingsBu
const theme = useContext(ThemeContext)

const [expertMode, toggleExpertMode] = useExpertModeManager()
const [recipientToggleVisible, toggleRecipientVisibility] = useRecipientToggleManager()

// const [singleHopOnly, setSingleHopOnly] = useUserSingleHopOnly()

Expand Down Expand Up @@ -223,6 +224,26 @@ export default function SettingsTab({ className, placeholderSlippage, SettingsBu
}
/>
</RowBetween>

<RowBetween>
<RowFixed>
<TYPE.black fontWeight={400} fontSize={14} color={theme.text2}>
<Trans>Toggle Recipient</Trans>
</TYPE.black>
<QuestionHelper
bgColor={theme.bg3}
color={theme.text1}
text={
<Trans>Allow high price impact trades and skip the confirm screen. Use at your own risk.</Trans>
}
/>
</RowFixed>
<Toggle
id="toggle-recipient-mode-button"
isActive={recipientToggleVisible}
toggle={toggleRecipientVisibility}
/>
</RowBetween>
{/* <RowBetween>
<RowFixed>
<TYPE.black fontWeight={400} fontSize={14} color={theme.text2}>
Expand Down
15 changes: 10 additions & 5 deletions src/custom/pages/Swap/SwapMod.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ import {
useHighFeeWarning,
useUnknownImpactWarning,
} from 'state/swap/hooks'
import { useExpertModeManager, useUserSingleHopOnly } from 'state/user/hooks'
import { useExpertModeManager, useRecipientToggleManager, useUserSingleHopOnly } from 'state/user/hooks'
import { /* HideSmall, */ LinkStyledButton, TYPE, ButtonSize } from 'theme'
// import { computeFiatValuePriceImpact } from 'utils/computeFiatValuePriceImpact'
// import { getTradeVersion } from 'utils/getTradeVersion'
Expand Down Expand Up @@ -169,6 +169,8 @@ export default function Swap({
// for expert mode
const [isExpertMode] = useExpertModeManager()

const [recipientToggleVisible] = useRecipientToggleManager()

// get version from the url
// const toggledVersion = useToggledVersion()

Expand Down Expand Up @@ -539,7 +541,7 @@ export default function Swap({
<AffiliateStatusCheck />
<StyledAppBody className={className}>
<SwapHeader allowedSlippage={allowedSlippage} />
<Wrapper id="swap-page" className={isExpertMode ? 'expertMode' : ''}>
<Wrapper id="swap-page" className={isExpertMode || recipientToggleVisible ? 'expertMode' : ''}>
<ConfirmSwapModal
isOpen={showConfirm}
trade={trade}
Expand Down Expand Up @@ -601,13 +603,16 @@ export default function Swap({
</ArrowWrapper>
*/}
{/* GP ARROW SWITCHER */}
<AutoColumn justify="space-between" style={{ margin: `${isExpertMode ? 10 : 3}px 0` }}>
<AutoColumn
justify="space-between"
style={{ margin: `${isExpertMode || recipientToggleVisible ? 10 : 3}px 0` }}
>
<AutoRow
justify={isExpertMode ? 'space-between' : 'center'}
justify={isExpertMode || recipientToggleVisible ? 'space-between' : 'center'}
// style={{ padding: '0 1rem' }}
>
<ArrowWrapperLoader onSwitchTokens={onSwitchTokens} setApprovalSubmitted={setApprovalSubmitted} />
{recipient === null && !showWrap && isExpertMode ? (
{recipient === null && !showWrap && (isExpertMode || recipientToggleVisible) ? (
<LinkStyledButton id="add-recipient-button" onClick={() => onChangeRecipient('')}>
<Trans>+ Add a send (optional)</Trans>
</LinkStyledButton>
Expand Down
2 changes: 2 additions & 0 deletions src/state/user/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ export const updateArbitrumAlphaAcknowledged = createAction<{ arbitrumAlphaAckno
)
export const updateUserDarkMode = createAction<{ userDarkMode: boolean }>('user/updateUserDarkMode')
export const updateUserExpertMode = createAction<{ userExpertMode: boolean }>('user/updateUserExpertMode')
export const updateRecipientToggleVisible =
createAction<{ recipientToggleVisible: boolean }>('user/recipientToggleVisible')
export const updateUserLocale = createAction<{ userLocale: SupportedLocale }>('user/updateUserLocale')
export const updateUserSingleHopOnly = createAction<{ userSingleHopOnly: boolean }>('user/updateUserSingleHopOnly')
export const updateHideClosedPositions = createAction<{ userHideClosedPositions: boolean }>('user/hideClosedPositions')
Expand Down
16 changes: 16 additions & 0 deletions src/state/user/hooks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
SerializedToken,
updateArbitrumAlphaAcknowledged,
updateHideClosedPositions,
updateRecipientToggleVisible,
updateUserDarkMode,
updateUserDeadline,
updateUserExpertMode,
Expand Down Expand Up @@ -104,6 +105,21 @@ export function useExpertModeManager(): [boolean, () => void] {
return [expertMode, toggleSetExpertMode]
}

export function useIsRecipientToggleVisible(): boolean {
return useAppSelector((state) => state.user.recipientToggleVisible)
}

export function useRecipientToggleManager(): [boolean, () => void] {
const dispatch = useAppDispatch()
const recipientToggleVisible = useIsRecipientToggleVisible()

const toggleRecipientVisibility = useCallback(() => {
dispatch(updateRecipientToggleVisible({ recipientToggleVisible: !recipientToggleVisible }))
}, [recipientToggleVisible, dispatch])

return [recipientToggleVisible, toggleRecipientVisibility]
}

export function useUserSingleHopOnly(): [boolean, (newSingleHopOnly: boolean) => void] {
const dispatch = useAppDispatch()

Expand Down
8 changes: 8 additions & 0 deletions src/state/user/reducer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
updateHideClosedPositions,
updateUserLocale,
updateArbitrumAlphaAcknowledged,
updateRecipientToggleVisible,
} from './actions'
import { SupportedLocale } from 'constants/locales'

Expand All @@ -36,6 +37,8 @@ export interface UserState {

userExpertMode: boolean

recipientToggleVisible: boolean

userSingleHopOnly: boolean // only allow swaps on direct pairs

// hides closed (inactive) positions across the app
Expand Down Expand Up @@ -74,6 +77,7 @@ export const initialState: UserState = {
userDarkMode: null,
matchesDarkMode: false,
userExpertMode: false,
recipientToggleVisible: false,
userLocale: null,
userSingleHopOnly: false,
userHideClosedPositions: false,
Expand Down Expand Up @@ -136,6 +140,10 @@ export default createReducer(initialState, (builder) =>
state.userExpertMode = action.payload.userExpertMode
state.timestamp = currentTimestamp()
})
.addCase(updateRecipientToggleVisible, (state, action) => {
state.recipientToggleVisible = action.payload.recipientToggleVisible
state.timestamp = currentTimestamp()
})
.addCase(updateUserLocale, (state, action) => {
state.userLocale = action.payload.userLocale
state.timestamp = currentTimestamp()
Expand Down