Files
memind/miniapp/pages/sessions/index.js

61 lines
1.7 KiB
JavaScript

const { checkAuth, listSessions } = require('../../utils/api');
const { SELECTED_SESSION_KEY } = require('../../utils/config');
function formatTime(value) {
const timestamp = Number(value || 0);
if (!timestamp) return '';
const date = new Date(timestamp < 10_000_000_000 ? timestamp * 1000 : timestamp);
return `${date.getMonth() + 1}/${date.getDate()} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`;
}
Page({
data: {
sessions: [],
loading: false,
error: ''
},
onShow() {
this.ensureAndLoad();
},
async ensureAndLoad() {
try {
const status = await checkAuth();
if (!status?.authenticated) {
wx.redirectTo({ url: '/pages/login/index' });
return;
}
await this.loadSessions();
} catch {
wx.redirectTo({ url: '/pages/login/index' });
}
},
async loadSessions() {
this.setData({ loading: true, error: '' });
try {
const result = await listSessions({ limit: 30 });
const rows = result?.sessions || result?.data || result?.items || [];
this.setData({
sessions: rows.map((item) => ({
...item,
id: item.id || item.sessionId,
updatedAtText: formatTime(item.updatedAt || item.updated_at || item.created || item.createdAt)
}))
});
} catch (error) {
this.setData({ error: error?.message || '会话加载失败' });
} finally {
this.setData({ loading: false });
}
},
openSession(event) {
const id = event.currentTarget.dataset.id;
if (!id) return;
wx.setStorageSync(SELECTED_SESSION_KEY, id);
wx.switchTab({ url: '/pages/chat/index' });
}
});