parseSelection function
Implementation
Future<void> parseSelection(
BuildContext context,
UserModel user,
String value,
WidgetRef ref,
) async {
final isConnected = ref.read(isConnectedProvider);
if (!isConnected) return context.notConnectedDialog();
switch (value) {
case 'Rename user':
showDialog(
context: context,
builder: (context) => RenameUserDialog(user: user),
);
case 'Make Admin':
ref
.read(cloudFunctionServiceProvider)
.addAdmin(user.email)
.then((result) {
final success = context.processHttpsCallableResult(result);
if (!success) return;
ref.read(userDataProvider.notifier).updateClaims(
user.uid!,
(claims) => claims.copyWith(admin: true),
);
});
case 'Remove Admin':
ref
.read(cloudFunctionServiceProvider)
.removeAdmin(user.email!)
.then((result) {
final success = context.processHttpsCallableResult(result);
if (!success) return;
ref.read(userDataProvider.notifier).updateClaims(
user.uid!,
(claims) => claims.copyWith(admin: false),
);
});
case 'Remove User':
yesAbortDialog(
context: context,
title: t.generics.areYouSure,
body: "${t.admin.deleteUserMessage}: ${user.displayName}",
).then((result) async {
if (result == DialogAction.yes) {
ref
.read(cloudFunctionServiceProvider)
.deleteUser(user.email!)
.then((result) async {
final success = context.processHttpsCallableResult(result);
if (!success) return;
ref.read(userDataProvider.notifier).deleteUser(user.uid!);
context.pop();
});
}
});
}
}