From 2b259809f70c3b0cb75883016884ab950c24fc83 Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Sat, 15 Oct 2022 00:10:36 +0700 Subject: [PATCH] TF-1018 Implement AppDashboardConfigurationParser --- .../app_dashboard_configuration_parser.dart | 24 ++++++++++++++++++ .../domain/app_dashboard/linagora_app.dart | 25 +++++++++++++++++++ .../app_dashboard/linagora_applications.dart | 20 +++++++++++++++ lib/main/bindings/core/core_bindings.dart | 1 + 4 files changed, 70 insertions(+) create mode 100644 lib/features/mailbox_dashboard/domain/app_dashboard/app_dashboard_configuration_parser.dart create mode 100644 lib/features/mailbox_dashboard/domain/app_dashboard/linagora_app.dart create mode 100644 lib/features/mailbox_dashboard/domain/app_dashboard/linagora_applications.dart diff --git a/lib/features/mailbox_dashboard/domain/app_dashboard/app_dashboard_configuration_parser.dart b/lib/features/mailbox_dashboard/domain/app_dashboard/app_dashboard_configuration_parser.dart new file mode 100644 index 000000000..5479bf7fb --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/app_dashboard/app_dashboard_configuration_parser.dart @@ -0,0 +1,24 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:typed_data'; +import 'package:core/utils/app_logger.dart'; +import 'package:core/utils/config/app_config_parser.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/domain/app_dashboard/linagora_applications.dart'; + +class AppDashboardConfigurationParser extends AppConfigParser { + @override + Future parse(String value) async { + try { + final jsonObject = jsonDecode(value); + return LinagoraApplications.fromJson(jsonObject); + } catch (e) { + logError('AppDashboardConfigurationParser::parse(): $e'); + rethrow; + } + } + + @override + Future parseData(ByteData data) { + throw UnimplementedError(); + } +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/app_dashboard/linagora_app.dart b/lib/features/mailbox_dashboard/domain/app_dashboard/linagora_app.dart new file mode 100644 index 000000000..8624b6d40 --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/app_dashboard/linagora_app.dart @@ -0,0 +1,25 @@ +import 'package:equatable/equatable.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'linagora_app.g.dart'; + +@JsonSerializable() +class LinagoraApp with EquatableMixin{ + @JsonKey(name: 'appName') + final String appName; + + @JsonKey(name: 'icon') + final String iconName; + + @JsonKey(name: 'appLink') + final Uri appUri; + + LinagoraApp(this.appName, this.iconName, this.appUri); + + factory LinagoraApp.fromJson(Map json) => _$LinagoraAppFromJson(json); + + Map toJson() => _$LinagoraAppToJson(this); + + @override + List get props => [appName, iconName, appUri]; +} \ No newline at end of file diff --git a/lib/features/mailbox_dashboard/domain/app_dashboard/linagora_applications.dart b/lib/features/mailbox_dashboard/domain/app_dashboard/linagora_applications.dart new file mode 100644 index 000000000..28ceedbfd --- /dev/null +++ b/lib/features/mailbox_dashboard/domain/app_dashboard/linagora_applications.dart @@ -0,0 +1,20 @@ +import 'package:equatable/equatable.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'linagora_app.dart'; + +part 'linagora_applications.g.dart'; + +@JsonSerializable() +class LinagoraApplications with EquatableMixin { + @JsonKey(name: 'apps') + final List apps; + + LinagoraApplications(this.apps); + + factory LinagoraApplications.fromJson(Map json) => _$LinagoraApplicationsFromJson(json); + + Map toJson() => _$LinagoraApplicationsToJson(this); + + @override + List get props => [apps]; +} \ No newline at end of file diff --git a/lib/main/bindings/core/core_bindings.dart b/lib/main/bindings/core/core_bindings.dart index 72741eabf..cebe5745c 100644 --- a/lib/main/bindings/core/core_bindings.dart +++ b/lib/main/bindings/core/core_bindings.dart @@ -59,5 +59,6 @@ class CoreBindings extends Bindings { void _bindingUtils() { Get.put(const Uuid()); Get.put(CompressFileUtils()); + Get.lazyPut(() => AppConfigLoader()); } } \ No newline at end of file