feat: Display progress on redact events and clear archive dialogs

This commit is contained in:
Christian Kußowski 2025-09-19 10:50:38 +02:00
commit 69bbfa5389
No known key found for this signature in database
GPG key ID: E067ECD60F1A0652
3 changed files with 28 additions and 11 deletions

View file

@ -52,8 +52,10 @@ class ArchiveController extends State<Archive> {
}
await showFutureLoadingDialog(
context: context,
future: () async {
futureWithProgress: (onProgress) async {
final count = archive.length;
while (archive.isNotEmpty) {
onProgress(1 - (archive.length / count));
Logs().v('Forget room ${archive.last.getLocalizedDisplayname()}');
await archive.last.forget();
archive.removeLast();

View file

@ -852,10 +852,12 @@ class ChatController extends State<ChatPageWithRoom>
: null;
if (reasonInput == null) return;
final reason = reasonInput.isEmpty ? null : reasonInput;
for (final event in selectedEvents) {
await showFutureLoadingDialog(
context: context,
future: () async {
await showFutureLoadingDialog(
context: context,
futureWithProgress: (onProgress) async {
final count = selectedEvents.length;
for (final (i, event) in selectedEvents.indexed) {
onProgress(i / count);
if (event.status.isSent) {
if (event.canRedact) {
await event.redactEvent(reason: reason);
@ -875,9 +877,9 @@ class ChatController extends State<ChatPageWithRoom>
} else {
await event.cancelSend();
}
},
);
}
}
},
);
setState(() {
showEmojiPicker = false;
selectedEvents.clear();