speed up folder handling by using a list for folders and letters assinged to them rather than multiple different events

This commit is contained in:
Danny Morabito 2024-11-29 17:32:11 +01:00
parent f70f4c4518
commit 1b2177933c
Signed by: dannym
GPG key ID: 7CC8056A5A04557E
7 changed files with 95 additions and 129 deletions

View file

@ -16,7 +16,6 @@
async function addNewFolderPressed() {
const newFolder = await createFolder(newFolderName, '');
if (!newFolder) return;
await newFolder.publish();
folders = [...folders, { id: newFolder.id, name: newFolderName, icon: 'eos-icons:plus' }];
newFolderName = '';
isAddingFolder = false;

View file

@ -1,12 +1,13 @@
<script lang="ts">
import { groupByStamps, sortBy } from '$lib/stores.svelte';
import { groupByStamps, ndk, sortBy } from '$lib/stores.svelte';
import Icon from '@iconify/svelte';
import NostrIdentifier from './NostrIdentifier.svelte';
import { getReadableDate, getReadableTime, moveMessageToFolder } from '$lib/utils.svelte.js';
import { getReadableDate, getReadableTime } from '$lib/utils.svelte.js';
import Dialog from './Dialog.svelte';
import Select from './Select.svelte';
import type { Letter } from '$lib/letter';
import { slide } from 'svelte/transition';
import { FolderLabel } from '$lib/folderLabel';
let {
letters,
@ -95,14 +96,10 @@
async function doMove() {
if (!moveFolderName) return alert('Please select a folder');
if (selectedLetters.length === 0) return alert('Please select at least one letter');
const events = [];
for (let letter of selectedLetters)
events.push(await moveMessageToFolder(
letter,
moveFolderName
));
for (let event of events)
await event.publish();
const folderIndexToMoveTo = foldersList.findIndex(f => f.id === moveFolderName);
if (folderIndexToMoveTo === -1) return alert('Please select a valid folder');
foldersList[folderIndexToMoveTo].letters = [...foldersList[folderIndexToMoveTo].letters, ...selectedLetters];
await FolderLabel.save($ndk, foldersList);
selectedLetters = [];
moveFolderName = '';
moveFolderDialogOpen = false;