diff options
Diffstat (limited to 'src/api/logs.ts')
| -rw-r--r-- | src/api/logs.ts | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/api/logs.ts b/src/api/logs.ts index 53bb8ad..66989ce 100644 --- a/src/api/logs.ts +++ b/src/api/logs.ts @@ -1,6 +1,5 @@ import { pad0 } from '~/misc/utils'; -import { Log } from '~/store/types'; -import { LogsAPIConfig } from '~/types'; +import { Log, LogsAPIConfig } from '~/types'; import { buildLogsWebSocketURL, getURLAndInit } from '../misc/request-helper'; @@ -21,8 +20,8 @@ const getRandomStr = () => { let even = false; let decoded = ''; -let ws: WebSocket; -let controller: AbortController; +let ws: WebSocket | undefined; +let controller: AbortController | undefined; let usingFetchFallback = false; let currentConnStr: string; @@ -41,7 +40,6 @@ function appendData(s: string) { try { o = JSON.parse(s); } catch (err) { - console.log('JSON.parse error', s); return; } @@ -65,7 +63,7 @@ function formatDate(d: Date) { return `${YY}-${MM}-${dd} ${HH}:${mm}:${ss}`; } -function pump(reader: ReadableStreamDefaultReader) { +function pump(reader: ReadableStreamDefaultReader): Promise<void> { return reader.read().then(({ done, value }) => { const str = textDecoder.decode(value, { stream: !done }); decoded += str; @@ -82,7 +80,6 @@ function pump(reader: ReadableStreamDefaultReader) { appendData(lastSplit); decoded = ''; - console.log('GET /logs streaming done'); usingFetchFallback = false; return; @@ -97,7 +94,7 @@ function pump(reader: ReadableStreamDefaultReader) { function makeConnStr(c: LogsAPIConfig) { const keys = Object.keys(c); keys.sort(); - return keys.map((k) => c[k]).join('|'); + return keys.map((k) => c[k as keyof LogsAPIConfig]).join('|'); } function isConnectionLive() { @@ -139,7 +136,7 @@ function openConnection(apiConfig: LogsAPIConfig) { export function fetchLogs( apiConfig: LogsAPIConfig, - appendLog: AppendLogFn + appendLog: AppendLogFn, ): UnsubscribeFn | undefined { if (apiConfig.logLevel === 'uninit') return undefined; @@ -179,14 +176,16 @@ function fetchLogsWithFetch(apiConfig: LogsAPIConfig) { signal, }).then( (response) => { - const reader = response.body.getReader(); - pump(reader); + if (!response.body) { + usingFetchFallback = false; + return; + } + pump(response.body.getReader()); }, (err) => { usingFetchFallback = false; if (signal.aborted) return; - console.log('GET /logs error:', err.message); }, ); |
