diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+
diff --git a/.idea/androidTestResultsUserPreferences.xml b/.idea/androidTestResultsUserPreferences.xml
index 6900c632a..3a1d302ad 100644
--- a/.idea/androidTestResultsUserPreferences.xml
+++ b/.idea/androidTestResultsUserPreferences.xml
@@ -12,6 +12,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index ecd817f69..f40852eb8 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -1,6 +1,7 @@
+
diff --git a/app/build.gradle b/app/build.gradle
index 6053c2726..011b8b786 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -57,15 +57,15 @@ android {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
- compileSdkVersion 31
+ compileSdkVersion 32
defaultConfig {
testInstrumentationRunner = 'androidx.test.runner.AndroidJUnitRunner'
applicationId = 'com.loafwallet'
- minSdkVersion 27
- targetSdkVersion 31
- versionCode 690
- versionName "v2.7.0"
+ minSdkVersion 27
+ targetSdkVersion 32
+ versionCode 705
+ versionName "v2.7.1"
multiDexEnabled true
archivesBaseName = "${versionName}(${versionCode})"
@@ -264,10 +264,10 @@ repositories {
dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
+ androidTestImplementation('androidx.test.espresso:espresso-core:3.4.0')
+ androidTestImplementation('androidx.test:runner:1.4.0')
+ androidTestImplementation('androidx.test:rules:1.4.0')
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.6.20-RC'
@@ -280,10 +280,10 @@ dependencies {
// androidx
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.1'
+ implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
- implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
// preferences
diff --git a/app/src/test/java/PaperKeyTests.java b/app/src/androidTest/java/com/breadwallet/PaperKeyTests.java
similarity index 93%
rename from app/src/test/java/PaperKeyTests.java
rename to app/src/androidTest/java/com/breadwallet/PaperKeyTests.java
index 1b8c930bf..18af06792 100644
--- a/app/src/test/java/PaperKeyTests.java
+++ b/app/src/androidTest/java/com/breadwallet/PaperKeyTests.java
@@ -1,20 +1,15 @@
+package com.breadwallet;
+
import android.util.Log;
-import com.breadwallet.tools.security.SmartValidator;
-import com.breadwallet.tools.util.BRConstants;
import com.breadwallet.tools.util.Bip39Reader;
-import com.breadwallet.tools.util.Utils;
import com.breadwallet.wallet.BRWalletManager;
-import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
-import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.net.URI;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/app/src/androidTest/java/com/breadwallet/platform/PlatformTests.java b/app/src/androidTest/java/com/breadwallet/platform/PlatformTests.java
index cbd143249..b96fd6b13 100644
--- a/app/src/androidTest/java/com/breadwallet/platform/PlatformTests.java
+++ b/app/src/androidTest/java/com/breadwallet/platform/PlatformTests.java
@@ -30,7 +30,6 @@ public class PlatformTests {
// proto is the transport protocol to use for talking to the API (either http or https)
private static final String PROTO = "https";
// host is the server(s) on which the API is hosted
-// private static final String HOST = "api.breadwallet.com";
// convenience getter for the API endpoint
private static final String BASE_URL = PROTO + "://" + BreadApp.HOST;
//feePerKb url
diff --git a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentBuy.java b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentBuy.java
index 8c2f0b2ea..d3790a367 100644
--- a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentBuy.java
+++ b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentBuy.java
@@ -1,5 +1,7 @@
package com.breadwallet.presenter.fragments;
+import static com.breadwallet.tools.util.BRConstants.LW_API_HOST;
+
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ClipData;
@@ -45,7 +47,6 @@ public class FragmentBuy extends Fragment {
private ProgressBar progress;
private WebView webView;
private String onCloseUrl;
- private static final String URL_BUY_LTC = BuildConfig.DEBUG ? "https://api-stage.lite-wallet.org" : "https://api-prod.lite-wallet.org";
private static final String CURRENCY_KEY = "currency_code_key";
private static final String PARTNER_KEY = "partner_key";
private ValueCallback uploadMessage;
@@ -93,6 +94,20 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
webSettings.setDomStorageEnabled(true);
webSettings.setJavaScriptEnabled(true);
+ // App (in Java)
+ WebMessageListener bitrefillListener = new WebMessageListener() {
+ @Override
+ public void onPostMessage(WebView view, WebMessageCompat message, Uri sourceOrigin,
+ boolean isMainFrame, JavaScriptReplyProxy replyProxy) {
+ // do something about view, message, sourceOrigin and isMainFrame.
+ replyProxy.postMessage("Got it!");
+ }
+ };
+
+ if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_MESSAGE_LISTENER)) {
+ WebViewCompat.addWebMessageListener(webView, "bitrefillPostObj", rules, bitrefillListener);
+ }
+
String currency = getArguments().getString(CURRENCY_KEY);
Partner partner = (Partner) getArguments().getSerializable(PARTNER_KEY);
@@ -101,20 +116,19 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
String bitrefillUrl = String.format( BRConstants.BITREFILL_AFFILIATE_LINK + "/embed/?paymentMethod=litecoin&ref=%s&utm_source=%s", bitrefillRef,utmSource);
String buyUrl = partner == Partner.BITREFILL ? bitrefillUrl : url(getContext(), partner, currency);
-
+
Timber.d("URL %s", buyUrl);
webView.loadUrl(buyUrl);
return rootView;
}
-
public static String url(Context context, Partner partner, String currency) {
String walletAddress = BRSharedPrefs.getReceiveAddress(context);
Long timestamp = new Date().getTime();
String uuid = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
String prefix = partner == Partner.MOONPAY ? "/moonpay/buy" : "";
- return String.format(URL_BUY_LTC + prefix + "?address=%s&code=%s&idate=%s&uid=%s", walletAddress, currency, timestamp, uuid);
+ return String.format(LW_API_HOST + prefix + "?address=%s&code=%s&idate=%s&uid=%s", walletAddress, currency, timestamp, uuid);
}
private void closePayment() {
diff --git a/app/src/main/java/com/breadwallet/tools/manager/BRApiManager.java b/app/src/main/java/com/breadwallet/tools/manager/BRApiManager.java
index 70928aa9c..6b48afde4 100644
--- a/app/src/main/java/com/breadwallet/tools/manager/BRApiManager.java
+++ b/app/src/main/java/com/breadwallet/tools/manager/BRApiManager.java
@@ -8,6 +8,8 @@
import com.breadwallet.presenter.entities.CurrencyEntity;
import com.breadwallet.tools.sqlite.CurrencyDataSource;
import com.breadwallet.tools.threads.BRExecutor;
+
+import com.breadwallet.tools.util.BRConstants;
import com.breadwallet.tools.util.Utils;
import com.platform.APIClient;
@@ -32,6 +34,10 @@
import okhttp3.Response;
import timber.log.Timber;
+import static com.breadwallet.tools.util.BRConstants.*;
+import static com.breadwallet.tools.util.BRConstants.LW_API_HOST;
+import static com.breadwallet.tools.util.BRConstants.LW_BACKUP_API_HOST;
+
public class BRApiManager {
private static BRApiManager instance;
private Timer timer;
@@ -131,7 +137,7 @@ public void stopTimerTask() {
}
public static JSONArray fetchRates(Activity activity) {
- String jsonString = createGETRequestURL(activity, "https://api.loshan.co.uk/api/v1/rates");
+ String jsonString = createGETRequestURL(activity, LW_API_HOST + "/api/v1/rates");
JSONArray jsonArray = null;
if (jsonString == null) return null;
try {
@@ -143,7 +149,9 @@ public static JSONArray fetchRates(Activity activity) {
}
public static JSONArray backupFetchRates(Activity activity) {
- String jsonString = createGETRequestURL(activity, "https://api.loafwallet.org/api/v1/rates");
+ String jsonString = createGETRequestURL(activity, LW_BACKUP_API_HOST + "/api/v1/rates");
+
+ AnalyticsManager.logCustomEvent(_20230113_BAC);
JSONArray jsonArray = null;
if (jsonString == null) return null;
diff --git a/app/src/main/java/com/breadwallet/tools/util/BRConstants.java b/app/src/main/java/com/breadwallet/tools/util/BRConstants.java
index c68c1b41c..7bbcbf34f 100644
--- a/app/src/main/java/com/breadwallet/tools/util/BRConstants.java
+++ b/app/src/main/java/com/breadwallet/tools/util/BRConstants.java
@@ -96,9 +96,14 @@ public class BRConstants {
public static final String REDDIT_LINK = "https://www.reddit.com/r/Litewallet";
public static final String WEB_LINK = "https://litewalle.io";
public static final String TOS_LINK = "https://litewallet.io/privacy/policy.html";
- public static String CUSTOMER_SUPPORT_LINK = "https://litecoinfoundation.zendesk.com";
+ public static String CUSTOMER_SUPPORT_LINK = "https://support.litewallet.io";
public static String BITREFILL_AFFILIATE_LINK = "https://www.bitrefill.com/";
+ /**
+ * API Hosts
+ */
+ public static final String LW_API_HOST = "https://api-prod.lite-wallet.org";
+ public static final String LW_BACKUP_API_HOST = "https://api-dev.lite-wallet.org";
public static final String BLOCK_EXPLORER_BASE_URL = BuildConfig.LITECOIN_TESTNET ? "https://testnet.litecore.io/tx/" : "https://insight.litecore.io/tx/";
@@ -131,6 +136,7 @@ private BRConstants() {
public static final String _20201121_SIL = "started_IFPS_lookup";
public static final String _20201121_DRIA = "did_resolve_IPFS_address";
public static final String _20201121_FRIA = "failed_resolve_IPFS_address";
+ public static final String _20230113_BAC = "backup_apiserver_called";
///Dev: These events not yet used
public static final String _20200207_DTHB = "did_tap_header_balance";
@@ -168,6 +174,7 @@ private BRConstants() {
_20201121_SIL,
_20201121_DRIA,
_20201121_FRIA,
+ _20230113_BAC,
_20200207_DTHB,
_20210405_TAWDF,
_20210804_TAA2FAC,
diff --git a/gradle.properties b/gradle.properties
index 7c51da2c4..c5a60d6fc 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -10,7 +10,8 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
-org.gradle.jvmargs=-Xmx1536M
+org.gradle.jvmargs=-Xmx4608m
+
# Request a long standing daemon to run so that subsequent gradle commands run faster.
org.gradle.daemon=true