diff --git a/Gruntfile.js b/Gruntfile.js
index 7968f2510..4e06c69ab 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -57,7 +57,7 @@ module.exports = function(grunt) {
command: 'node ./util/buildExternalServices.js'
},
get_nwjs_for_pkg: {
- command: 'if [ ! -d ./cache/0.19.5-pkg/osx64/nwjs.app ]; then cd ./cache; curl https://dl.nwjs.io/v0.19.5-mas-beta/nwjs-mas-v0.19.5-osx-x64.zip --output nwjs.zip; unzip nwjs.zip; mkdir -p ./0.19.5-pkg/osx64; cp -R ./nwjs-mas-v0.19.5-osx-x64/nwjs.app ./0.19.5-pkg/osx64/; fi'
+ command: 'if [ ! -d ./cache/0.19.4/osx64/nwjs.app ]; then mkdir -p ./cache/0.19.4/osx64; curl https://dl.nwjs.io/v0.19.5-mas-beta/nwjs-mas-v0.19.5-osx-x64.zip --output ./cache/nwjs.zip; unzip ./cache/nwjs.zip -d ./cache; cp -R ./cache/nwjs-mas-v0.19.5-osx-x64/nwjs.app ./cache/0.19.4/osx64/; fi'
},
log_android: {
command: 'adb logcat | grep chromium',
@@ -71,7 +71,7 @@ module.exports = function(grunt) {
sign_android: {
// When the build log outputs "Built the following apk(s):", it seems to need the filename to start with "android-release".
// It looks like it simply lists all apk files starting with "android-release"
- command: 'rm -f platforms/android/build/outputs/apk/android-release-signed-*.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../bitcoin-com-release-key.jks -signedjar platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/android-release-unsigned.apk bitcoin-com && zipalign -v 4 platforms/android/build/outputs/apk/android-release-signed.apk platforms/android/build/outputs/apk/bitcoin-com-wallet-<%= pkg.fullVersion %>-android-signed-aligned.apk',
+ command: 'rm -f platforms/android/build/outputs/apk/release/*-android-signed-aligned.apk; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ../bitcoin-com-release-key.jks -signedjar platforms/android/build/outputs/apk/release/android-release-signed.apk platforms/android/build/outputs/apk/release/android-release-unsigned.apk bitcoin-com && zipalign -v 4 platforms/android/build/outputs/apk/release/android-release-signed.apk platforms/android/build/outputs/apk/release/bitcoin-com-wallet-<%= pkg.fullVersion %>-android-signed-aligned.apk',
stdin: true,
},
sign_desktop_dist: {
diff --git a/app-template/bitcoincom/appConfig.json b/app-template/bitcoincom/appConfig.json
index 2eab6232d..5818a4006 100644
--- a/app-template/bitcoincom/appConfig.json
+++ b/app-template/bitcoincom/appConfig.json
@@ -24,9 +24,9 @@
"windowsAppId": "804636ee-b017-4cad-8719-e58ac97ffa5c",
"pushSenderId": "1036948132229",
"description": "A Secure Bitcoin Wallet",
- "version": "5.1.3",
- "fullVersion": "5.1-rc2",
- "androidVersion": "501003",
+ "version": "5.1.4",
+ "fullVersion": "5.1-rc3",
+ "androidVersion": "501400",
"_extraCSS": "",
"_enabledExtensions": {
"coinbase": false,
diff --git a/app-template/config-template.xml b/app-template/config-template.xml
index 8686b7b36..b24b86fae 100644
--- a/app-template/config-template.xml
+++ b/app-template/config-template.xml
@@ -77,7 +77,7 @@
-
+
diff --git a/src/android/build-extras.gradle b/src/android/build-extras.gradle
index e7dd50572..c90145418 100644
--- a/src/android/build-extras.gradle
+++ b/src/android/build-extras.gradle
@@ -1,5 +1,6 @@
ext {
ANDROID_SUPPORT_V4_VERSION = '26.1.0'
+ ANDROID_SUPPORT_ANNOTATIONS_VERSION = '26.1.0'
}
configurations.all {
diff --git a/src/js/services/send-flow.service.js b/src/js/services/send-flow.service.js
index e8be2e487..babf5096a 100644
--- a/src/js/services/send-flow.service.js
+++ b/src/js/services/send-flow.service.js
@@ -52,7 +52,7 @@ angular
// Detect some merchant that we know
if (payProData.memo.indexOf('eGifter') > -1) {
name = 'eGifter'
- } else if (paymentUrl.indexOf('https://bitpay.com') > -1) {
+ } else if (payProData.url.indexOf('https://bitpay.com') > -1) {
name = 'BitPay';
}
diff --git a/src/js/services/servicesService.js b/src/js/services/servicesService.js
index ddd9db394..56d699e59 100644
--- a/src/js/services/servicesService.js
+++ b/src/js/services/servicesService.js
@@ -5,7 +5,7 @@ angular.module('copayApp.services').factory('servicesService', function(configSe
name: 'shapeshift',
title: 'Shapeshift',
icon: 'icon-shapeshift',
- href: 'https://shapeshift.io/'
+ sref: 'tabs.shapeshift'
}];
root.register = function(serviceInfo) {
diff --git a/src/js/services/shapeShiftApiService.js b/src/js/services/shapeShiftApiService.js
index cc5fb0792..a90e587d4 100644
--- a/src/js/services/shapeShiftApiService.js
+++ b/src/js/services/shapeShiftApiService.js
@@ -24,7 +24,7 @@ var ShapeShift = (function() {
var parsedResponse = JP(xmlhttp.responseText);
cb.apply(null, [parsedResponse]);
} else {
- cb.apply(null, [new Error('Request Failed')])
+ cb.apply(null, [new Error('Request Failed')]);
}
}
};
diff --git a/src/js/services/wallet-history.service.js b/src/js/services/wallet-history.service.js
index 512a2d8b1..a9792c170 100644
--- a/src/js/services/wallet-history.service.js
+++ b/src/js/services/wallet-history.service.js
@@ -7,8 +7,8 @@
.factory('walletHistoryService', walletHistoryService);
function walletHistoryService(configService, storageService, lodash, $log, txFormatService) {
- //var PAGE_SIZE = 50;
- var PAGE_SIZE = 20; // For dev only
+ var PAGE_SIZE = 50;
+ //var PAGE_SIZE = 20; // For dev only
// How much to overlap on each end of the page, for mitigating inconsistent sort order.
var PAGE_OVERLAP_FRACTION = 0.2;
var PAGE_OVERLAP = Math.floor(PAGE_SIZE * PAGE_OVERLAP_FRACTION);
@@ -28,8 +28,8 @@
function addEarlyTransactions(walletId, cachedTxs, newTxs) {
var cachedTxIndexFromId = {};
- cachedTxs.forEach(function forCachedTx(tx){
- cachedTxIndexFromId[tx.txid] = true;
+ cachedTxs.forEach(function forCachedTx(tx, txIndex){
+ cachedTxIndexFromId[tx.txid] = txIndex;
});
var confirmationsUpdated = false;
@@ -49,8 +49,9 @@
var overlappingTxFraction = overlappingTxsCount / Math.min(cachedTxs.length, PAGE_OVERLAP);
console.log('overlappingTxFraction:', overlappingTxFraction);
+ console.log('overlappingTxsCount:', overlappingTxsCount);
- if (overlappingTxFraction >= MIN_KNOWN_TX_OVERLAP_FRACTION) { // We are good
+ if (overlappingTxFraction >= MIN_KNOWN_TX_OVERLAP_FRACTION || (someTransactionsWereNew && overlappingTxsCount === 0)) { // We are good
if (someTransactionsWereNew) {
saveTxHistory(walletId, cachedTxs);
} else if (confirmationsUpdated) {
@@ -93,7 +94,7 @@
var overlappingTxFraction = overlappingTxsCount / Math.min(cachedTxs.length, PAGE_OVERLAP);
- if (overlappingTxFraction >= MIN_KNOWN_TX_OVERLAP_FRACTION) { // We are good
+ if (overlappingTxFraction >= MIN_KNOWN_TX_OVERLAP_FRACTION || (someTransactionsWereNew && overlappingTxsCount === 0)) { // We are good
if (someTransactionsWereNew) {
var allTxs = uniqueNewTxs.concat(cachedTxs);
saveTxHistory(walletId, allTxs);
@@ -147,7 +148,6 @@
* @param {function(error, txs)} cb - txs is always an array, may be empty
*/
function getCachedTxHistory(walletId, cb) {
- console.log('txhistory updateLocalTxHistoryByPage()');
storageService.getTxHistory(walletId, function onGetTxHistory(err, txHistoryString){
if (err) {
return cb(err, []);
@@ -230,7 +230,6 @@
}
function updateLocalTxHistoryByPage(wallet, getLatest, flushCacheOnNew, cb) {
- console.log('txhistory updaetLocalTxHistoryByPage()');
if (flushCacheOnNew) {
fetchTxHistoryByPage(wallet, 0, function onFetchTxHistory(err, txs){
if (err) {