From 3c54b3946e86690fa2eb024c9c43e94ad82b001e Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Wed, 19 Oct 2022 15:07:28 +0700 Subject: [PATCH] TF-1018 Add Configuration guide for App Grid --- docs/configuration/app_grid_configuration.md | 48 +++++++++++++++++++ .../presentation/mailbox_view_web.dart | 17 ++++--- .../app_list_dashboard_item.dart | 2 +- 3 files changed, 57 insertions(+), 10 deletions(-) create mode 100644 docs/configuration/app_grid_configuration.md diff --git a/docs/configuration/app_grid_configuration.md b/docs/configuration/app_grid_configuration.md new file mode 100644 index 000000000..aa29d7f0a --- /dev/null +++ b/docs/configuration/app_grid_configuration.md @@ -0,0 +1,48 @@ +## Configuration for App Grid + +### Context +- Team Mail is a service inside Twake Workspace which include other services +- User need to access other services from Team Mail + +### How to config + +1. Add services to configuration file + +- Each service have the information: +``` + { + "appName": "Contacts", + "icon": "ic_contacts_app.svg", + "appLink": "https://openpaas.linagora.com/contacts/" + } +``` + +- All services must be added to the configuration file [configurations\app_dashboard.json](https://github.com/linagora/tmail-flutter/blob/master/configurations/app_dashboard.json) +For example: +``` +{ + "apps": [ + { + "appName": "Twake", + "icon": "ic_twake_app.svg", + "appLink": "http://twake.linagora.com/" + }, + { + "appName": "App 1", + "icon": "ic_twake_app.svg", + "appLink": "http://twake.linagora.com/" + }, + ... + ] +} +``` + +- `appName`: The name will be showed in App Grid +- `icon`: Name of icon was added in `configurations\icons` folder +- `appLink`: Service URL + +2. Enable it in [env.file](https://github.com/linagora/tmail-flutter/blob/master/env.file) +``` +APP_GRID_AVAILABLE=supported +``` +If you want to disable it, please change the value to `unsupported` or remove this from `env.file` diff --git a/lib/features/mailbox/presentation/mailbox_view_web.dart b/lib/features/mailbox/presentation/mailbox_view_web.dart index 1c3985eab..53eafc0fd 100644 --- a/lib/features/mailbox/presentation/mailbox_view_web.dart +++ b/lib/features/mailbox/presentation/mailbox_view_web.dart @@ -162,11 +162,13 @@ class MailboxView extends GetWidget with AppLoaderMixin, Popu }), _buildLoadingView(), AppConfig.appGridDashboardAvailable && _responsiveUtils.isWebNotDesktop(context) - ? _buildAppGridDashboard(context) + ? Column(children: [ + _buildAppGridDashboard(context), + const SizedBox(height: 8), + const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2), + const SizedBox(height: 8), + ]) : const SizedBox.shrink(), - const SizedBox(height: 8), - const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2), - const SizedBox(height: 8), Obx(() => controller.defaultMailboxHasChild ? _buildMailboxCategory(context, MailboxCategories.exchange, controller.defaultRootNode) : const SizedBox.shrink()), @@ -547,15 +549,12 @@ class MailboxView extends GetWidget with AppLoaderMixin, Popu return Obx(() { final linagoraApps = controller.mailboxDashBoardController.appGridDashboardController.linagoraApplications.value; if (linagoraApps != null && linagoraApps.apps.isNotEmpty) { - return ListView.separated( + return ListView.builder( shrinkWrap: true, itemCount: linagoraApps.apps.length, itemBuilder: (context, index) { return AppListDashboardItem(linagoraApps.apps[index]); - }, - separatorBuilder: (context, index) { - return const SizedBox.shrink(); - }, + } ); } return const SizedBox.shrink(); diff --git a/lib/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart b/lib/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart index 6abc7b04e..8b72224be 100644 --- a/lib/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart +++ b/lib/features/mailbox_dashboard/presentation/widgets/app_dashboard/app_list_dashboard_item.dart @@ -28,7 +28,7 @@ class _AppListDashboardItemState extends State { onHover: (value) => setState(() => _isHoverItem = value), child: Container( decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), + borderRadius: const BorderRadius.all(Radius.circular(10)), color: _backgroundColorItem(context)), padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 18), margin: const EdgeInsets.symmetric(horizontal: 16),