From 41290f51fd06b9bd58fc1a108534f5cd83cdcadb Mon Sep 17 00:00:00 2001
From: m2049r <m2049r@monerujo.io>
Date: Mon, 1 Jun 2020 10:02:22 +0200
Subject: [PATCH] Upgrade to monero v0.16.0.0 (#662)

* upgrade to monero core v0.16.0.0

* hearts for node favs
---
 .../xmrwallet/layout/NodeInfoAdapter.java     |  4 ++--
 .../main/res/drawable/ic_bookmark_24dp.xml    |  9 --------
 .../res/drawable/ic_bookmark_border_24dp.xml  |  9 --------
 .../main/res/drawable/ic_favorite_24dp.xml    |  9 ++++++++
 .../res/drawable/ic_favorite_border_24dp.xml  |  9 ++++++++
 app/src/main/res/layout/item_node.xml         |  2 +-
 external-libs/monero/include/wallet2_api.h    | 22 +++++++++++++++----
 external-libs/script/monero-fetch.sh          |  2 +-
 8 files changed, 40 insertions(+), 26 deletions(-)
 delete mode 100644 app/src/main/res/drawable/ic_bookmark_24dp.xml
 delete mode 100644 app/src/main/res/drawable/ic_bookmark_border_24dp.xml
 create mode 100644 app/src/main/res/drawable/ic_favorite_24dp.xml
 create mode 100644 app/src/main/res/drawable/ic_favorite_border_24dp.xml

diff --git a/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java b/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java
index 25b7dacf..14d6e0b4 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/layout/NodeInfoAdapter.java
@@ -130,9 +130,9 @@ public class NodeInfoAdapter extends RecyclerView.Adapter<NodeInfoAdapter.ViewHo
 
         private void showStar() {
             if (nodeItem.isFavourite()) {
-                ibBookmark.setImageResource(R.drawable.ic_bookmark_24dp);
+                ibBookmark.setImageResource(R.drawable.ic_favorite_24dp);
             } else {
-                ibBookmark.setImageResource(R.drawable.ic_bookmark_border_24dp);
+                ibBookmark.setImageResource(R.drawable.ic_favorite_border_24dp);
             }
         }
 
diff --git a/app/src/main/res/drawable/ic_bookmark_24dp.xml b/app/src/main/res/drawable/ic_bookmark_24dp.xml
deleted file mode 100644
index cf64e057..00000000
--- a/app/src/main/res/drawable/ic_bookmark_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0">
-    <path
-        android:fillColor="@color/gradientPink"
-        android:pathData="M17,3H7c-1.1,0 -1.99,0.9 -1.99,2L5,21l7,-3 7,3V5c0,-1.1 -0.9,-2 -2,-2z" />
-</vector>
diff --git a/app/src/main/res/drawable/ic_bookmark_border_24dp.xml b/app/src/main/res/drawable/ic_bookmark_border_24dp.xml
deleted file mode 100644
index 1cae0eb2..00000000
--- a/app/src/main/res/drawable/ic_bookmark_border_24dp.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24.0"
-    android:viewportHeight="24.0">
-    <path
-        android:fillColor="@color/gradientPink"
-        android:pathData="M17,3L7,3c-1.1,0 -1.99,0.9 -1.99,2L5,21l7,-3 7,3L19,5c0,-1.1 -0.9,-2 -2,-2zM17,18l-5,-2.18L7,18L7,5h10v13z" />
-</vector>
diff --git a/app/src/main/res/drawable/ic_favorite_24dp.xml b/app/src/main/res/drawable/ic_favorite_24dp.xml
new file mode 100644
index 00000000..2cc9234a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_favorite_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="@color/gradientPink"
+        android:pathData="M12,21.35l-1.45,-1.32C5.4,15.36 2,12.28 2,8.5 2,5.42 4.42,3 7.5,3c1.74,0 3.41,0.81 4.5,2.09C13.09,3.81 14.76,3 16.5,3 19.58,3 22,5.42 22,8.5c0,3.78 -3.4,6.86 -8.55,11.54L12,21.35z"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_favorite_border_24dp.xml b/app/src/main/res/drawable/ic_favorite_border_24dp.xml
new file mode 100644
index 00000000..ae7b4362
--- /dev/null
+++ b/app/src/main/res/drawable/ic_favorite_border_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="@color/gradientPink"
+        android:pathData="M16.5,3c-1.74,0 -3.41,0.81 -4.5,2.09C10.91,3.81 9.24,3 7.5,3 4.42,3 2,5.42 2,8.5c0,3.78 3.4,6.86 8.55,11.54L12,21.35l1.45,-1.32C18.6,15.36 22,12.28 22,8.5 22,5.42 19.58,3 16.5,3zM12.1,18.55l-0.1,0.1 -0.1,-0.1C7.14,14.24 4,11.39 4,8.5 4,6.5 5.5,5 7.5,5c1.54,0 3.04,0.99 3.57,2.36h1.87C13.46,5.99 14.96,5 16.5,5c2,0 3.5,1.5 3.5,3.5 0,2.89 -3.14,5.74 -7.9,10.05z"/>
+</vector>
diff --git a/app/src/main/res/layout/item_node.xml b/app/src/main/res/layout/item_node.xml
index 85c7a6c2..546acb2b 100644
--- a/app/src/main/res/layout/item_node.xml
+++ b/app/src/main/res/layout/item_node.xml
@@ -18,7 +18,7 @@
         android:padding="12dp"
         android:background="?android:attr/selectableItemBackgroundBorderless"
         android:gravity="center"
-        android:src="@drawable/ic_bookmark_border_24dp" />
+        android:src="@drawable/ic_favorite_border_24dp" />
 
     <LinearLayout
         android:id="@+id/llNode"
diff --git a/external-libs/monero/include/wallet2_api.h b/external-libs/monero/include/wallet2_api.h
index e543a115..9c3df898 100644
--- a/external-libs/monero/include/wallet2_api.h
+++ b/external-libs/monero/include/wallet2_api.h
@@ -400,8 +400,8 @@ struct WalletListener
     /**
      * @brief called by device when passphrase entry is needed
      */
-    virtual optional<std::string> onDevicePassphraseRequest(bool on_device) {
-        if (!on_device) throw std::runtime_error("Not supported");
+    virtual optional<std::string> onDevicePassphraseRequest(bool & on_device) {
+        on_device = true;
         return optional<std::string>();
     }
 
@@ -879,6 +879,14 @@ struct Wallet
      */
     virtual void disposeTransaction(PendingTransaction * t) = 0;
 
+    /*!
+     * \brief Estimates transaction fee.
+     * \param destinations Vector consisting of <address, amount> pairs.
+     * \return Estimated fee.
+     */
+    virtual uint64_t estimateTransactionFee(const std::vector<std::pair<std::string, uint64_t>> &destinations,
+                                            PendingTransaction::Priority priority) const = 0;
+
    /*!
     * \brief exportKeyImages - exports key images to file
     * \param filename
@@ -1085,10 +1093,12 @@ struct WalletManager
      * \param  nettype        Network type
      * \param  restoreHeight  restore from start height
      * \param  kdf_rounds     Number of rounds for key derivation function
+     * \param  seed_offset    Seed offset passphrase (optional)
      * \return                Wallet instance (Wallet::status() needs to be called to check if recovered successfully)
      */
     virtual Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic,
-                                    NetworkType nettype = MAINNET, uint64_t restoreHeight = 0, uint64_t kdf_rounds = 1) = 0;
+                                    NetworkType nettype = MAINNET, uint64_t restoreHeight = 0, uint64_t kdf_rounds = 1,
+                                    const std::string &seed_offset = {}) = 0;
     Wallet * recoveryWallet(const std::string &path, const std::string &password, const std::string &mnemonic,
                                     bool testnet = false, uint64_t restoreHeight = 0)           // deprecated
     {
@@ -1283,7 +1293,11 @@ struct WalletManager
     virtual std::string resolveOpenAlias(const std::string &address, bool &dnssec_valid) const = 0;
 
     //! checks for an update and returns version, hash and url
-    static std::tuple<bool, std::string, std::string, std::string, std::string> checkUpdates(const std::string &software, std::string subdir);
+    static std::tuple<bool, std::string, std::string, std::string, std::string> checkUpdates(
+        const std::string &software,
+        std::string subdir,
+        const char *buildtag = nullptr,
+        const char *current_version = nullptr);
 };
 
 
diff --git a/external-libs/script/monero-fetch.sh b/external-libs/script/monero-fetch.sh
index f6650393..d6c23291 100755
--- a/external-libs/script/monero-fetch.sh
+++ b/external-libs/script/monero-fetch.sh
@@ -7,7 +7,7 @@ source script/env.sh
 cd $EXTERNAL_LIBS_BUILD_ROOT
 
 url="https://github.com/m2049r/monero"
-version="release-v0.15-monerujo"
+version="release-v0.16.0.0-monerujo"
 
 if [ ! -d "monero" ]; then
   git clone ${url} -b ${version}