Browse Source

Update set key request contract

Vishnu Mohandas 4 years ago
parent
commit
ba48e51516
2 changed files with 54 additions and 10 deletions
  1. 42 0
      lib/models/set_keys_request.dart
  2. 12 10
      lib/services/user_service.dart

+ 42 - 0
lib/models/set_keys_request.dart

@@ -0,0 +1,42 @@
+import 'dart:convert';
+
+class SetKeysRequest {
+  final String kekSalt;
+  final String encryptedKey;
+  final String keyDecryptionNonce;
+  final int memLimit;
+  final int opsLimit;
+
+  SetKeysRequest({
+    this.kekSalt,
+    this.encryptedKey,
+    this.keyDecryptionNonce,
+    this.memLimit,
+    this.opsLimit,
+  });
+
+  Map<String, dynamic> toMap() {
+    return {
+      'kekSalt': kekSalt,
+      'encryptedKey': encryptedKey,
+      'keyDecryptionNonce': keyDecryptionNonce,
+      'memLimit': memLimit,
+      'opsLimit': opsLimit,
+    };
+  }
+
+  factory SetKeysRequest.fromMap(Map<String, dynamic> map) {
+    return SetKeysRequest(
+      kekSalt: map['kekSalt'],
+      encryptedKey: map['encryptedKey'],
+      keyDecryptionNonce: map['keyDecryptionNonce'],
+      memLimit: map['memLimit'],
+      opsLimit: map['opsLimit'],
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory SetKeysRequest.fromJson(String source) =>
+      SetKeysRequest.fromMap(json.decode(source));
+}

+ 12 - 10
lib/services/user_service.dart

@@ -7,6 +7,7 @@ import 'package:photos/core/network.dart';
 import 'package:photos/db/public_keys_db.dart';
 import 'package:photos/models/key_attributes.dart';
 import 'package:photos/models/public_key.dart';
+import 'package:photos/models/set_keys_request.dart';
 import 'package:photos/models/subscription.dart';
 import 'package:photos/services/billing_service.dart';
 import 'package:photos/ui/ott_verification_page.dart';
@@ -166,9 +167,16 @@ class UserService {
     await dialog.show();
     try {
       final keyAttributes = await _config.updatePassword(password);
+      final setKeyRequest = SetKeysRequest(
+        kekSalt: keyAttributes.kekSalt,
+        encryptedKey: keyAttributes.encryptedKey,
+        keyDecryptionNonce: keyAttributes.keyDecryptionNonce,
+        memLimit: keyAttributes.memLimit,
+        opsLimit: keyAttributes.opsLimit,
+      );
       final response = await _dio.put(
-        _config.getHttpEndpoint() + "/users/key-attributes",
-        data: keyAttributes.toMap(),
+        _config.getHttpEndpoint() + "/users/keys",
+        data: setKeyRequest.toMap(),
         options: Options(
           headers: {
             "X-Auth-Token": _config.getToken(),
@@ -178,14 +186,8 @@ class UserService {
       await dialog.hide();
       if (response != null && response.statusCode == 200) {
         await _config.setKeyAttributes(keyAttributes);
-        Navigator.of(context).pushAndRemoveUntil(
-          MaterialPageRoute(
-            builder: (BuildContext context) {
-              return SubscriptionPage(isOnboarding: true);
-            },
-          ),
-          (route) => route.isFirst,
-        );
+        showToast("password changed successfully");
+        Navigator.of(context).pop();
       } else {
         showGenericErrorDialog(context);
       }