diff --git a/lib/constants.dart b/lib/constants.dart index 9e98c16b9..8832de1e7 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -487,6 +487,7 @@ const String kGatewayStripe = 'd14dd26a37cecc30fdd65700bfb55b23'; const String kGatewayStripeConnect = 'd14dd26a47cecc30fdd65700bfb67b34'; const String kGatewayAuthorizeNet = '3b6621f970ab18887c4f6dca78d3f8bb'; const String kGatewayCheckoutCom = '3758e7f7c6f4cecf0f4f348b9a00f456'; +const String kGatewayPayPalREST = '80af24a6a691230bbec33e930ab40665'; const String kGatewayPayPalExpress = '38f2c48af60c7dd69e04248cbb24c36e'; const String kGatewayPayPalPlatform = '80af24a6a691230bbec33e930ab40666'; const String kGatewayWePay = '8fdeed552015b3c7b44ed6c8ebd9e992'; diff --git a/lib/redux/static/static_selectors.dart b/lib/redux/static/static_selectors.dart index daac75a00..684fa92ff 100644 --- a/lib/redux/static/static_selectors.dart +++ b/lib/redux/static/static_selectors.dart @@ -1,5 +1,6 @@ // Package imports: import 'package:built_collection/built_collection.dart'; +import 'package:invoiceninja_flutter/constants.dart'; import 'package:memoize/memoize.dart'; // Project imports: @@ -127,13 +128,36 @@ List sizeList(BuiltMap sizeMap) { return list; } -var memoizedGatewayList = memo1( - (BuiltMap gatewayMap) => gatewayList(gatewayMap)); +var memoizedGatewayList = memo2( + (BuiltMap gatewayMap, bool isHosted) => + gatewayList(gatewayMap, isHosted)); -List gatewayList(BuiltMap gatewayMap) { - final list = gatewayMap.keys - .where((gatewayId) => gatewayMap[gatewayId]!.isVisible) - .toList(); +List gatewayList( + BuiltMap gatewayMap, bool isHosted) { + final list = gatewayMap.keys.where((gatewayId) { + final gateway = gatewayMap[gatewayId]!; + + if (!gateway.isVisible) { + return false; + } + + if (isHosted) { + if ([ + kGatewayPayPalExpress, + kGatewayPayPalREST, + ].contains(gateway.id)) { + return false; + } + } else { + if ([ + kGatewayPayPalPlatform, + ].contains(gateway.id)) { + return false; + } + } + + return true; + }).toList(); list.sort((idA, idB) => gatewayMap[idA]!.sortOrder.compareTo(gatewayMap[idB]!.sortOrder)); diff --git a/lib/ui/company_gateway/edit/company_gateway_edit.dart b/lib/ui/company_gateway/edit/company_gateway_edit.dart index 1df7333e6..38acc60f8 100644 --- a/lib/ui/company_gateway/edit/company_gateway_edit.dart +++ b/lib/ui/company_gateway/edit/company_gateway_edit.dart @@ -152,8 +152,8 @@ class _CompanyGatewayEditState extends State EntityDropdown( autofocus: true, entityType: EntityType.gateway, - entityList: - memoizedGatewayList(state.staticState.gatewayMap), + entityList: memoizedGatewayList( + state.staticState.gatewayMap, state.isHosted), labelText: localization.provider, entityId: companyGateway.gatewayId, onSelected: (SelectableEntity? gateway) {