import debounce from 'lodash/debounce'; import { LocalStorageKeys } from 'librechat-data-provider'; export const clearDraft = debounce((id?: string | null) => { localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${id ?? ''}`); }, 2500); export const encodeBase64 = (plainText: string): string => { try { const textBytes = new TextEncoder().encode(plainText); return btoa(String.fromCharCode(...textBytes)); } catch { return ''; } }; export const decodeBase64 = (base64String: string): string => { try { const bytes = atob(base64String); const uint8Array = new Uint8Array(bytes.length); for (let i = 0; i < bytes.length; i++) { uint8Array[i] = bytes.charCodeAt(i); } return new TextDecoder().decode(uint8Array); } catch { return ''; } }; export const setDraft = ({ id, value }: { id: string; value?: string }) => { if (value && value.length > 1) { localStorage.setItem(`${LocalStorageKeys.TEXT_DRAFT}${id}`, encodeBase64(value)); return; } localStorage.removeItem(`${LocalStorageKeys.TEXT_DRAFT}${id}`); }; export const getDraft = (id?: string): string | null => decodeBase64((localStorage.getItem(`${LocalStorageKeys.TEXT_DRAFT}${id ?? ''}`) ?? '') || '');