TF-3260 Parsing Linagora Ecosystem in AppGrid
This commit is contained in:
+19
@@ -0,0 +1,19 @@
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/converters/api_key_linagora_ecosystem_converter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
|
||||
class ApiKeyLinagoraEcosystem extends LinagoraEcosystemProperties {
|
||||
final String value;
|
||||
|
||||
ApiKeyLinagoraEcosystem(this.value);
|
||||
|
||||
static LinagoraEcosystemProperties? deserialize(dynamic json) {
|
||||
if (json is String) {
|
||||
return const ApiKeyLinagoraEcosystemConverter().fromJson(json);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [value];
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/converters/api_url_linagora_ecosystem_converter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/empty_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
|
||||
class ApiUrlLinagoraEcosystem extends LinagoraEcosystemProperties {
|
||||
final String value;
|
||||
|
||||
ApiUrlLinagoraEcosystem(this.value);
|
||||
|
||||
static LinagoraEcosystemProperties? deserialize(dynamic json) {
|
||||
if (json is String) {
|
||||
return const ApiUrlLinagoraEcosystemConverter().fromJson(json);
|
||||
} else {
|
||||
return EmptyLinagoraEcosystem();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [value];
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/empty_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
|
||||
part 'app_linagora_ecosystem.g.dart';
|
||||
|
||||
@JsonSerializable(explicitToJson: true, includeIfNull: false)
|
||||
class AppLinagoraEcosystem extends LinagoraEcosystemProperties {
|
||||
final String? appName;
|
||||
final String? logoURL;
|
||||
final String? androidPackageId;
|
||||
final String? iosUrlScheme;
|
||||
final String? iosAppStoreLink;
|
||||
final String? webLink;
|
||||
|
||||
AppLinagoraEcosystem({
|
||||
this.appName,
|
||||
this.logoURL,
|
||||
this.androidPackageId,
|
||||
this.iosUrlScheme,
|
||||
this.iosAppStoreLink,
|
||||
this.webLink,
|
||||
});
|
||||
|
||||
factory AppLinagoraEcosystem.fromJson(Map<String, dynamic> json) => _$AppLinagoraEcosystemFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$AppLinagoraEcosystemToJson(this);
|
||||
|
||||
static LinagoraEcosystemProperties? deserialize(dynamic json) {
|
||||
if (json is Map<String, dynamic>) {
|
||||
return AppLinagoraEcosystem.fromJson(json);
|
||||
} else {
|
||||
return EmptyLinagoraEcosystem();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
appName,
|
||||
logoURL,
|
||||
androidPackageId,
|
||||
iosUrlScheme,
|
||||
iosAppStoreLink,
|
||||
webLink,
|
||||
];
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/api_key_linagora_ecosystem.dart';
|
||||
|
||||
class ApiKeyLinagoraEcosystemConverter implements JsonConverter<ApiKeyLinagoraEcosystem?, String?> {
|
||||
const ApiKeyLinagoraEcosystemConverter();
|
||||
|
||||
@override
|
||||
ApiKeyLinagoraEcosystem? fromJson(String? json) => json != null ? ApiKeyLinagoraEcosystem(json) : null;
|
||||
|
||||
@override
|
||||
String? toJson(ApiKeyLinagoraEcosystem? object) => object?.value;
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/api_url_linagora_ecosystem.dart';
|
||||
|
||||
class ApiUrlLinagoraEcosystemConverter implements JsonConverter<ApiUrlLinagoraEcosystem?, String?> {
|
||||
const ApiUrlLinagoraEcosystemConverter();
|
||||
|
||||
@override
|
||||
ApiUrlLinagoraEcosystem? fromJson(String? json) => json != null ? ApiUrlLinagoraEcosystem(json) : null;
|
||||
|
||||
@override
|
||||
String? toJson(ApiUrlLinagoraEcosystem? object) => object?.value;
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/api_key_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/api_url_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/app_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/converters/mobile_apps_linagora_ecosystem_converter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/default_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/empty_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_identifier.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
|
||||
class LinagoraEcosystemConverter {
|
||||
static final defaultConverter = LinagoraEcosystemConverter();
|
||||
|
||||
BuiltMap<LinagoraEcosystemIdentifier, LinagoraEcosystemProperties? Function(dynamic)>? _mapLinagoraEcosystemConverter;
|
||||
final mapLinagoraEcosystemConverterBuilder = MapBuilder<LinagoraEcosystemIdentifier, LinagoraEcosystemProperties? Function(dynamic)>();
|
||||
|
||||
LinagoraEcosystemConverter() {
|
||||
mapLinagoraEcosystemConverterBuilder.addAll(
|
||||
{
|
||||
LinagoraEcosystemIdentifier.linShareApiUrl: ApiUrlLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.linToApiUrl: ApiUrlLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.twakeApiUrl: ApiUrlLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.linToApiKey: ApiKeyLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.twakeDrive: AppLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.twakeChat: AppLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.twakeSync: AppLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.linShare: AppLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.mobileApps: MobileAppsLinagoraEcosystemConverter.deserialize,
|
||||
});
|
||||
}
|
||||
|
||||
void build() {
|
||||
_mapLinagoraEcosystemConverter = mapLinagoraEcosystemConverterBuilder.build();
|
||||
}
|
||||
|
||||
MapEntry<LinagoraEcosystemIdentifier, LinagoraEcosystemProperties?> convert(String key, dynamic value) {
|
||||
if (_mapLinagoraEcosystemConverter == null) {
|
||||
build();
|
||||
}
|
||||
|
||||
final identifier = LinagoraEcosystemIdentifier(key);
|
||||
if (_mapLinagoraEcosystemConverter!.containsKey(identifier)) {
|
||||
try {
|
||||
return MapEntry(identifier, _mapLinagoraEcosystemConverter![identifier]!.call(value));
|
||||
} catch (e) {
|
||||
return MapEntry(identifier, EmptyLinagoraEcosystem());
|
||||
}
|
||||
} else {
|
||||
if (value is Map<String, dynamic>) {
|
||||
return MapEntry(identifier, AppLinagoraEcosystem.deserialize(value));
|
||||
} else {
|
||||
return MapEntry(identifier, DefaultLinagoraEcosystem(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static LinagoraEcosystem deserialize(Map<String, dynamic>? json) {
|
||||
final apps = json?.map((key, value) => defaultConverter.convert(key, value));
|
||||
return LinagoraEcosystem(apps);
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/converters/linagora_ecosystem_converter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/mobile_apps_linagora_ecosystem.dart';
|
||||
|
||||
class MobileAppsLinagoraEcosystemConverter extends LinagoraEcosystemConverter {
|
||||
static final defaultConverter = MobileAppsLinagoraEcosystemConverter();
|
||||
|
||||
static MobileAppsLinagoraEcosystem? deserialize(dynamic json) {
|
||||
if (json is Map<String, dynamic>) {
|
||||
final apps = json.map((key, value) => defaultConverter.convert(key, value));
|
||||
return MobileAppsLinagoraEcosystem(apps);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
|
||||
part 'default_linagora_ecosystem.g.dart';
|
||||
|
||||
@JsonSerializable(explicitToJson: true, includeIfNull: false)
|
||||
class DefaultLinagoraEcosystem extends LinagoraEcosystemProperties with EquatableMixin {
|
||||
final dynamic properties;
|
||||
|
||||
DefaultLinagoraEcosystem(this.properties);
|
||||
|
||||
factory DefaultLinagoraEcosystem.fromJson(Map<String, dynamic> json) => _$DefaultLinagoraEcosystemFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$DefaultLinagoraEcosystemToJson(this);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [properties];
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
|
||||
part 'empty_linagora_ecosystem.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class EmptyLinagoraEcosystem extends LinagoraEcosystemProperties {
|
||||
|
||||
EmptyLinagoraEcosystem();
|
||||
|
||||
factory EmptyLinagoraEcosystem.fromJson(Map<String, dynamic> json) => _$EmptyLinagoraEcosystemFromJson(json);
|
||||
|
||||
Map<String, dynamic> toJson() => _$EmptyLinagoraEcosystemToJson(this);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/converters/linagora_ecosystem_converter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_identifier.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
|
||||
class LinagoraEcosystem with EquatableMixin {
|
||||
final Map<LinagoraEcosystemIdentifier, LinagoraEcosystemProperties?>? properties;
|
||||
|
||||
LinagoraEcosystem(this.properties);
|
||||
|
||||
factory LinagoraEcosystem.deserialize(Map<String, dynamic>? json) {
|
||||
return LinagoraEcosystemConverter.deserialize(json);
|
||||
}
|
||||
|
||||
@override
|
||||
List<Object?> get props => [properties];
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class LinagoraEcosystemIdentifier with EquatableMixin {
|
||||
static final linShareApiUrl = LinagoraEcosystemIdentifier('linShareApiUrl');
|
||||
static final linToApiUrl = LinagoraEcosystemIdentifier('linToApiUrl');
|
||||
static final twakeApiUrl = LinagoraEcosystemIdentifier('twakeApiUrl');
|
||||
static final linToApiKey = LinagoraEcosystemIdentifier('linToApiKey');
|
||||
static final mobileApps = LinagoraEcosystemIdentifier('mobileApps');
|
||||
static final twakeDrive = LinagoraEcosystemIdentifier('Twake Drive');
|
||||
static final twakeChat = LinagoraEcosystemIdentifier('Twake Chat');
|
||||
static final twakeSync = LinagoraEcosystemIdentifier('Twake Sync');
|
||||
static final linShare = LinagoraEcosystemIdentifier('LinShare');
|
||||
|
||||
final String value;
|
||||
|
||||
LinagoraEcosystemIdentifier(this.value);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [value];
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
abstract class LinagoraEcosystemProperties with EquatableMixin {}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_identifier.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_properties.dart';
|
||||
|
||||
class MobileAppsLinagoraEcosystem extends LinagoraEcosystemProperties {
|
||||
final Map<LinagoraEcosystemIdentifier, LinagoraEcosystemProperties?>? apps;
|
||||
|
||||
MobileAppsLinagoraEcosystem(this.apps);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [apps];
|
||||
}
|
||||
Reference in New Issue
Block a user