#10: deleting the last message showed "No messages yet" in the chat list. The sidebar sent an empty last_body for a deleted (content-cleared) row; now it sends a last_deleted flag and the row renders "This message was deleted" (or "You deleted this message"), matching the in-thread placeholder. #18: added "Delete for me" alongside "Delete for everyone". A new message_hidden table records a per-user hide; the thread + sidebar (last message, unread) filter out the requesting user's hidden messages, and the hide is echoed to their other devices (chat-hidden). "Delete for me" is offered on any message; "Delete for everyone" stays sender-only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -216,6 +216,9 @@ try { db.exec('ALTER TABLE messages ADD COLUMN msg_type TEXT'); } catch (e) { /*
|
||||
// Deleted ("delete for everyone"): the row stays so threads/ordering hold, but body+attachment
|
||||
// are cleared and clients render a "This message was deleted" placeholder.
|
||||
try { db.exec('ALTER TABLE messages ADD COLUMN deleted INTEGER NOT NULL DEFAULT 0'); } catch (e) { /* exists */ }
|
||||
// #18 "Delete for me": a per-user hide. The message row is untouched (others still see it); this
|
||||
// table records that THIS user removed it from their own view (threads + sidebar filter it out).
|
||||
try { db.exec('CREATE TABLE IF NOT EXISTS message_hidden (message_id TEXT NOT NULL, user_id TEXT NOT NULL, hidden_at INTEGER, PRIMARY KEY (message_id, user_id))'); } catch (e) { /* exists */ }
|
||||
// A message can be edited by its sender; edited_at marks it (shows an "edited" label).
|
||||
try { db.exec('ALTER TABLE messages ADD COLUMN edited_at INTEGER'); } catch (e) { /* exists */ }
|
||||
try { db.exec('ALTER TABLE messages ADD COLUMN fwd_from TEXT'); } catch (e) { /* exists — original sender name when a message was forwarded (#5) */ }
|
||||
|
||||
Reference in New Issue
Block a user