From 883182cd15f341fee8622d39d890cdc5a992f02b Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 10 May 2021 20:41:34 +0300 Subject: [PATCH] Add client portal action to clients --- lib/data/models/client_model.dart | 2 ++ lib/redux/client/client_actions.dart | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/data/models/client_model.dart b/lib/data/models/client_model.dart index 0d31ef224..3c0ada44c 100644 --- a/lib/data/models/client_model.dart +++ b/lib/data/models/client_model.dart @@ -593,6 +593,8 @@ abstract class ClientEntity extends Object actions.add(EntityAction.settings); } + actions.add(EntityAction.clientPortal); + if (actions.isNotEmpty) { actions.add(null); } diff --git a/lib/redux/client/client_actions.dart b/lib/redux/client/client_actions.dart index 05220c3fc..79477e96a 100644 --- a/lib/redux/client/client_actions.dart +++ b/lib/redux/client/client_actions.dart @@ -12,6 +12,7 @@ import 'package:invoiceninja_flutter/ui/app/entities/entity_actions_dialog.dart' import 'package:invoiceninja_flutter/utils/completers.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart'; +import 'package:url_launcher/url_launcher.dart'; class ViewClientList implements PersistUI, StopLoading { ViewClientList({ @@ -270,7 +271,7 @@ class FilterClientsByCustom4 implements PersistUI { } void handleClientAction( - BuildContext context, List clients, EntityAction action) { + BuildContext context, List clients, EntityAction action) async { if (clients.isEmpty) { return; } @@ -279,12 +280,18 @@ void handleClientAction( final state = store.state; final localization = AppLocalization.of(context); final clientIds = clients.map((client) => client.id).toList(); - final client = clients[0]; + final client = clients[0] as ClientEntity; switch (action) { case EntityAction.edit: editEntity(context: context, entity: client); break; + case EntityAction.clientPortal: + final url = client.primaryContact?.silentLink ?? ''; + if (url.isNotEmpty && await canLaunch(url)) { + await launch(url); + } + break; case EntityAction.settings: store.dispatch(ViewSettings( client: client,