/
githubmirror
/
client
Обзор
Документация
Войти
/
githubmirror
/
client
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
shared/chat/conversation/bot/settings.tsx
67 строк
2 KB
chrisnojima-zoom
Version 670 - clean2 (#29122)
08 июн 2026, 19:31
Не верифицирован
08 июн 2026, 19:31
1943197
Код
Авторство
О чём код?
import * as C from '@/constants' import * as React from 'react' import * as T from '@/constants/types' import logger from '@/logger' export const useBotSettings = ( conversationIDKey: T.Chat.ConversationIDKey | undefined, botUsername: string, enabled = true ) => { const [loaded, setLoaded] = React.useState< | { botUsername: string conversationIDKey: T.Chat.ConversationIDKey settings?: T.RPCGen.TeamBotSettings } | undefined >() const loadBotSettings = C.useRPC(T.RPCChat.localGetBotMemberSettingsRpcPromise) const requestIDRef = React.useRef(0) React.useEffect(() => { requestIDRef.current += 1 if (!conversationIDKey || !enabled) { return undefined } const requestID = requestIDRef.current loadBotSettings( [{convID: T.Chat.keyToConversationID(conversationIDKey), username: botUsername}], settings => { if (requestIDRef.current !== requestID) { return } setLoaded({botUsername, conversationIDKey, settings}) }, error => { if (requestIDRef.current !== requestID) { return } logger.info(`useBotSettings: failed to refresh settings for ${botUsername}: ${error.message}`) setLoaded({botUsername, conversationIDKey}) } ) return () => { if (requestIDRef.current === requestID) { requestIDRef.current += 1 } } }, [botUsername, conversationIDKey, enabled, loadBotSettings]) const settings = enabled && loaded && loaded.conversationIDKey === conversationIDKey && loaded.botUsername === botUsername ? loaded.settings : undefined const setSettings = React.useCallback( (settings: T.RPCGen.TeamBotSettings) => { if (conversationIDKey) { setLoaded({botUsername, conversationIDKey, settings}) } }, [botUsername, conversationIDKey] ) return {setSettings, settings} }