mirror of
				https://gitlab.com/famedly/fluffychat.git
				synced 2025-11-03 22:07:23 +01:00 
			
		
		
		
	Implement missing account settings
This commit is contained in:
		
							parent
							
								
									9d3f272c2a
								
							
						
					
					
						commit
						165c64ce36
					
				@ -5,6 +5,8 @@
 | 
			
		||||
- Display messages with up to 10 emotes or emoji bigger
 | 
			
		||||
- New design for the chat list and message bubbles
 | 
			
		||||
- Implement reactions
 | 
			
		||||
- Implement password change
 | 
			
		||||
- Implement deactivate user account
 | 
			
		||||
### Fixes
 | 
			
		||||
- Timeline randomly resorting while more history is being fetched
 | 
			
		||||
- Automatically request history if the "load more" button is on the screen
 | 
			
		||||
 | 
			
		||||
@ -79,6 +79,7 @@ class SimpleDialogs {
 | 
			
		||||
    String contentText,
 | 
			
		||||
    String confirmText,
 | 
			
		||||
    String cancelText,
 | 
			
		||||
    bool dangerous = false,
 | 
			
		||||
  }) async {
 | 
			
		||||
    var confirmed = false;
 | 
			
		||||
    await showDialog(
 | 
			
		||||
@ -98,6 +99,7 @@ class SimpleDialogs {
 | 
			
		||||
            child: Text(
 | 
			
		||||
              confirmText?.toUpperCase() ??
 | 
			
		||||
                  L10n.of(context).confirm.toUpperCase(),
 | 
			
		||||
              style: TextStyle(color: dangerous ? Colors.red : null),
 | 
			
		||||
            ),
 | 
			
		||||
            onPressed: () {
 | 
			
		||||
              confirmed = true;
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
{
 | 
			
		||||
  "@@last_modified": "2020-09-19T15:27:28.862887",
 | 
			
		||||
  "@@last_modified": "2020-09-21T17:49:17.725032",
 | 
			
		||||
  "About": "About",
 | 
			
		||||
  "@About": {
 | 
			
		||||
    "type": "text",
 | 
			
		||||
@ -453,6 +453,16 @@
 | 
			
		||||
    "type": "text",
 | 
			
		||||
    "placeholders": {}
 | 
			
		||||
  },
 | 
			
		||||
  "This will deactivate your user account. This can not be undone! Are you sure?": "This will deactivate your user account. This can not be undone! Are you sure?",
 | 
			
		||||
  "@This will deactivate your user account. This can not be undone! Are you sure?": {
 | 
			
		||||
    "type": "text",
 | 
			
		||||
    "placeholders": {}
 | 
			
		||||
  },
 | 
			
		||||
  "Delete account": "Delete account",
 | 
			
		||||
  "@Delete account": {
 | 
			
		||||
    "type": "text",
 | 
			
		||||
    "placeholders": {}
 | 
			
		||||
  },
 | 
			
		||||
  "Delete message": "Delete message",
 | 
			
		||||
  "@Delete message": {
 | 
			
		||||
    "type": "text",
 | 
			
		||||
@ -1006,6 +1016,11 @@
 | 
			
		||||
    "type": "text",
 | 
			
		||||
    "placeholders": {}
 | 
			
		||||
  },
 | 
			
		||||
  "Password has been changed": "Password has been changed",
 | 
			
		||||
  "@Password has been changed": {
 | 
			
		||||
    "type": "text",
 | 
			
		||||
    "placeholders": {}
 | 
			
		||||
  },
 | 
			
		||||
  "Pick image": "Pick image",
 | 
			
		||||
  "@Pick image": {
 | 
			
		||||
    "type": "text",
 | 
			
		||||
@ -1617,6 +1632,11 @@
 | 
			
		||||
    "type": "text",
 | 
			
		||||
    "placeholders": {}
 | 
			
		||||
  },
 | 
			
		||||
  "Warning!": "Warning!",
 | 
			
		||||
  "@Warning!": {
 | 
			
		||||
    "type": "text",
 | 
			
		||||
    "placeholders": {}
 | 
			
		||||
  },
 | 
			
		||||
  "Wallpaper": "Wallpaper",
 | 
			
		||||
  "@Wallpaper": {
 | 
			
		||||
    "type": "text",
 | 
			
		||||
 | 
			
		||||
@ -342,6 +342,11 @@ class L10n extends MatrixLocalizations {
 | 
			
		||||
 | 
			
		||||
  String get delete => Intl.message("Delete");
 | 
			
		||||
 | 
			
		||||
  String get deactivateAccountWarning => Intl.message(
 | 
			
		||||
      'This will deactivate your user account. This can not be undone! Are you sure?');
 | 
			
		||||
 | 
			
		||||
  String get deleteAccount => Intl.message('Delete account');
 | 
			
		||||
 | 
			
		||||
  String get deleteMessage => Intl.message("Delete message");
 | 
			
		||||
 | 
			
		||||
  String get deny => Intl.message("Deny");
 | 
			
		||||
@ -636,6 +641,9 @@ class L10n extends MatrixLocalizations {
 | 
			
		||||
 | 
			
		||||
  String get password => Intl.message("Password");
 | 
			
		||||
 | 
			
		||||
  String get passwordHasBeenChanged =>
 | 
			
		||||
      Intl.message('Password has been changed');
 | 
			
		||||
 | 
			
		||||
  String get pickImage => Intl.message('Pick image');
 | 
			
		||||
 | 
			
		||||
  String get pin => Intl.message('Pin');
 | 
			
		||||
@ -988,6 +996,8 @@ class L10n extends MatrixLocalizations {
 | 
			
		||||
      Intl.message("Waiting for partner to accept the numbers...",
 | 
			
		||||
          name: "waitingPartnerNumbers");
 | 
			
		||||
 | 
			
		||||
  String get warning => Intl.message('Warning!');
 | 
			
		||||
 | 
			
		||||
  String get wallpaper => Intl.message("Wallpaper");
 | 
			
		||||
 | 
			
		||||
  String get warningEncryptionInBeta => Intl.message(
 | 
			
		||||
 | 
			
		||||
@ -239,6 +239,8 @@ class MessageLookup extends MessageLookupByLibrary {
 | 
			
		||||
            MessageLookupByLibrary.simpleMessage("Currently active"),
 | 
			
		||||
        "Dark": MessageLookupByLibrary.simpleMessage("Dark"),
 | 
			
		||||
        "Delete": MessageLookupByLibrary.simpleMessage("Delete"),
 | 
			
		||||
        "Delete account":
 | 
			
		||||
            MessageLookupByLibrary.simpleMessage("Delete account"),
 | 
			
		||||
        "Delete message":
 | 
			
		||||
            MessageLookupByLibrary.simpleMessage("Delete message"),
 | 
			
		||||
        "Deny": MessageLookupByLibrary.simpleMessage("Deny"),
 | 
			
		||||
@ -362,6 +364,8 @@ class MessageLookup extends MessageLookupByLibrary {
 | 
			
		||||
        "Participating user devices":
 | 
			
		||||
            MessageLookupByLibrary.simpleMessage("Participating user devices"),
 | 
			
		||||
        "Password": MessageLookupByLibrary.simpleMessage("Password"),
 | 
			
		||||
        "Password has been changed":
 | 
			
		||||
            MessageLookupByLibrary.simpleMessage("Password has been changed"),
 | 
			
		||||
        "Pick image": MessageLookupByLibrary.simpleMessage("Pick image"),
 | 
			
		||||
        "Pin": MessageLookupByLibrary.simpleMessage("Pin"),
 | 
			
		||||
        "Please be aware that you need Pantalaimon to use end-to-end encryption for now.":
 | 
			
		||||
@ -438,6 +442,9 @@ class MessageLookup extends MessageLookupByLibrary {
 | 
			
		||||
        "They Match": MessageLookupByLibrary.simpleMessage("They Match"),
 | 
			
		||||
        "This room has been archived.": MessageLookupByLibrary.simpleMessage(
 | 
			
		||||
            "This room has been archived."),
 | 
			
		||||
        "This will deactivate your user account. This can not be undone! Are you sure?":
 | 
			
		||||
            MessageLookupByLibrary.simpleMessage(
 | 
			
		||||
                "This will deactivate your user account. This can not be undone! Are you sure?"),
 | 
			
		||||
        "Thursday": MessageLookupByLibrary.simpleMessage("Thursday"),
 | 
			
		||||
        "Try to send again":
 | 
			
		||||
            MessageLookupByLibrary.simpleMessage("Try to send again"),
 | 
			
		||||
@ -464,6 +471,7 @@ class MessageLookup extends MessageLookupByLibrary {
 | 
			
		||||
            MessageLookupByLibrary.simpleMessage("Visible for everyone"),
 | 
			
		||||
        "Voice message": MessageLookupByLibrary.simpleMessage("Voice message"),
 | 
			
		||||
        "Wallpaper": MessageLookupByLibrary.simpleMessage("Wallpaper"),
 | 
			
		||||
        "Warning!": MessageLookupByLibrary.simpleMessage("Warning!"),
 | 
			
		||||
        "Wednesday": MessageLookupByLibrary.simpleMessage("Wednesday"),
 | 
			
		||||
        "Welcome to the cutest instant messenger in the matrix network.":
 | 
			
		||||
            MessageLookupByLibrary.simpleMessage(
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,6 @@
 | 
			
		||||
import 'dart:io';
 | 
			
		||||
 | 
			
		||||
import 'package:bot_toast/bot_toast.dart';
 | 
			
		||||
import 'package:famedlysdk/famedlysdk.dart';
 | 
			
		||||
import 'package:fluffychat/components/settings_themes.dart';
 | 
			
		||||
import 'package:fluffychat/config/app_config.dart';
 | 
			
		||||
@ -55,6 +56,52 @@ class _SettingsState extends State<Settings> {
 | 
			
		||||
        .tryRequestWithLoadingDialog(matrix.client.logout());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void _changePasswordAccountAction(BuildContext context) async {
 | 
			
		||||
    final oldPassword = await SimpleDialogs(context).enterText(
 | 
			
		||||
      password: true,
 | 
			
		||||
      titleText: L10n.of(context).pleaseEnterYourPassword,
 | 
			
		||||
    );
 | 
			
		||||
    if (oldPassword == null) return;
 | 
			
		||||
    final newPassword = await SimpleDialogs(context).enterText(
 | 
			
		||||
      password: true,
 | 
			
		||||
      titleText: L10n.of(context).chooseAStrongPassword,
 | 
			
		||||
    );
 | 
			
		||||
    if (newPassword == null) return;
 | 
			
		||||
    await SimpleDialogs(context).tryRequestWithLoadingDialog(
 | 
			
		||||
      Matrix.of(context)
 | 
			
		||||
          .client
 | 
			
		||||
          .changePassword(newPassword, oldPassword: oldPassword),
 | 
			
		||||
    );
 | 
			
		||||
    BotToast.showText(text: L10n.of(context).passwordHasBeenChanged);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void _deleteAccountAction(BuildContext context) async {
 | 
			
		||||
    if (await SimpleDialogs(context).askConfirmation(
 | 
			
		||||
          titleText: L10n.of(context).warning,
 | 
			
		||||
          contentText: L10n.of(context).deactivateAccountWarning,
 | 
			
		||||
          dangerous: true,
 | 
			
		||||
        ) ==
 | 
			
		||||
        false) {
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    if (await SimpleDialogs(context).askConfirmation(dangerous: true) ==
 | 
			
		||||
        false) {
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    final password = await SimpleDialogs(context).enterText(
 | 
			
		||||
      password: true,
 | 
			
		||||
      titleText: L10n.of(context).pleaseEnterYourPassword,
 | 
			
		||||
    );
 | 
			
		||||
    if (password == null) return;
 | 
			
		||||
    await SimpleDialogs(context).tryRequestWithLoadingDialog(
 | 
			
		||||
      Matrix.of(context).client.deactivateAccount(auth: {
 | 
			
		||||
        'type': 'm.login.password',
 | 
			
		||||
        'user': Matrix.of(context).client.userID,
 | 
			
		||||
        'password': password,
 | 
			
		||||
      }),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void setJitsiInstanceAction(BuildContext context) async {
 | 
			
		||||
    var jitsi = await SimpleDialogs(context).enterText(
 | 
			
		||||
      titleText: L10n.of(context).editJitsiInstance,
 | 
			
		||||
@ -359,11 +406,27 @@ class _SettingsState extends State<Settings> {
 | 
			
		||||
              title: Text(L10n.of(context).sendBugReports),
 | 
			
		||||
              onTap: () => SentryController.toggleSentryAction(context),
 | 
			
		||||
            ),
 | 
			
		||||
            Divider(thickness: 1),
 | 
			
		||||
            ListTile(
 | 
			
		||||
              trailing: Icon(Icons.vpn_key),
 | 
			
		||||
              title: Text(
 | 
			
		||||
                'Change password',
 | 
			
		||||
              ),
 | 
			
		||||
              onTap: () => _changePasswordAccountAction(context),
 | 
			
		||||
            ),
 | 
			
		||||
            ListTile(
 | 
			
		||||
              trailing: Icon(Icons.exit_to_app),
 | 
			
		||||
              title: Text(L10n.of(context).logout),
 | 
			
		||||
              onTap: () => logoutAction(context),
 | 
			
		||||
            ),
 | 
			
		||||
            ListTile(
 | 
			
		||||
              trailing: Icon(Icons.delete_forever),
 | 
			
		||||
              title: Text(
 | 
			
		||||
                L10n.of(context).deleteAccount,
 | 
			
		||||
                style: TextStyle(color: Colors.red),
 | 
			
		||||
              ),
 | 
			
		||||
              onTap: () => _deleteAccountAction(context),
 | 
			
		||||
            ),
 | 
			
		||||
            Divider(thickness: 1),
 | 
			
		||||
            ListTile(
 | 
			
		||||
              title: Text(
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user