feat: Implement deleting pushers in app

braid/spaces-hierarchy-fixes
Christian Pauly 3 years ago
parent 7357209f95
commit dfe7a1c831

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:collection/collection.dart' show IterableExtension;
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:future_loading_dialog/future_loading_dialog.dart';
@ -94,6 +95,40 @@ class SettingsNotificationsController extends State<SettingsNotifications> {
);
}
void onPusherTap(Pusher pusher) async {
final delete = await showModalActionSheet<bool>(
context: context,
title: pusher.deviceDisplayName,
message: '${pusher.appDisplayName} (${pusher.appId})',
actions: [
SheetAction(
label: L10n.of(context)!.delete,
isDestructiveAction: true,
key: true,
)
],
);
if (delete != true) return;
final success = await showFutureLoadingDialog(
context: context,
future: () => Matrix.of(context).client.deletePusher(
PusherId(
appId: pusher.appId,
pushkey: pusher.pushkey,
),
),
);
if (success.error != null) return;
setState(() {
pusherFuture = null;
});
}
Future<List<Pusher>?>? pusherFuture;
@override
Widget build(BuildContext context) => SettingsNotificationsView(this);
}

@ -77,7 +77,8 @@ class SettingsNotificationsView extends StatelessWidget {
),
),
FutureBuilder<List<Pusher>?>(
future: Matrix.of(context).client.getPushers(),
future: controller.pusherFuture ??=
Matrix.of(context).client.getPushers(),
builder: (context, snapshot) {
if (snapshot.hasError) {
Center(
@ -100,6 +101,7 @@ class SettingsNotificationsView extends StatelessWidget {
title: Text(
'${pushers[i].appDisplayName} - ${pushers[i].appId}'),
subtitle: Text(pushers[i].data.url.toString()),
onTap: () => controller.onPusherTap(pushers[i]),
),
);
},

Loading…
Cancel
Save