pre-refactor
This commit is contained in:
@@ -9,27 +9,35 @@ const logTabs = [
|
||||
];
|
||||
|
||||
|
||||
async function fetchLog(state, url) {
|
||||
async function fetchLog(state, url, signal) {
|
||||
state.loading = true;
|
||||
state.error = null;
|
||||
try {
|
||||
const res = await fetch(url);
|
||||
const res = await fetch(url, { signal });
|
||||
if (signal?.aborted) return;
|
||||
const text = await res.text();
|
||||
if (signal?.aborted) return;
|
||||
state.lines = text.split('\n').filter(l => l.length > 0);
|
||||
} catch (e) {
|
||||
if (signal?.aborted) return;
|
||||
state.error = String(e);
|
||||
}
|
||||
state.loading = false;
|
||||
state.refreshing = false;
|
||||
}
|
||||
|
||||
export default definePage({
|
||||
init() {
|
||||
return { activeTab: 'journal', lines: [], loading: false, error: null };
|
||||
return { activeTab: 'journal', lines: [], loading: false, refreshing: false, error: null };
|
||||
},
|
||||
subscribe: [],
|
||||
async load(state) {
|
||||
async load(state, abortController, entry) {
|
||||
if (state.lines?.length) state.refreshing = true;
|
||||
else state.loading = true;
|
||||
const myId = entry ? entry.requestId : 0;
|
||||
const tab = logTabs.find(t => t.key === state.activeTab) || logTabs[0];
|
||||
await fetchLog(state, tab.url);
|
||||
await fetchLog(state, tab.url, abortController?.signal);
|
||||
if (abortController?.signal.aborted || (entry && entry.requestId !== myId)) return;
|
||||
},
|
||||
onUnmount(state) {
|
||||
state.lines = [];
|
||||
@@ -65,8 +73,8 @@ export default definePage({
|
||||
}, '\u21BB')
|
||||
),
|
||||
h('div', { class: 'card-body log-body' },
|
||||
state.loading
|
||||
? h('div', { class: 'loading' }, 'Loading...')
|
||||
state.loading && !state.refreshing
|
||||
? h('div', { class: 'loading' }, state.refreshing ? 'Refreshing...' : 'Loading...')
|
||||
: state.error
|
||||
? h('div', { class: 'error-msg' }, state.error)
|
||||
: lineVnodes.length > 0
|
||||
|
||||
Reference in New Issue
Block a user