Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

opt.: replaying clears all chats behind the replayed message #136

Merged
merged 1 commit into from
Aug 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/l10n/app_de.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "30 Sekunden merken",
"rename": "Umbenennen",
"replay": "Wiederholen",
"replayTip": "Die wiederholten Nachrichten und alle folgenden Nachrichten werden gelöscht.",
"res": "Ressource",
"restoreOpenaiTip": "Die Dokumentation finden Sie [hier]({url})",
"rmDuplication": "Duplikate entfernen",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "Remember 30s",
"rename": "Rename",
"replay": "Replay",
"replayTip": "The replayed messages and all subsequent messages will be cleared.",
"res": "Resource",
"restoreOpenaiTip": "Document can be found [here]({url})",
"rmDuplication": "Remove duplication",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_es.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "Recordar 30 segundos",
"rename": "Renombrar",
"replay": "Repetir",
"replayTip": "Los mensajes reproducidos y todos los mensajes posteriores se borrarán.",
"res": "Recurso",
"restoreOpenaiTip": "La documentación se puede encontrar [aquí]({url})",
"rmDuplication": "Eliminar duplicados",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_fr.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "Se souvenir pendant 30 secondes",
"rename": "Renommer",
"replay": "Rejouer",
"replayTip": "Les messages rejoués et tous les messages suivants seront effacés.",
"res": "Ressource",
"restoreOpenaiTip": "La documentation peut être trouvée [ici]({url})",
"rmDuplication": "Supprimer les doublons",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_id.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "Ingat selama 30 detik",
"rename": "Ubah nama",
"replay": "Putar ulang",
"replayTip": "Pesan yang diputar ulang dan semua pesan selanjutnya akan dihapus.",
"res": "Sumber daya",
"restoreOpenaiTip": "Dokumentasi dapat ditemukan [di sini]({url})",
"rmDuplication": "Hapus duplikasi",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_ja.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "30秒間記憶",
"rename": "名前変更",
"replay": "リプレイ",
"replayTip": "再生されたメッセージとそれ以降のすべてのメッセージがクリアされます",
"res": "リソース",
"restoreOpenaiTip": "ドキュメントは[こちら]({url})で見つけられます",
"rmDuplication": "重複を削除",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_nl.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "30 seconden onthouden",
"rename": "Hernoemen",
"replay": "Herhalen",
"replayTip": "De herhaalde berichten en alle volgende berichten worden gewist.",
"res": "Bron",
"restoreOpenaiTip": "Documentatie kan [hier]({url}) worden gevonden",
"rmDuplication": "Duplicaten verwijderen",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_pt.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "Lembrar por 30 segundos",
"rename": "Renomear",
"replay": "Repetir",
"replayTip": "As mensagens reproduzidas e todas as mensagens subsequentes serão apagadas.",
"res": "Recurso",
"restoreOpenaiTip": "A documentação pode ser encontrada [aqui]({url})",
"rmDuplication": "Remover duplicação",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_ru.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "Запомнить на 30 секунд",
"rename": "Переименовать",
"replay": "Повтор",
"replayTip": "Воспроизведенные сообщения и все последующие сообщения будут удалены.",
"res": "Ресурс",
"restoreOpenaiTip": "Документацию можно найти [здесь]({url})",
"rmDuplication": "Удалить дубликаты",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_tr.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "30 saniye hatırla",
"rename": "Yeniden adlandır",
"replay": "Tekrar oynat",
"replayTip": "Tekrar oynatılan mesajlar ve sonraki tüm mesajlar temizlenecek.",
"res": "Kaynak",
"restoreOpenaiTip": "Belgelendirme [burada]({url}) bulunabilir",
"rmDuplication": "Yinelemeyi kaldır",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_zh.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "记住 30 秒",
"rename": "重命名",
"replay": "重放",
"replayTip": "会清空被重放的消息、后面所有消息",
"res": "资源",
"restoreOpenaiTip": "文档可以在 [这里]({url}) 找到",
"rmDuplication": "删除重复",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_zh_tw.arb
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
"remember30s": "記住 30 秒",
"rename": "重新命名",
"replay": "重播",
"replayTip": "重播的訊息和所有後續訊息將被清除",
"res": "資源",
"restoreOpenaiTip": "文件可以在 [這裡]({url}) 找到",
"rmDuplication": "刪除重複",
Expand Down
2 changes: 1 addition & 1 deletion lib/view/page/home/ctrl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ void _onTapReplay(
if (!item.role.isUser) return;
final sure = await context.showRoundDialog<bool>(
title: l10n.attention,
child: Text('${l10n.replay} ?'),
child: Text('${l10n.replay} ?\n${l10n.replayTip}'),
actions: Btnx.okReds,
);
if (sure != true) return;
Expand Down
50 changes: 4 additions & 46 deletions lib/view/page/home/req.dart
Original file line number Diff line number Diff line change
Expand Up @@ -531,57 +531,15 @@ void _onReplay({
return;
}

// final itemIdx = chatHistory.items.indexOf(item);
// if (itemIdx == -1) {
// final msg = 'Replay Chat($chatId) item($item) not found';
// Loggers.app.warning(msg);
// context.showSnackBar(msg);
// return;
// }

// // tool
// if (itemIdx + 1 < chatHistory.items.length) {
// final item = chatHistory.items.elementAt(itemIdx + 1);
// if (item.role.isAssist || item.role.isTool) {
// chatHistory.items.removeAt(itemIdx + 1);
// }
// }
// // assist
// if (itemIdx + 1 < chatHistory.items.length) {
// final item = chatHistory.items.elementAt(itemIdx + 1);
// if (item.role.isAssist || item.role.isTool) {
// chatHistory.items.removeAt(itemIdx + 1);
// }
// }

// chatHistory.items.removeAt(itemIdx);

// Find the item, then delete all items between the item and next user msg
var replayMsgIdx = -1;
var nextUserMsgIdx = -1;
for (var idx = 0; idx < chatHistory.items.length; idx++) {
final i = chatHistory.items[idx];
if (i.id == item.id && i.role == item.role) {
replayMsgIdx = idx;
continue;
}
if (replayMsgIdx == -1) {
continue;
}
if (replayMsgIdx != -1 && i.role.isUser) {
nextUserMsgIdx = idx;
break;
}
}

if (replayMsgIdx != -1 && nextUserMsgIdx != -1) {
chatHistory.items.removeRange(replayMsgIdx, nextUserMsgIdx);
} else {
// Find the item, then delete all items behind it and itself
final replayMsgIdx = chatHistory.items.indexOf(item);
if (replayMsgIdx == -1) {
final msg = 'Replay Chat($chatId) item($item) not found';
Loggers.app.warning(msg);
context.showSnackBar('${libL10n.fail}: $msg');
return;
}
chatHistory.items.removeRange(replayMsgIdx, chatHistory.items.length);

final text =
item.content.firstWhereOrNull((e) => e.type == ChatContentType.text)?.raw;
Expand Down
Loading