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