1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-10-23 06:53:23 +00:00

Can disconnect current user from all his devices

This commit is contained in:
Pierre HUBERT 2020-05-01 09:42:01 +02:00
parent 02e60ad87c
commit 9b427b9683
2 changed files with 32 additions and 0 deletions

View File

@ -139,4 +139,12 @@ class AccountHelper {
if (_currentUserID == -1) throw "Current user ID has not been loaded yet!";
return _currentUserID;
}
/// Disconnect all the devices of the current user
///
/// Throws in case of failure
static Future<void> disconnectAllDevices() async {
await APIRequest(uri: "account/disconnect_all_devices", needLogin: true)
.execWithThrow();
}
}

View File

@ -1,3 +1,4 @@
import 'package:comunic/helpers/account_helper.dart';
import 'package:comunic/helpers/settings_helper.dart';
import 'package:comunic/models/security_settings.dart';
import 'package:comunic/ui/dialogs/input_new_password_dialog.dart';
@ -49,6 +50,12 @@ class __AccountSecuritySettingsScreenBodyState
"Your security questions can be used to recover an access to your account when you loose your password..."),
onTap: _changeSecurityQuestions,
),
SettingsTile(
title: tr("Disconnect all your devices"),
subtitle: tr(
"Disconnect all your devices from Comunic, including the current one. Use this option if one of the device you use for Comunic was stolen."),
onTap: _disconnectAllDevices,
),
],
)
],
@ -100,6 +107,23 @@ class __AccountSecuritySettingsScreenBodyState
showSimpleSnack(context, tr("Could not update security questions!"));
}
}
/// Disconnect all devices
void _disconnectAllDevices() async {
try {
if (!await showConfirmDialog(
context: context,
message: tr(
"Do you really want to disconnect all your devices from Comunic ?")))
return;
await AccountHelper.disconnectAllDevices();
} catch (e, stack) {
print("Could not disconnect user on all devices! $e\n$stack");
showSimpleSnack(
context, tr("Could not disconnect you from all your devices!"));
}
}
}
class _SecurityQuestionsDialog extends StatefulWidget {