MessageLoggerEnhanced: Fix Importing

This commit is contained in:
thororen1234 2026-02-14 01:13:59 -05:00
parent 4bf6b70c4f
commit da90482fdf
No known key found for this signature in database
3 changed files with 28 additions and 14 deletions

View file

@ -4,7 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import { ChannelStore } from "@webpack/common";
import { ChannelStore, Toasts } from "@webpack/common";
import { DBSchema, IDBPDatabase, openDB } from "idb";
import { LoggedMessageJSON } from "./types";
@ -251,4 +251,9 @@ export async function deleteMessagesBulkIDB(message_ids: string[]) {
export async function clearMessagesIDB() {
await db.clear("messages");
cachedMessages.clear();
Toasts.show({
type: Toasts.Type.MESSAGE,
message: "Cleared message log database and cache.",
id: Toasts.genId()
});
}

View file

@ -297,8 +297,8 @@ export const settings = definePluginSettings({
confirmVariant: "critical-primary",
confirmText: "Clear",
cancelText: "Cancel",
onConfirm: () => {
clearMessagesIDB();
onConfirm: async () => {
await clearMessagesIDB();
},
})}
>

View file

@ -22,7 +22,7 @@ import { Toasts } from "@webpack/common";
import { showSaveFilePicker } from "native-file-system-adapter";
import { Native } from "..";
import { addMessagesBulkIDB, iterateAllMessagesIDB } from "../db";
import { addMessagesBulkIDB, clearMessagesIDB, iterateAllMessagesIDB } from "../db";
import { LoggedMessageJSON } from "../types";
export async function importLogs() {
@ -30,17 +30,27 @@ export async function importLogs() {
let count = 0;
const batchSize = 50;
let batch: LoggedMessageJSON[] = [];
let cleared = false;
for await (const item of iterateLogItems()) {
const message = item.message || item;
if (!message || !message.id || !message.channel_id || !message.timestamp) continue;
for await (const logItems of iterateLogItems()) {
if (!cleared) {
await clearMessagesIDB();
cleared = true;
}
batch.push(message);
const items = logItems.flat();
if (batch.length >= batchSize) {
await addMessagesBulkIDB(batch);
count += batch.length;
batch = [];
for (const item of items) {
const { message } = item;
if (!message || !message.id || !message.channel_id || !message.timestamp) continue;
batch.push(message);
if (batch.length >= batchSize) {
await addMessagesBulkIDB(batch);
count += batch.length;
batch = [];
}
}
}
@ -72,7 +82,6 @@ export async function importLogs() {
type: Toasts.Type.FAILURE
});
}
}
export async function exportLogs() {
@ -128,7 +137,7 @@ export async function exportLogs() {
first = false;
const chunk = prefix + " " + JSON.stringify(records);
await writer.write(encoder.encode(chunk));
count += records.length;
count++;
}
await writer.write(encoder.encode("\n ]\n}"));