feat: 首页开发
This commit is contained in:
104
src/renderer/stores/history.js
Normal file
104
src/renderer/stores/history.js
Normal file
@@ -0,0 +1,104 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import { ref } from 'vue';
|
||||
import axios from 'axios';
|
||||
|
||||
export const useHistoryStore = defineStore('history', () => {
|
||||
// State
|
||||
const historyItems = ref([]);
|
||||
const isLoading = ref(false);
|
||||
|
||||
// Getters
|
||||
const getHistoryItems = () => historyItems.value;
|
||||
const getHistoryById = (id) => historyItems.value.find((item) => item.id === id);
|
||||
|
||||
// Actions
|
||||
/**
|
||||
* 加载历史会话列表
|
||||
*/
|
||||
async function loadHistorySessions() {
|
||||
console.log('[historyStore] 开始加载历史会话...');
|
||||
isLoading.value = true;
|
||||
try {
|
||||
const baseUrl = window.__opencodeBaseUrl || 'http://127.0.0.1:4096';
|
||||
console.log('[historyStore] baseUrl:', baseUrl);
|
||||
const response = await axios.get(`${baseUrl}/session`);
|
||||
console.log('[historyStore] 响应数据:', response.data);
|
||||
const sessions = response.data || [];
|
||||
console.log('[historyStore] 会话数量:', sessions.length);
|
||||
|
||||
// 将会话列表转换为历史记录格式
|
||||
historyItems.value = sessions.map((session) => ({
|
||||
id: session.id,
|
||||
name: session.title || `会话 ${session.slug || session.id.slice(0, 8)}...`,
|
||||
slug: session.slug,
|
||||
created: session.time?.created,
|
||||
updated: session.time?.updated,
|
||||
}));
|
||||
console.log('[historyStore] 转换后的历史记录:', historyItems.value);
|
||||
} catch (err) {
|
||||
console.error('[historyStore] 加载历史会话失败:', err);
|
||||
historyItems.value = [];
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空历史记录
|
||||
*/
|
||||
function clearHistory() {
|
||||
historyItems.value = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加单个历史记录项(用于新创建的会话)
|
||||
*/
|
||||
function addHistoryItem(item) {
|
||||
// 检查是否已存在
|
||||
const exists = historyItems.value.find((h) => h.id === item.id);
|
||||
if (!exists) {
|
||||
historyItems.value.unshift({
|
||||
id: item.id,
|
||||
name: item.title || `会话 ${item.slug || item.id.slice(0, 8)}...`,
|
||||
slug: item.slug,
|
||||
created: item.time?.created,
|
||||
updated: item.time?.updated,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建新会话
|
||||
* @param {string} title - 会话标题
|
||||
* @returns {Promise<Object>} 创建的会话对象
|
||||
*/
|
||||
async function createSession(title) {
|
||||
console.log('[historyStore] 创建新会话,title:', title);
|
||||
try {
|
||||
const session = await window.opencode.createSession({ title });
|
||||
console.log('[historyStore] 创建会话成功:', session);
|
||||
|
||||
// 添加到历史记录
|
||||
addHistoryItem(session);
|
||||
|
||||
return session;
|
||||
} catch (err) {
|
||||
console.error('[historyStore] 创建会话失败:', err);
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
// State
|
||||
historyItems,
|
||||
isLoading,
|
||||
// Getters
|
||||
getHistoryItems,
|
||||
getHistoryById,
|
||||
// Actions
|
||||
loadHistorySessions,
|
||||
clearHistory,
|
||||
addHistoryItem,
|
||||
createSession,
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user