From 50df853ca8079eaa1924616088c210ce7307946e Mon Sep 17 00:00:00 2001 From: orfelorfel23 Date: Mon, 1 Jun 2026 10:22:52 +0200 Subject: [PATCH] Fix writeQueue ReferenceError in logger.ts --- src/services/logger.ts | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/services/logger.ts b/src/services/logger.ts index 20ea34d2..ae0c0d4a 100644 --- a/src/services/logger.ts +++ b/src/services/logger.ts @@ -35,6 +35,12 @@ const processLogQueue = async () => { isWriting = false; }; +const waitForQueueDrain = async () => { + while (isWriting || logQueue.length > 0) { + await new Promise(resolve => setTimeout(resolve, 50)); + } +}; + const enqueueWrite = async (logLine: string) => { logQueue.push(logLine); processLogQueue(); // Intentionally unawaited to run in background @@ -68,24 +74,32 @@ export const logger = { readLogs: async (): Promise => { try { - // Ensure we wait for pending writes before reading - await writeQueue; - const fileInfo = await FileSystem.getInfoAsync(logFileUri); - if (!fileInfo.exists) return 'Keine Logs vorhanden.'; - return await FileSystem.readAsStringAsync(logFileUri, { encoding: FileSystem.EncodingType.UTF8 }); + // Wait for pending writes to finish + await waitForQueueDrain(); + isWriting = true; // lock the queue while reading + try { + const fileInfo = await FileSystem.getInfoAsync(logFileUri); + if (!fileInfo.exists) return 'Keine Logs vorhanden.'; + return await FileSystem.readAsStringAsync(logFileUri, { encoding: FileSystem.EncodingType.UTF8 }); + } finally { + isWriting = false; + processLogQueue(); + } } catch (e) { return `Fehler beim Lesen der Logs: ${e}`; } }, clearLogs: async () => { - writeQueue = writeQueue.then(async () => { - try { - await FileSystem.deleteAsync(logFileUri, { idempotent: true }); - } catch (e) { - console.warn('Failed to clear logs:', e); - } - }); - return writeQueue; + await waitForQueueDrain(); + isWriting = true; // lock the queue while clearing + try { + await FileSystem.deleteAsync(logFileUri, { idempotent: true }); + } catch (e) { + console.warn('Failed to clear logs:', e); + } finally { + isWriting = false; + processLogQueue(); + } } };