MessageLoggerEnhanced: Fix Importing
This commit is contained in:
parent
4bf6b70c4f
commit
da90482fdf
3 changed files with 28 additions and 14 deletions
|
|
@ -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()
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -297,8 +297,8 @@ export const settings = definePluginSettings({
|
|||
confirmVariant: "critical-primary",
|
||||
confirmText: "Clear",
|
||||
cancelText: "Cancel",
|
||||
onConfirm: () => {
|
||||
clearMessagesIDB();
|
||||
onConfirm: async () => {
|
||||
await clearMessagesIDB();
|
||||
},
|
||||
})}
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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}"));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue