Dev/jchamish/forgotpassword (#4481)

* Implementation of Forgotten Password Reset

* Update webclient/src/hooks/useReduxEffect.tsx

Co-authored-by: Zach H <zahalpern+github@gmail.com>
This commit is contained in:
Joseph Chamish 2021-11-19 21:00:05 -05:00 committed by GitHub
parent 7c27e955d5
commit 73c5956ece
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 447 additions and 7 deletions

View file

@ -0,0 +1 @@
export * from './useReduxEffect';

View file

@ -0,0 +1,47 @@
/**
File is adapted from https://github.com/Qeepsake/use-redux-effect under MIT License
* @author Aspect Apps Limited
* @description
*/
import { useRef, useEffect, DependencyList } from 'react'
import { useStore } from 'react-redux'
import { castArray } from 'lodash'
import { AnyAction } from 'redux'
export type ReduxEffect = (action: AnyAction) => void
/**
* Subscribes to redux store events
*
* @param effect
* @param type
* @param deps
*/
export function useReduxEffect(
effect: ReduxEffect,
type: string | string[],
deps: DependencyList = [],
): void {
const currentValue = useRef(null)
const store = useStore()
const handleChange = (): void => {
const state = store.getState()
const action = state.action
const previousValue = currentValue.current
currentValue.current = action.count
if (
previousValue !== action.count &&
castArray(type).includes(action.type)
) {
effect(action)
}
}
useEffect(() => {
const unsubscribe = store.subscribe(handleChange)
return (): void => unsubscribe()
}, deps)
}