diff --git a/lib/data/models/entities.dart b/lib/data/models/entities.dart index da4414d83..2c90b7727 100644 --- a/lib/data/models/entities.dart +++ b/lib/data/models/entities.dart @@ -162,7 +162,9 @@ abstract class BaseEntity implements SelectableEntity { bool includeEdit = false}) { final actions = []; - if (userCompany.canEditEntity(this) && (isArchived || isDeleted)) { + // TODO remove ?? check + if (userCompany.canEditEntity(this) && + (isArchived || (isDeleted ?? false))) { actions.add(EntityAction.restore); } diff --git a/lib/data/models/group_model.dart b/lib/data/models/group_model.dart index bd250dfd1..e9ff3c3d5 100644 --- a/lib/data/models/group_model.dart +++ b/lib/data/models/group_model.dart @@ -130,7 +130,8 @@ abstract class GroupEntity extends Object bool includeEdit = false}) { final actions = []; - if (!isDeleted) { + // TODO remove ?? + if (!(isDeleted ?? false)) { if (includeEdit && userCompany.canEditEntity(this)) { actions.add(EntityAction.edit); } diff --git a/lib/ui/group/view/group_view.dart b/lib/ui/group/view/group_view.dart index 49cb610c4..07e655d22 100644 --- a/lib/ui/group/view/group_view.dart +++ b/lib/ui/group/view/group_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:invoiceninja_flutter/ui/app/actions_menu_button.dart'; +import 'package:invoiceninja_flutter/ui/app/buttons/edit_icon_button.dart'; import 'package:invoiceninja_flutter/ui/group/view/group_view_vm.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_state_title.dart'; @@ -21,26 +22,26 @@ class _GroupViewState extends State { @override Widget build(BuildContext context) { final viewModel = widget.viewModel; + final userCompany = viewModel.state.userCompany; final group = viewModel.group; return Scaffold( appBar: AppBar( title: EntityStateTitle(entity: group), - actions: group.isNew - ? [] - : [ - IconButton( - icon: Icon(Icons.edit), - onPressed: () { - viewModel.onEditPressed(context); - }, - ), - ActionMenuButton( - isSaving: viewModel.isSaving, - entity: group, - onSelected: viewModel.onEntityAction, - ), - ], + actions: [ + userCompany.canEditEntity(group) + ? EditIconButton( + isVisible: !(group.isDeleted ?? false), // TODO remove this + onPressed: () => viewModel.onEditPressed(context), + ) + : Container(), + ActionMenuButton( + entityActions: group.getActions(userCompany: userCompany), + isSaving: viewModel.isSaving, + entity: group, + onSelected: viewModel.onEntityAction, + ) + ], ), body: FormCard(children: [ // STARTER: widgets - do not remove comment diff --git a/stubs/ui/stub/view/stub_view b/stubs/ui/stub/view/stub_view index e912989ec..11722c41c 100644 --- a/stubs/ui/stub/view/stub_view +++ b/stubs/ui/stub/view/stub_view @@ -1,5 +1,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:invoiceninja_flutter/ui/app/buttons/edit_icon_button.dart'; import 'package:invoiceninja_flutter/ui/app/actions_menu_button.dart'; import 'package:invoiceninja_flutter/ui/stub/view/stub_view_vm.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart'; @@ -22,27 +23,26 @@ class _StubViewState extends State { @override Widget build(BuildContext context) { final viewModel = widget.viewModel; + final userCompany = viewModel.state.userCompany; final stub = viewModel.stub; return Scaffold( appBar: AppBar( title: EntityStateTitle(entity: stub), - actions: stub.isNew - ? [] - : [ - IconButton( - icon: Icon(Icons.edit), - onPressed: () { - viewModel.onEditPressed(context); - }, - ), - ActionMenuButton( - user: viewModel.company.user, - isSaving: viewModel.isSaving, - entity: stub, - onSelected: viewModel.onEntityAction, - ), - ], + actions: [ + userCompany.canEditEntity(stub) + ? EditIconButton( + isVisible: !stub.isDeleted, + onPressed: () => viewModel.onEditPressed(context), + ) + : Container(), + ActionMenuButton( + entityActions: stub.getActions(userCompany: userCompany), + isSaving: viewModel.isSaving, + entity: stub, + onSelected: viewModel.onEntityAction, + ) + ], ), body: FormCard( children: [