feat: Nachrichten als gelöscht markieren
- DB: deleted_on TEXT Spalte in messages (Migration)
- Backend: ToggleMessageDelete(), includeDeleted-Parameter in allen History-Queries
- Neuer Endpoint: PUT /api/messages/{id}/delete
- Frontend: Trash-Button zwischen Reply- und Mark-Button
- Gelöschte Nachrichten: durchgestrichen + roter Rand (oder versteckt je nach Einstellung)
- Einstellungen: Toggle-Switch 'Gelöschte Nachrichten anzeigen'
- KI-Payload: gelöschte Nachrichten werden nicht mitgeschickt
This commit is contained in:
1 parent
493dfcda1c
commit
a14a991a0f
11 files changed
+248
-39
No files matched your search
@@ -280,6 +280,7 @@
|
||||
}
|
||||
|
||||
.msg-reply-btn,
|
||||
.msg-delete-btn,
|
||||
.msg-mark-btn {
|
||||
position: absolute;
|
||||
top: var(--badge-spacing);
|
||||
@@ -294,6 +295,10 @@
|
||||
}
|
||||
|
||||
.msg-reply-btn {
|
||||
right: calc(var(--badge-spacing) + 4em + var(--badge-spacing) * 2);
|
||||
}
|
||||
|
||||
.msg-delete-btn {
|
||||
right: calc(var(--badge-spacing) + 2em + var(--badge-spacing));
|
||||
}
|
||||
|
||||
@@ -302,11 +307,13 @@
|
||||
}
|
||||
|
||||
.msg:hover .msg-reply-btn,
|
||||
.msg:hover .msg-delete-btn,
|
||||
.msg:hover .msg-mark-btn {
|
||||
opacity: var(--semi-transparent);
|
||||
}
|
||||
|
||||
.msg-reply-btn:hover,
|
||||
.msg-delete-btn:hover,
|
||||
.msg-mark-btn:hover {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
@@ -316,12 +323,30 @@
|
||||
color: var(--warning);
|
||||
}
|
||||
|
||||
.msg-delete-btn.deleted {
|
||||
opacity: 1 !important;
|
||||
color: var(--dangerous);
|
||||
}
|
||||
|
||||
/* Markierte Nachrichten */
|
||||
|
||||
.msg.marked {
|
||||
border-left: 3px solid var(--warning);
|
||||
}
|
||||
|
||||
/* Gelöschte Nachrichten */
|
||||
|
||||
.msg.msg-deleted {
|
||||
opacity: 0.45;
|
||||
text-decoration: line-through;
|
||||
text-decoration-color: var(--dangerous);
|
||||
border-left: 3px solid var(--dangerous);
|
||||
}
|
||||
|
||||
.msg.msg-deleted-hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Reply Quote in User Bubble */
|
||||
|
||||
.reply-quote {
|
||||
|
||||
@@ -228,3 +228,48 @@ label.skill-item {
|
||||
background: var(--dangerous);
|
||||
color: var(--f1-bg);
|
||||
}
|
||||
|
||||
/* Toggle Switch */
|
||||
|
||||
.toggle-switch {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 2.4em;
|
||||
height: 1.4em;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.toggle-switch input {
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.toggle-slider {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: var(--f2-border);
|
||||
border-radius: 1em;
|
||||
transition: background var(--transition-duration);
|
||||
}
|
||||
|
||||
.toggle-slider::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
left: .2em;
|
||||
top: .2em;
|
||||
background: var(--f1-bg);
|
||||
border-radius: 50%;
|
||||
transition: transform var(--transition-duration);
|
||||
}
|
||||
|
||||
.toggle-switch input:checked + .toggle-slider {
|
||||
background: var(--secondary);
|
||||
}
|
||||
|
||||
.toggle-switch input:checked + .toggle-slider::before {
|
||||
transform: translateX(1em);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user