61 lines
1.7 KiB
JavaScript
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' });
|
|
}
|
|
});
|