/
githubmirror
/
client
Обзор
Документация
Войти
/
githubmirror
/
client
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
shared/settings/use-random-pw.tsx
53 строки
2 KB
chrisnojima-zoom
Version 670 - clean2 (#29122)
08 июн 2026, 19:31
Не верифицирован
08 июн 2026, 19:31
1943197
Код
Авторство
О чём код?
import * as React from 'react' import * as T from '@/constants/types' import {ignorePromise} from '@/constants/utils' import {useEngineActionListener} from '@/engine/action-listener' import logger from '@/logger' import {RPCError} from '@/util/errors' const isRandomPassphraseState = (state: T.RPCGen.PassphraseState) => state === T.RPCGen.PassphraseState.random export const useRandomPWState = () => { const [randomPW, setRandomPW] = React.useState<boolean | undefined>(undefined) const requestVersionRef = React.useRef(0) const reload = React.useCallback(() => { const version = requestVersionRef.current + 1 requestVersionRef.current = version const load = async () => { try { const passphraseState = await T.RPCGen.userLoadPassphraseStateRpcPromise() if (requestVersionRef.current !== version) { return } setRandomPW(isRandomPassphraseState(passphraseState)) } catch (error) { if (!(error instanceof RPCError)) { return } if (requestVersionRef.current !== version) { return } logger.warn('Error loading hasRandomPW:', error.message) } } ignorePromise(load()) }, []) React.useEffect(() => { reload() }, [reload]) useEngineActionListener('keybase.1.NotifyUsers.passwordChanged', action => { requestVersionRef.current += 1 setRandomPW(isRandomPassphraseState(action.payload.params.state)) }) return { loaded: randomPW !== undefined, randomPW, reload, } }