| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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);
- }
- }
- });
|