diff --git a/lib/data/models/client_model.dart b/lib/data/models/client_model.dart index 17a4a8945..eb2b226dc 100644 --- a/lib/data/models/client_model.dart +++ b/lib/data/models/client_model.dart @@ -4,6 +4,7 @@ import 'package:built_value/built_value.dart'; import 'package:built_value/serializer.dart'; import 'package:collection/collection.dart'; import 'package:diacritic/diacritic.dart'; +import 'package:flutter_redux/flutter_redux.dart'; // Project imports: import 'package:invoiceninja_flutter/constants.dart'; @@ -12,7 +13,9 @@ import 'package:invoiceninja_flutter/data/models/group_model.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/system_log_model.dart'; import 'package:invoiceninja_flutter/data/models/tax_model.dart'; +import 'package:invoiceninja_flutter/main_app.dart'; import 'package:invoiceninja_flutter/redux/app/app_state.dart'; +import 'package:invoiceninja_flutter/redux/design/design_selectors.dart'; import 'package:invoiceninja_flutter/redux/static/static_state.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/strings.dart'; @@ -666,6 +669,14 @@ abstract class ClientEntity extends Object actions.add(EntityAction.documents); } + if (!isDeleted!) { + final store = StoreProvider.of(navigatorKey.currentContext!); + if (hasDesignTemplatesForEntityType( + store.state.designState.map, entityType)) { + actions.add(EntityAction.runTemplate); + } + } + if (!isDeleted! && !multiselect) { if (actions.isNotEmpty && actions.last != null) { actions.add(null); diff --git a/lib/utils/icons.dart b/lib/utils/icons.dart index 157f00e39..1e27a3381 100644 --- a/lib/utils/icons.dart +++ b/lib/utils/icons.dart @@ -129,6 +129,8 @@ IconData? getEntityActionIcon(EntityAction? entityAction) { return MdiIcons.xml; case EntityAction.unlink: return MdiIcons.pipeDisconnected; + case EntityAction.runTemplate: + return MdiIcons.arrowRightBoldCircleOutline; default: return null; }