45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
|
|
// 状态管理(localStorage)
|
|||
|
|
window.ChannelState = {
|
|||
|
|
STORAGE_KEY: 'hololake_channel_state',
|
|||
|
|
|
|||
|
|
// 保存状态
|
|||
|
|
saveState: function(state) {
|
|||
|
|
const data = {
|
|||
|
|
...state,
|
|||
|
|
timestamp: Date.now(),
|
|||
|
|
visited: state.visited || []
|
|||
|
|
};
|
|||
|
|
localStorage.setItem(this.STORAGE_KEY, JSON.stringify(data));
|
|||
|
|
console.log('[state] 保存状态:', data);
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 恢复状态
|
|||
|
|
restoreState: function() {
|
|||
|
|
const saved = localStorage.getItem(this.STORAGE_KEY);
|
|||
|
|
if (!saved) return null;
|
|||
|
|
try {
|
|||
|
|
const state = JSON.parse(saved);
|
|||
|
|
console.log('[state] 恢复状态:', state);
|
|||
|
|
return state;
|
|||
|
|
} catch (e) {
|
|||
|
|
console.error('[state] 解析失败:', e);
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 标记已访问
|
|||
|
|
markVisited: function(channel) {
|
|||
|
|
const state = this.restoreState() || { visited: [] };
|
|||
|
|
if (!state.visited.includes(channel)) {
|
|||
|
|
state.visited.push(channel);
|
|||
|
|
this.saveState(state);
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 清除状态
|
|||
|
|
clearState: function() {
|
|||
|
|
localStorage.removeItem(this.STORAGE_KEY);
|
|||
|
|
console.log('[state] 已清除');
|
|||
|
|
}
|
|||
|
|
};
|