perf(learn): a conversation deleted goes at once, with an Undo

Deleting a kept conversation asked first and then waited while its
turns were blanked and deleted. It now goes as a card or a note does:
ConversationDeletions, a DelayedDeletions opened with the person's
data, takes it off the history at once (the list leaves out what is
pending), offers Undo for a moment on the sheet (hasSnackBars), and
blanks and deletes it once that is over; a deletion that fails shows
the conversation again, as every DelayedDeletions does. The question
before deleting goes, as Undo replaces it.

Whats-New: A conversation with an assistant is deleted at once, and Undo brings it back.
Whats-New-De: Eine Unterhaltung mit einem Assistenten wird sofort gelöscht, und „Rückgängig“ holt sie zurück.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-07 23:07:23 +01:00
commit 891e9dfd75
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 106 additions and 71 deletions

View file

@ -1778,8 +1778,7 @@
"assistantHistoryExplained": "Karte erklärt",
"assistantHistoryChecked": "Auf Fehler geprüft",
"assistantHistoryDelete": "Unterhaltung löschen",
"assistantHistoryDeleteMessage": "„{title}“ verschwindet von allen deinen Geräten.",
"assistantHistoryDeleteConfirm": "Löschen",
"assistantHistoryDeleted": "Unterhaltung gelöscht",
"assistantGone": "Ein nicht mehr angebotener Assistent",
"assistantGoneNote": "Dieser Assistent wird dir hier nicht mehr angeboten, also lässt sich die Unterhaltung nicht fortsetzen.",
"assistantNotKept": "Nicht gespeichert: Dieses Gerät kann Unterhaltungen nicht verschlüsseln, also ist diese weg, sobald du sie schließt.",

View file

@ -2117,9 +2117,7 @@
"assistantHistoryChecked": "Checked for mistakes",
"@assistantHistoryChecked": {"description": "A conversation that checked what was written (D54)."},
"assistantHistoryDelete": "Delete conversation",
"assistantHistoryDeleteMessage": "“{title}” goes from all your devices.",
"@assistantHistoryDeleteMessage": {"placeholders": {"title": {"type": "String"}}},
"assistantHistoryDeleteConfirm": "Delete",
"assistantHistoryDeleted": "Conversation deleted",
"assistantGone": "An assistant no longer offered",
"assistantGoneNote": "This assistant is no longer offered to you here, so the conversation can't go on.",
"assistantNotKept": "Not kept: this device can't encrypt conversations, so this one is gone once you close it.",

View file

@ -10497,17 +10497,11 @@ abstract class AppLocalizations {
/// **'Delete conversation'**
String get assistantHistoryDelete;
/// No description provided for @assistantHistoryDeleteMessage.
/// No description provided for @assistantHistoryDeleted.
///
/// In en, this message translates to:
/// **'“{title}” goes from all your devices.'**
String assistantHistoryDeleteMessage(String title);
/// No description provided for @assistantHistoryDeleteConfirm.
///
/// In en, this message translates to:
/// **'Delete'**
String get assistantHistoryDeleteConfirm;
/// **'Conversation deleted'**
String get assistantHistoryDeleted;
/// No description provided for @assistantGone.
///

View file

@ -6634,12 +6634,7 @@ class AppLocalizationsDe extends AppLocalizations {
String get assistantHistoryDelete => 'Unterhaltung löschen';
@override
String assistantHistoryDeleteMessage(String title) {
return '„$title“ verschwindet von allen deinen Geräten.';
}
@override
String get assistantHistoryDeleteConfirm => 'Löschen';
String get assistantHistoryDeleted => 'Unterhaltung gelöscht';
@override
String get assistantGone => 'Ein nicht mehr angebotener Assistent';

View file

@ -6574,12 +6574,7 @@ class AppLocalizationsEn extends AppLocalizations {
String get assistantHistoryDelete => 'Delete conversation';
@override
String assistantHistoryDeleteMessage(String title) {
return '“$title” goes from all your devices.';
}
@override
String get assistantHistoryDeleteConfirm => 'Delete';
String get assistantHistoryDeleted => 'Conversation deleted';
@override
String get assistantGone => 'An assistant no longer offered';