mirror of
https://github.com/vercel/commerce.git
synced 2025-06-30 10:21:22 +00:00
userAvatar
This commit is contained in:
parent
7c70f645cc
commit
573d274b13
@ -52,6 +52,10 @@ type Action =
|
|||||||
type: 'SET_MODAL_VIEW'
|
type: 'SET_MODAL_VIEW'
|
||||||
view: MODAL_VIEWS
|
view: MODAL_VIEWS
|
||||||
}
|
}
|
||||||
|
| {
|
||||||
|
type: 'SET_USER_AVATAR'
|
||||||
|
value: string
|
||||||
|
}
|
||||||
|
|
||||||
type MODAL_VIEWS = 'SIGNUP_VIEW' | 'LOGIN_VIEW' | 'FORGOT_VIEW'
|
type MODAL_VIEWS = 'SIGNUP_VIEW' | 'LOGIN_VIEW' | 'FORGOT_VIEW'
|
||||||
type ToastText = string
|
type ToastText = string
|
||||||
@ -123,6 +127,12 @@ function uiReducer(state: State, action: Action) {
|
|||||||
toastText: action.text,
|
toastText: action.text,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case 'SET_USER_AVATAR': {
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
userAvatar: action.value,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,6 +157,8 @@ export const UIProvider: FC = (props) => {
|
|||||||
const openToast = () => dispatch({ type: 'OPEN_TOAST' })
|
const openToast = () => dispatch({ type: 'OPEN_TOAST' })
|
||||||
const closeToast = () => dispatch({ type: 'CLOSE_TOAST' })
|
const closeToast = () => dispatch({ type: 'CLOSE_TOAST' })
|
||||||
|
|
||||||
|
const setUserAvatar = (value: string) => dispatch({ type: 'SET_USER_AVATAR', value })
|
||||||
|
|
||||||
const setModalView = (view: MODAL_VIEWS) =>
|
const setModalView = (view: MODAL_VIEWS) =>
|
||||||
dispatch({ type: 'SET_MODAL_VIEW', view })
|
dispatch({ type: 'SET_MODAL_VIEW', view })
|
||||||
|
|
||||||
@ -164,6 +176,7 @@ export const UIProvider: FC = (props) => {
|
|||||||
setModalView,
|
setModalView,
|
||||||
openToast,
|
openToast,
|
||||||
closeToast,
|
closeToast,
|
||||||
|
setUserAvatar
|
||||||
}),
|
}),
|
||||||
[state]
|
[state]
|
||||||
)
|
)
|
||||||
|
26
lib/hooks/useUserAvatar.ts
Normal file
26
lib/hooks/useUserAvatar.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import { useEffect } from 'react'
|
||||||
|
import { getRandomPairOfColors } from '@lib/colors'
|
||||||
|
import { useUI } from '@components/ui/context'
|
||||||
|
|
||||||
|
export const useUserAvatar = (name = 'userAvatar') => {
|
||||||
|
const { userAvatar, setUserAvatar } = useUI()
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!userAvatar && localStorage.getItem(name)) {
|
||||||
|
// get bg value locally.
|
||||||
|
setUserAvatar(localStorage.getItem(name))
|
||||||
|
}
|
||||||
|
if (!localStorage.getItem(name)) {
|
||||||
|
// local not set, set.
|
||||||
|
const bg = getRandomPairOfColors()
|
||||||
|
const value = `linear-gradient(140deg, ${bg[0]}, ${bg[1]} 100%)`
|
||||||
|
localStorage.setItem(name, value)
|
||||||
|
setUserAvatar(value)
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
return {
|
||||||
|
userAvatar,
|
||||||
|
setUserAvatar,
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user