import { atom } from 'recoil'; import { SettingsViews } from 'librechat-data-provider'; import type { TOptionSettings } from '~/common'; const abortScroll = atom({ key: 'abortScroll', default: false, }); const showFiles = atom({ key: 'showFiles', default: false, }); const optionSettings = atom({ key: 'optionSettings', default: {}, }); const showPluginStoreDialog = atom({ key: 'showPluginStoreDialog', default: false, }); const showAgentSettings = atom({ key: 'showAgentSettings', default: false, }); const currentSettingsView = atom({ key: 'currentSettingsView', default: SettingsViews.default, }); const showBingToneSetting = atom({ key: 'showBingToneSetting', default: false, }); const showPopover = atom({ key: 'showPopover', default: false, }); const autoScroll = atom({ key: 'autoScroll', default: localStorage.getItem('autoScroll') === 'true', effects: [ ({ setSelf, onSet }) => { const savedValue = localStorage.getItem('autoScroll'); if (savedValue != null) { setSelf(savedValue === 'true'); } onSet((newValue: unknown) => { if (typeof newValue === 'boolean') { localStorage.setItem('autoScroll', newValue.toString()); } }); }, ] as const, }); const showCode = atom({ key: 'showCode', default: localStorage.getItem('showCode') === 'true', effects: [ ({ setSelf, onSet }) => { const savedValue = localStorage.getItem('showCode'); if (savedValue != null) { setSelf(savedValue === 'true'); } onSet((newValue: unknown) => { if (typeof newValue === 'boolean') { localStorage.setItem('showCode', newValue.toString()); } }); }, ] as const, }); const hideSidePanel = atom({ key: 'hideSidePanel', default: localStorage.getItem('hideSidePanel') === 'true', effects: [ ({ setSelf, onSet }) => { const savedValue = localStorage.getItem('hideSidePanel'); if (savedValue != null) { setSelf(savedValue === 'true'); } onSet((newValue: unknown) => { if (typeof newValue === 'boolean') { localStorage.setItem('hideSidePanel', newValue.toString()); } }); }, ] as const, }); const modularChat = atom({ key: 'modularChat', default: localStorage.getItem('modularChat') === 'true', effects: [ ({ setSelf, onSet }) => { const savedValue = localStorage.getItem('modularChat'); if (savedValue != null) { setSelf(savedValue === 'true'); } onSet((newValue: unknown) => { if (typeof newValue === 'boolean') { localStorage.setItem('modularChat', newValue.toString()); } }); }, ] as const, }); const LaTeXParsing = atom({ key: 'LaTeXParsing', default: true, effects: [ ({ setSelf, onSet }) => { const savedValue = localStorage.getItem('LaTeXParsing'); if (savedValue != null) { setSelf(savedValue === 'true'); } onSet((newValue: unknown) => { if (typeof newValue === 'boolean') { localStorage.setItem('LaTeXParsing', newValue.toString()); } }); }, ] as const, }); const UsernameDisplay = atom({ key: 'UsernameDisplay', default: localStorage.getItem('UsernameDisplay') === 'true', effects: [ ({ setSelf, onSet }) => { const savedValue = localStorage.getItem('UsernameDisplay'); if (savedValue != null) { setSelf(savedValue === 'true'); } onSet((newValue: unknown) => { if (typeof newValue === 'boolean') { localStorage.setItem('UsernameDisplay', newValue.toString()); } }); }, ] as const, }); const enterToSend = atom({ key: 'enterToSend', default: true, effects: [ ({ setSelf, onSet }) => { const savedValue = localStorage.getItem('enterToSend'); if (savedValue != null) { setSelf(savedValue === 'true'); } onSet((newValue: unknown) => { if (typeof newValue === 'boolean') { localStorage.setItem('enterToSend', newValue.toString()); } }); }, ] as const, }); export default { abortScroll, showFiles, optionSettings, showPluginStoreDialog, showAgentSettings, currentSettingsView, showBingToneSetting, showPopover, autoScroll, enterToSend, showCode, hideSidePanel, modularChat, LaTeXParsing, UsernameDisplay, };