atagen

malice

public
Star0
Watch0

Commit ef6bff0fd155

tarball

atagen <boss@atagen.co>2026-10-25 09:09 UTC

1 file changed+10-3
web: forget drafts cleared by hand

Switching rooms only saved a draft when the composer had text, so emptying it never overwrote the old draft and the deleted text came back on return.
Modified file: web/src/App.svelte+10 additions−3 deletions
@@ -535,8 +535,15 @@
535535 recordRoute(null, null);
536536 }
537537
538+ function stashDraft(): void {
539+ const roomId = $selectedRoomId;
540+ if (!roomId) return;
541+ if (composer.trim()) drafts[roomId] = composer;
542+ else delete drafts[roomId];
543+ }
544+
538545 function selectMentions(): void {
539- if ($selectedRoomId && composer.trim()) drafts[$selectedRoomId] = composer;
546+ stashDraft();
540547 stopTyping();
541548 selectedSpaceId = null;
542549 spaceChildIds = null;
@@ -560,7 +567,7 @@
560567
561568 async function selectSpace(spaceId: string): Promise<void> {
562569 mentionsOpen = false;
563- if ($selectedRoomId && composer.trim()) drafts[$selectedRoomId] = composer;
570+ stashDraft();
564571 stopTyping();
565572 selectedSpaceId = spaceId;
566573 spaceChildIds = null;
@@ -597,7 +604,7 @@
597604 async function selectRoom(roomId: string, peek = false): Promise<void> {
598605 mentionsOpen = false;
599606 peeking = peek ? roomId : null;
600- if ($selectedRoomId && composer.trim()) drafts[$selectedRoomId] = composer;
607+ stashDraft();
601608 if (roomId === $selectedRoomId && openReady[roomId]) {
602609 sidebarOpen = false;
603610 return;