diff --git a/CHANGELOG.md b/CHANGELOG.md index c2d4cf8d13f..ed57f78251a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - added: Register SwapKit V3 as a separate exchange plugin - changed: Manage tokens scene saves changes on explicit save instead of live toggling - changed: Unify split wallet scene titles and add chain-specific descriptions for EVM and UTXO splits +- fixed: Security check notification not reappearing after dismissal ## 4.43.0 (2025-02-09) diff --git a/src/components/services/PasswordReminderService.ts b/src/components/services/PasswordReminderService.ts index c6d501fe0de..db913df1b2e 100644 --- a/src/components/services/PasswordReminderService.ts +++ b/src/components/services/PasswordReminderService.ts @@ -1,51 +1,36 @@ import * as React from 'react' import { setPasswordReminder } from '../../actions/LocalSettingsActions' -import { connect } from '../../types/reactRedux' -import type { PasswordReminder } from '../../types/types' +import { useAsyncEffect } from '../../hooks/useAsyncEffect' +import { + initialState, + type PasswordReminderState +} from '../../reducers/PasswordReminderReducer' +import { useDispatch, useSelector } from '../../types/reactRedux' import { matchJson } from '../../util/matchJson' -import { showError } from './AirshipInstance' -interface StateProps { - settingsLoaded: boolean | null - passwordReminder: PasswordReminder -} -interface DispatchProps { - setPasswordReminder: (passwordReminder: PasswordReminder) => Promise -} -type Props = StateProps & DispatchProps +interface Props {} -class PasswordReminderComponent extends React.PureComponent { - componentDidUpdate(prevProps: Props) { - if ( - this.props.settingsLoaded && - !matchJson(prevProps.passwordReminder, this.props.passwordReminder) - ) { - this.props - .setPasswordReminder(this.props.passwordReminder) - .catch((error: unknown) => { - showError(error) - }) - } - } +export const PasswordReminderService: React.FC = props => { + const settingsLoaded = + useSelector(state => state.ui.settings.settingsLoaded) ?? false + const passwordReminder = useSelector(state => state.ui.passwordReminder) + const lastPasswordReminder = React.useRef(initialState) + const dispatch = useDispatch() - render() { - return null - } -} + useAsyncEffect( + async () => { + if ( + settingsLoaded && + !matchJson(passwordReminder, lastPasswordReminder.current) + ) { + lastPasswordReminder.current = passwordReminder + await dispatch(setPasswordReminder(passwordReminder)) + } + }, + [settingsLoaded, passwordReminder], + 'PasswordReminderService' + ) -export const PasswordReminderService = connect< - StateProps, - DispatchProps, - unknown ->( - state => ({ - settingsLoaded: state.ui.settings.settingsLoaded, - passwordReminder: state.ui.passwordReminder - }), - dispatch => ({ - async setPasswordReminder(passwordReminder: PasswordReminder) { - await dispatch(setPasswordReminder(passwordReminder)) - } - }) -)(PasswordReminderComponent) + return null +}