diff --git a/lib/data/models/entities.dart b/lib/data/models/entities.dart index 6e87cd2e4..dbfa0a576 100644 --- a/lib/data/models/entities.dart +++ b/lib/data/models/entities.dart @@ -367,6 +367,8 @@ abstract class BaseEntity implements SelectableEntity { bool get isEditable => !isDeleted; + bool get isRestorable => true; + bool userCanAccess(String userId) => createdUserId == userId || assignedUserId == userId; diff --git a/lib/data/models/payment_model.dart b/lib/data/models/payment_model.dart index 89211de78..c78d8cd4a 100644 --- a/lib/data/models/payment_model.dart +++ b/lib/data/models/payment_model.dart @@ -471,6 +471,9 @@ abstract class PaymentEntity extends Object kPaymentStatusPartiallyRefunded ].contains(statusId); + @override + bool get isRestorable => false; + @override FormatNumberType get listDisplayAmountType => FormatNumberType.money; diff --git a/lib/ui/app/dismissible_entity.dart b/lib/ui/app/dismissible_entity.dart index e08bc10f5..9b8eda465 100644 --- a/lib/ui/app/dismissible_entity.dart +++ b/lib/ui/app/dismissible_entity.dart @@ -85,23 +85,24 @@ class DismissibleEntity extends StatelessWidget { endActionPane: ActionPane( motion: const DrawerMotion(), children: [ - entity.isActive - ? SlidableAction( - label: localization.archive, - backgroundColor: Colors.orange, - foregroundColor: Colors.white, - icon: Icons.archive, - onPressed: (context) => - handleEntityAction(entity, EntityAction.archive), - ) - : SlidableAction( - label: localization.restore, - backgroundColor: Colors.blue, - foregroundColor: Colors.white, - icon: Icons.restore, - onPressed: (context) => - handleEntityAction(entity, EntityAction.restore), - ), + if (entity.isActive) + SlidableAction( + label: localization.archive, + backgroundColor: Colors.orange, + foregroundColor: Colors.white, + icon: Icons.archive, + onPressed: (context) => + handleEntityAction(entity, EntityAction.archive), + ) + else if (entity.isRestorable) + SlidableAction( + label: localization.restore, + backgroundColor: Colors.blue, + foregroundColor: Colors.white, + icon: Icons.restore, + onPressed: (context) => + handleEntityAction(entity, EntityAction.restore), + ), if (!entity.isDeleted) SlidableAction( label: localization.delete,