| 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 ?? ''}`) ?? '') || ''); | |