Use TupleKey(ObjectKey-AccountId-UserName) to store data to hive
(cherry picked from commit e0ace535d5f3af71eb13598d92524caf2c6d9bbf)
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:model/account/authentication_type.dart';
|
||||
import 'package:model/account/password.dart';
|
||||
import 'package:model/oidc/token.dart';
|
||||
|
||||
class AccountRequest with EquatableMixin {
|
||||
final UserName? userName;
|
||||
@@ -16,8 +19,7 @@ class AccountRequest with EquatableMixin {
|
||||
this.authenticationType = AuthenticationType.none,
|
||||
});
|
||||
|
||||
String get basicAuth =>
|
||||
'Basic ${base64Encode(utf8.encode('${userName?.userName}:${password?.value}'))}';
|
||||
String get basicAuth => 'Basic ${base64Encode(utf8.encode('${userName?.value}:${password?.value}'))}';
|
||||
|
||||
String get bearerToken => 'Bearer ${token?.token}';
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/account/account.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart';
|
||||
|
||||
class JmapAccount with EquatableMixin {
|
||||
|
||||
final AccountId accountId;
|
||||
final AccountName name;
|
||||
final bool isPersonal;
|
||||
final bool isReadOnly;
|
||||
final Map<CapabilityIdentifier, CapabilityProperties> accountCapabilities;
|
||||
|
||||
JmapAccount(
|
||||
this.accountId,
|
||||
this.name,
|
||||
this.isPersonal,
|
||||
this.isReadOnly,
|
||||
this.accountCapabilities,
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object> get props => [
|
||||
accountId,
|
||||
name,
|
||||
isPersonal,
|
||||
isReadOnly,
|
||||
accountCapabilities
|
||||
];
|
||||
}
|
||||
@@ -1,21 +1,24 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:model/account/authentication_type.dart';
|
||||
|
||||
class Account with EquatableMixin {
|
||||
class PersonalAccount with EquatableMixin {
|
||||
final String id;
|
||||
final AuthenticationType authenticationType;
|
||||
final bool isSelected;
|
||||
final AccountId? accountId;
|
||||
final String? apiUrl;
|
||||
final UserName? userName;
|
||||
|
||||
Account(
|
||||
PersonalAccount(
|
||||
this.id,
|
||||
this.authenticationType,
|
||||
{
|
||||
required this.isSelected,
|
||||
this.accountId,
|
||||
this.apiUrl,
|
||||
this.userName
|
||||
}
|
||||
);
|
||||
|
||||
@@ -25,6 +28,7 @@ class Account with EquatableMixin {
|
||||
authenticationType,
|
||||
isSelected,
|
||||
accountId,
|
||||
apiUrl
|
||||
apiUrl,
|
||||
userName
|
||||
];
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class UserName with EquatableMixin {
|
||||
final String userName;
|
||||
|
||||
UserName(this.userName);
|
||||
|
||||
@override
|
||||
List<Object> get props => [userName];
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
class NotFoundPersonalAccountException implements Exception {}
|
||||
@@ -1,16 +1,15 @@
|
||||
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:model/account/account.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/account/account.dart';
|
||||
import 'package:model/account/jmap_account.dart';
|
||||
|
||||
extension AccountExtension on Account {
|
||||
|
||||
Account fromAccountId({required AccountId accountId, required String apiUrl}) {
|
||||
return Account(
|
||||
id,
|
||||
authenticationType,
|
||||
isSelected: isSelected,
|
||||
accountId: accountId,
|
||||
apiUrl: apiUrl
|
||||
);
|
||||
JmapAccount toJmapAccount(AccountId accountId) {
|
||||
return JmapAccount(
|
||||
accountId,
|
||||
name,
|
||||
isPersonal,
|
||||
isReadOnly,
|
||||
accountCapabilities);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/user_name.dart';
|
||||
import 'package:model/account/personal_account.dart';
|
||||
|
||||
extension PersonalAccountExtension on PersonalAccount {
|
||||
|
||||
PersonalAccount fromAccount({
|
||||
required AccountId accountId,
|
||||
required String apiUrl,
|
||||
required UserName userName,
|
||||
}) {
|
||||
return PersonalAccount(
|
||||
id,
|
||||
authenticationType,
|
||||
isSelected: isSelected,
|
||||
accountId: accountId,
|
||||
apiUrl: apiUrl,
|
||||
userName: userName);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,8 @@ import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart
|
||||
import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/capability/empty_capability.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:model/error_type_handler/account_exception.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:uri/uri.dart';
|
||||
|
||||
extension SessionExtension on Session {
|
||||
@@ -49,4 +51,18 @@ extension SessionExtension on Session {
|
||||
}
|
||||
return (capability as T);
|
||||
}
|
||||
|
||||
JmapAccount get personalAccount {
|
||||
if (accounts.isNotEmpty) {
|
||||
final listPersonalAccount = accounts.entries
|
||||
.map((entry) => entry.value.toJmapAccount(entry.key))
|
||||
.where((jmapAccount) => jmapAccount.isPersonal)
|
||||
.toList();
|
||||
|
||||
if (listPersonalAccount.isNotEmpty) {
|
||||
return listPersonalAccount.first;
|
||||
}
|
||||
}
|
||||
throw NotFoundPersonalAccountException();
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
library model;
|
||||
|
||||
export 'account/account.dart';
|
||||
// Account
|
||||
export 'account/personal_account.dart';
|
||||
export 'account/account_request.dart';
|
||||
export 'account/account_type.dart';
|
||||
export 'account/authentication_type.dart';
|
||||
export 'account/password.dart';
|
||||
// Account
|
||||
export 'account/user_name.dart';
|
||||
export 'account/jmap_account.dart';
|
||||
// AutoComplete
|
||||
export 'autocomplete/auto_complete_pattern.dart';
|
||||
// Contact
|
||||
@@ -52,11 +52,12 @@ export 'extensions/user_profile_extension.dart';
|
||||
export 'extensions/utc_date_extension.dart';
|
||||
export 'extensions/email_filter_condition_extension.dart';
|
||||
export 'extensions/list_email_header_extension.dart';
|
||||
export 'extensions/account_extension.dart';
|
||||
export 'extensions/personal_account_extension.dart';
|
||||
export 'extensions/list_presentation_mailbox_extension.dart';
|
||||
export 'extensions/list_identity_id_extension.dart';
|
||||
export 'extensions/email_id_extensions.dart';
|
||||
export 'extensions/account_id_extensions.dart';
|
||||
export 'extensions/account_extension.dart';
|
||||
// Identity
|
||||
export 'identity/identity_request_dto.dart';
|
||||
export 'mailbox/expand_mode.dart';
|
||||
|
||||
Reference in New Issue
Block a user