| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import { |
| | STORAGE_KEYS, |
| | DEFAULT_CONFIG, |
| | } from '../../constants/playground.constants'; |
| |
|
| | const MESSAGES_STORAGE_KEY = 'playground_messages'; |
| |
|
| | |
| | |
| | |
| | |
| | export const saveConfig = (config) => { |
| | try { |
| | const configToSave = { |
| | ...config, |
| | timestamp: new Date().toISOString(), |
| | }; |
| | localStorage.setItem(STORAGE_KEYS.CONFIG, JSON.stringify(configToSave)); |
| | } catch (error) { |
| | console.error('保存配置失败:', error); |
| | } |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | export const saveMessages = (messages) => { |
| | try { |
| | const messagesToSave = { |
| | messages, |
| | timestamp: new Date().toISOString(), |
| | }; |
| | localStorage.setItem(STORAGE_KEYS.MESSAGES, JSON.stringify(messagesToSave)); |
| | } catch (error) { |
| | console.error('保存消息失败:', error); |
| | } |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | export const loadConfig = () => { |
| | try { |
| | const savedConfig = localStorage.getItem(STORAGE_KEYS.CONFIG); |
| | if (savedConfig) { |
| | const parsedConfig = JSON.parse(savedConfig); |
| |
|
| | const mergedConfig = { |
| | inputs: { |
| | ...DEFAULT_CONFIG.inputs, |
| | ...parsedConfig.inputs, |
| | }, |
| | parameterEnabled: { |
| | ...DEFAULT_CONFIG.parameterEnabled, |
| | ...parsedConfig.parameterEnabled, |
| | }, |
| | showDebugPanel: |
| | parsedConfig.showDebugPanel || DEFAULT_CONFIG.showDebugPanel, |
| | customRequestMode: |
| | parsedConfig.customRequestMode || DEFAULT_CONFIG.customRequestMode, |
| | customRequestBody: |
| | parsedConfig.customRequestBody || DEFAULT_CONFIG.customRequestBody, |
| | }; |
| |
|
| | return mergedConfig; |
| | } |
| | } catch (error) { |
| | console.error('加载配置失败:', error); |
| | } |
| |
|
| | return DEFAULT_CONFIG; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | export const loadMessages = () => { |
| | try { |
| | const savedMessages = localStorage.getItem(STORAGE_KEYS.MESSAGES); |
| | if (savedMessages) { |
| | const parsedMessages = JSON.parse(savedMessages); |
| | return parsedMessages.messages || null; |
| | } |
| | } catch (error) { |
| | console.error('加载消息失败:', error); |
| | } |
| |
|
| | return null; |
| | }; |
| |
|
| | |
| | |
| | |
| | export const clearConfig = () => { |
| | try { |
| | localStorage.removeItem(STORAGE_KEYS.CONFIG); |
| | localStorage.removeItem(STORAGE_KEYS.MESSAGES); |
| | } catch (error) { |
| | console.error('清除配置失败:', error); |
| | } |
| | }; |
| |
|
| | |
| | |
| | |
| | export const clearMessages = () => { |
| | try { |
| | localStorage.removeItem(STORAGE_KEYS.MESSAGES); |
| | } catch (error) { |
| | console.error('清除消息失败:', error); |
| | } |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | export const hasStoredConfig = () => { |
| | try { |
| | return localStorage.getItem(STORAGE_KEYS.CONFIG) !== null; |
| | } catch (error) { |
| | console.error('检查配置失败:', error); |
| | return false; |
| | } |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | export const getConfigTimestamp = () => { |
| | try { |
| | const savedConfig = localStorage.getItem(STORAGE_KEYS.CONFIG); |
| | if (savedConfig) { |
| | const parsedConfig = JSON.parse(savedConfig); |
| | return parsedConfig.timestamp || null; |
| | } |
| | } catch (error) { |
| | console.error('获取配置时间戳失败:', error); |
| | } |
| | return null; |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | export const exportConfig = (config, messages = null) => { |
| | try { |
| | const configToExport = { |
| | ...config, |
| | messages: messages || loadMessages(), |
| | exportTime: new Date().toISOString(), |
| | version: '1.0', |
| | }; |
| |
|
| | const dataStr = JSON.stringify(configToExport, null, 2); |
| | const dataBlob = new Blob([dataStr], { type: 'application/json' }); |
| |
|
| | const link = document.createElement('a'); |
| | link.href = URL.createObjectURL(dataBlob); |
| | link.download = `playground-config-${new Date().toISOString().split('T')[0]}.json`; |
| | link.click(); |
| |
|
| | URL.revokeObjectURL(link.href); |
| | } catch (error) { |
| | console.error('导出配置失败:', error); |
| | } |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | export const importConfig = (file) => { |
| | return new Promise((resolve, reject) => { |
| | try { |
| | const reader = new FileReader(); |
| | reader.onload = (e) => { |
| | try { |
| | const importedConfig = JSON.parse(e.target.result); |
| |
|
| | if (importedConfig.inputs && importedConfig.parameterEnabled) { |
| | |
| | if ( |
| | importedConfig.messages && |
| | Array.isArray(importedConfig.messages) |
| | ) { |
| | saveMessages(importedConfig.messages); |
| | } |
| |
|
| | resolve(importedConfig); |
| | } else { |
| | reject(new Error('配置文件格式无效')); |
| | } |
| | } catch (parseError) { |
| | reject(new Error('解析配置文件失败: ' + parseError.message)); |
| | } |
| | }; |
| | reader.onerror = () => reject(new Error('读取文件失败')); |
| | reader.readAsText(file); |
| | } catch (error) { |
| | reject(new Error('导入配置失败: ' + error.message)); |
| | } |
| | }); |
| | }; |
| |
|