import { defineStore } from 'pinia'; import { localST_RecentAgent } from '../storage'; import { jsonStringify, jsonParse } from '../../utils/utils'; function recentLocalSet(arr) { // 在本地保存记录 const result_str = jsonStringify(arr); localST_RecentAgent.setItem(result_str); } function recentLocalGet() { const result_str = localST_RecentAgent.getItem(); const result_list = jsonParse(result_str); if (result_list === null) { // json解析发生了错误 return []; } else { return result_list; } } /** * 最近使用的Agent列表 * ID * 名称 * 图标 * 简介 * 时间 */ export const useRecentAgentStore = defineStore('recent_agents', { state: () => { return { agents: recentLocalGet() }; }, actions: { /** * 获取所有的记录 * @returns */ getList() { const cur_list = this.agents; if (cur_list.length === 0) { const recent_list = recentLocalGet(); this.agents = recent_list; return this.agents; } return this.agents; }, /** * 新增一条记录 * @param {string} id * @param {string} name * @param {string} icon * @param {string} mode */ addItem(id, name, icon, mode) { /** * 检查是否已经存在,如果已经存在,则将其提到前位 * 如果不存在,则在首位添加记录 */ const item = { id: id, name: name, icon: icon, mode: mode, active_time: Date.now() }; const arr = []; this.agents.forEach((item) => { if (item.id !== id) { arr.push(item); } }); arr.unshift(item); this.agents = arr; recentLocalSet(arr); }, /** * 移除一条记录 * @param {string} id */ removeItem(id) { const arr = []; this.agents.forEach((item) => { if (item.id !== id) { arr.push(item); } }); this.agents = arr; recentLocalSet(arr); } } });