From cc46dc06c48bd277ba30557a519d7b682a0ef22d Mon Sep 17 00:00:00 2001
From: m2049r <30435443+m2049r@users.noreply.github.com>
Date: Sat, 23 Sep 2017 14:16:30 +0200
Subject: [PATCH] Bugfixes (#82)

* cache getAddress()

* savedInstanceState handling

* v0.8.0.2
---
 app/build.gradle                                      |  4 ++--
 .../main/java/com/m2049r/xmrwallet/LoginActivity.java |  6 +++---
 .../java/com/m2049r/xmrwallet/WalletActivity.java     |  8 +++++---
 .../main/java/com/m2049r/xmrwallet/model/Wallet.java  | 11 +++++++----
 4 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 3ebb5e38..dc8f3e53 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
         applicationId "com.m2049r.xmrwallet"
         minSdkVersion 21
         targetSdkVersion 25
-        versionCode 14
-        versionName "0.8.0.1"
+        versionCode 15
+        versionName "0.8.0.2"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
         externalNativeBuild {
             cmake {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java
index 6b6f84d9..1310b7c3 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java
@@ -75,13 +75,13 @@ public class LoginActivity extends AppCompatActivity
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+        Log.d(TAG, "onCreate()");
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.login_activity);
-        setContentView(R.layout.login_activity);
         if (savedInstanceState != null) {
-            return;
+            // we don't store anything ourselves
         }
 
+        setContentView(R.layout.login_activity);
         toolbar = (Toolbar) findViewById(R.id.toolbar);
         setSupportActionBar(toolbar);
 
diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
index de6fef17..a3e3123f 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
@@ -150,14 +150,16 @@ public class WalletActivity extends AppCompatActivity implements WalletFragment.
     protected void onCreate(Bundle savedInstanceState) {
         Log.d(TAG, "onCreate()");
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.wallet_activity);
         if (savedInstanceState != null) {
-            return;
+            // we don't store anything ourselves
         }
 
+        setContentView(R.layout.wallet_activity);
         toolbar = (Toolbar) findViewById(R.id.toolbar);
-        toolbar.setTitle(R.string.app_name);
         setSupportActionBar(toolbar);
+
+        toolbar.setTitle(R.string.app_name);
+
         boolean testnet = WalletManager.getInstance().isTestNet();
         if (testnet) {
             toolbar.setBackgroundResource(R.color.colorPrimaryDark);
diff --git a/app/src/main/java/com/m2049r/xmrwallet/model/Wallet.java b/app/src/main/java/com/m2049r/xmrwallet/model/Wallet.java
index ff14440d..f1494b4b 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/model/Wallet.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/model/Wallet.java
@@ -36,6 +36,7 @@ public class Wallet {
 
     Wallet(long handle) {
         this.handle = handle;
+        getAddress(); // cache address for later
     }
 
     public enum Status {
@@ -50,8 +51,6 @@ public class Wallet {
         ConnectionStatus_WrongVersion
     }
 
-    //public native long createWalletListenerJ();
-
     public native String getSeed();
 
     public native String getSeedLanguage();
@@ -68,11 +67,15 @@ public class Wallet {
 
     public native boolean setPassword(String password);
 
+    private String address = null;
+
     public String getAddress() {
-        String address = getAddressJ();
+        if (address == null) {
+            address = getAddressJ();
+        }
         if (!Wallet.isAddressValid(address, WalletManager.getInstance().isTestNet())) {
             // just die!
-            throw new IllegalStateException("Wallet returned invalid address!");
+            throw new IllegalStateException("Wallet returned invalid address: " + address);
         }
         return address;
     }