import * as Tabs from '@radix-ui/react-tabs'; import { useRevokeAllUserKeysMutation, useRevokeUserKeyMutation } from 'librechat-data-provider'; import React, { useState, useCallback, useRef } from 'react'; import { useOnClickOutside } from '~/hooks'; import DangerButton from './DangerButton'; export const RevokeKeysButton = ({ showText = true, endpoint = '', all = false, disabled = false, }: { showText?: boolean; endpoint?: string; all?: boolean; disabled?: boolean; }) => { const [confirmClear, setConfirmClear] = useState(false); const revokeKeyMutation = useRevokeUserKeyMutation(endpoint); const revokeKeysMutation = useRevokeAllUserKeysMutation(); const contentRef = useRef(null); useOnClickOutside(contentRef, () => confirmClear && setConfirmClear(false), []); const revokeAllUserKeys = useCallback(() => { if (confirmClear) { revokeKeysMutation.mutate({}); setConfirmClear(false); } else { setConfirmClear(true); } }, [confirmClear, revokeKeysMutation]); const revokeUserKey = useCallback(() => { if (!endpoint) { return; } else if (confirmClear) { revokeKeyMutation.mutate({}); setConfirmClear(false); } else { setConfirmClear(true); } }, [confirmClear, revokeKeyMutation, endpoint]); const onClick = all ? revokeAllUserKeys : revokeUserKey; return ( ); }; function Data() { return (
); } export default React.memo(Data);