diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml
index 0c913bf5b..0d57e9fd9 100644
--- a/.github/workflows/flatpak.yml
+++ b/.github/workflows/flatpak.yml
@@ -86,7 +86,7 @@ jobs:
draft: false
prerelease: false
title: "Latest Release"
- automatic_release_tag: "v5.0.144"
+ automatic_release_tag: "v5.0.145"
files: |
${{ github.workspace }}/artifacts/Invoice-Ninja-Archive
${{ github.workspace }}/artifacts/Invoice-Ninja-Hash
diff --git a/flatpak/com.invoiceninja.InvoiceNinja.metainfo.xml b/flatpak/com.invoiceninja.InvoiceNinja.metainfo.xml
index 147b2f6aa..2e550992d 100644
--- a/flatpak/com.invoiceninja.InvoiceNinja.metainfo.xml
+++ b/flatpak/com.invoiceninja.InvoiceNinja.metainfo.xml
@@ -50,6 +50,7 @@
+
diff --git a/lib/constants.dart b/lib/constants.dart
index 9e98c16b9..d991b266a 100644
--- a/lib/constants.dart
+++ b/lib/constants.dart
@@ -4,7 +4,7 @@ class Constants {
}
// TODO remove version once #46609 is fixed
-const String kClientVersion = '5.0.144';
+const String kClientVersion = '5.0.145';
const String kMinServerVersion = '5.0.4';
const String kAppName = 'Invoice Ninja';
@@ -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) {
diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart
index cf7de56f2..712228880 100644
--- a/lib/utils/i18n.dart
+++ b/lib/utils/i18n.dart
@@ -18,6 +18,8 @@ mixin LocalizationsProvider on LocaleCodeAware {
static final Map> _localizedValues = {
'en': {
// STARTER: lang key - do not remove comment
+ 'payment_type_credit': 'Payment Type Credit',
+ 'payment_type_debit': 'Payment Type Debit',
'send_emails_to': 'Send Emails To',
'primary_contact': 'Primary Contact',
'all_contacts': 'All Contacts',
diff --git a/pubspec.foss.yaml b/pubspec.foss.yaml
index f9c20a94f..0c56cccfd 100644
--- a/pubspec.foss.yaml
+++ b/pubspec.foss.yaml
@@ -1,6 +1,6 @@
name: invoiceninja_flutter
description: Client for Invoice Ninja
-version: 5.0.144+144
+version: 5.0.145+145
homepage: https://invoiceninja.com
documentation: https://invoiceninja.github.io
publish_to: none
diff --git a/pubspec.yaml b/pubspec.yaml
index 06db291ad..7bafb445e 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,6 +1,6 @@
name: invoiceninja_flutter
description: Client for Invoice Ninja
-version: 5.0.144+144
+version: 5.0.145+145
homepage: https://invoiceninja.com
documentation: https://invoiceninja.github.io
publish_to: none
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index 5f26dc3e9..5e56b8e37 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -1,5 +1,5 @@
name: invoiceninja
-version: '5.0.144'
+version: '5.0.145'
summary: Create invoices, accept payments, track expenses & time tasks
description: "### Note: if the app fails to run using `snap run invoiceninja` it may help to run `/snap/invoiceninja/current/bin/invoiceninja` instead