mirror of https://github.com/m2049r/xmrwallet.git
Upgrade to monero v0.11.0.0 (#50)
This commit is contained in:
parent
9b82023a9f
commit
bf64f77b10
|
@ -1,2 +1,3 @@
|
||||||
.gradle
|
.gradle
|
||||||
build
|
build
|
||||||
|
local.properties
|
||||||
|
|
|
@ -11,7 +11,7 @@ Another Android Monero Wallet
|
||||||
You may lose all your Moneroj if you use this App. Be cautious when spending on the mainnet.
|
You may lose all your Moneroj if you use this App. Be cautious when spending on the mainnet.
|
||||||
|
|
||||||
### Random Notes
|
### Random Notes
|
||||||
- Based off monero v0.10.3.1 with pull requests #2238, #2239 and #2289 applied => so can it be used on the mainnet!
|
- Based off monero v0.11.0.0 with PR #2289 applied
|
||||||
- currently only android32 (runs on 64-bit as well)
|
- currently only android32 (runs on 64-bit as well)
|
||||||
- works on the testnet & mainnet
|
- works on the testnet & mainnet
|
||||||
- takes forever to sync due to 32-bit architecture
|
- takes forever to sync due to 32-bit architecture
|
||||||
|
|
|
@ -147,7 +147,7 @@ target_link_libraries( monerujo
|
||||||
|
|
||||||
blockchain_db
|
blockchain_db
|
||||||
lmdb
|
lmdb
|
||||||
#easylogging # not for 0.10.3.1
|
easylogging
|
||||||
unbound
|
unbound
|
||||||
p2p
|
p2p
|
||||||
|
|
||||||
|
|
|
@ -465,7 +465,7 @@ JNIEXPORT jboolean JNICALL
|
||||||
Java_com_m2049r_xmrwallet_model_WalletManager_closeJ(JNIEnv *env, jobject instance,
|
Java_com_m2049r_xmrwallet_model_WalletManager_closeJ(JNIEnv *env, jobject instance,
|
||||||
jobject walletInstance) {
|
jobject walletInstance) {
|
||||||
Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, walletInstance);
|
Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, walletInstance);
|
||||||
bool closeSuccess = Bitmonero::WalletManagerFactory::getWalletManager()->closeWallet(wallet);
|
bool closeSuccess = Bitmonero::WalletManagerFactory::getWalletManager()->closeWallet(wallet, false);
|
||||||
if (closeSuccess) {
|
if (closeSuccess) {
|
||||||
MyWalletListener *walletListener = getHandle<MyWalletListener>(env, walletInstance,
|
MyWalletListener *walletListener = getHandle<MyWalletListener>(env, walletInstance,
|
||||||
"listenerHandle");
|
"listenerHandle");
|
||||||
|
@ -563,8 +563,13 @@ Java_com_m2049r_xmrwallet_model_Wallet_getIntegratedAddress(JNIEnv *env, jobject
|
||||||
JNIEXPORT jstring JNICALL
|
JNIEXPORT jstring JNICALL
|
||||||
Java_com_m2049r_xmrwallet_model_Wallet_getSecretViewKey(JNIEnv *env, jobject instance) {
|
Java_com_m2049r_xmrwallet_model_Wallet_getSecretViewKey(JNIEnv *env, jobject instance) {
|
||||||
Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, instance);
|
Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, instance);
|
||||||
//return env->NewStringUTF(wallet->secretViewKey().c_str()); // changed in head
|
return env->NewStringUTF(wallet->secretViewKey().c_str());
|
||||||
return env->NewStringUTF(wallet->privateViewKey().c_str());
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jstring JNICALL
|
||||||
|
Java_com_m2049r_xmrwallet_model_Wallet_getSecretSpendKey(JNIEnv *env, jobject instance) {
|
||||||
|
Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, instance);
|
||||||
|
return env->NewStringUTF(wallet->secretSpendKey().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jboolean JNICALL
|
JNIEXPORT jboolean JNICALL
|
||||||
|
|
|
@ -100,6 +100,7 @@ public class GenerateReviewFragment extends Fragment {
|
||||||
String address;
|
String address;
|
||||||
String seed;
|
String seed;
|
||||||
String viewKey;
|
String viewKey;
|
||||||
|
String spendKey;
|
||||||
boolean isWatchOnly;
|
boolean isWatchOnly;
|
||||||
Wallet.Status status;
|
Wallet.Status status;
|
||||||
|
|
||||||
|
@ -129,6 +130,7 @@ public class GenerateReviewFragment extends Fragment {
|
||||||
address = wallet.getAddress();
|
address = wallet.getAddress();
|
||||||
seed = wallet.getSeed();
|
seed = wallet.getSeed();
|
||||||
viewKey = wallet.getSecretViewKey();
|
viewKey = wallet.getSecretViewKey();
|
||||||
|
spendKey = isWatchOnly ? getActivity().getString(R.string.watchonly_label) : wallet.getSecretSpendKey();
|
||||||
isWatchOnly = wallet.isWatchOnly();
|
isWatchOnly = wallet.isWatchOnly();
|
||||||
if (closeWallet) wallet.close();
|
if (closeWallet) wallet.close();
|
||||||
return true;
|
return true;
|
||||||
|
@ -147,12 +149,7 @@ public class GenerateReviewFragment extends Fragment {
|
||||||
tvWalletAddress.setText(address);
|
tvWalletAddress.setText(address);
|
||||||
tvWalletMnemonic.setText(seed);
|
tvWalletMnemonic.setText(seed);
|
||||||
tvWalletViewKey.setText(viewKey);
|
tvWalletViewKey.setText(viewKey);
|
||||||
String spend = isWatchOnly ? "" : "not available - use seed for recovery";
|
tvWalletSpendKey.setText(spendKey);
|
||||||
if (spend.length() > 0) { //TODO should be == 64, but spendkey is not in the API yet
|
|
||||||
tvWalletSpendKey.setText(spend);
|
|
||||||
} else {
|
|
||||||
tvWalletSpendKey.setText(getString(R.string.generate_wallet_watchonly));
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// TODO show proper error message
|
// TODO show proper error message
|
||||||
// TODO end the fragment
|
// TODO end the fragment
|
||||||
|
|
|
@ -511,7 +511,6 @@ public class LoginActivity extends AppCompatActivity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private class MyProgressDialog extends ProgressDialog {
|
private class MyProgressDialog extends ProgressDialog {
|
||||||
Activity activity;
|
Activity activity;
|
||||||
|
|
||||||
|
|
|
@ -67,9 +67,10 @@ public class SendFragment extends Fragment {
|
||||||
Button bReallySend;
|
Button bReallySend;
|
||||||
ProgressBar pbProgress;
|
ProgressBar pbProgress;
|
||||||
|
|
||||||
final static int Mixins[] = {4, 6, 8, 10, 13}; // must match the layout XML
|
final static int Mixins[] = {4, 7, 12, 25}; // must match the layout XML
|
||||||
final static PendingTransaction.Priority Priorities[] =
|
final static PendingTransaction.Priority Priorities[] =
|
||||||
{PendingTransaction.Priority.Priority_Low,
|
{PendingTransaction.Priority.Priority_Default,
|
||||||
|
PendingTransaction.Priority.Priority_Low,
|
||||||
PendingTransaction.Priority.Priority_Medium,
|
PendingTransaction.Priority.Priority_Medium,
|
||||||
PendingTransaction.Priority.Priority_High}; // must match the layout XML
|
PendingTransaction.Priority.Priority_High}; // must match the layout XML
|
||||||
|
|
||||||
|
@ -443,6 +444,7 @@ public class SendFragment extends Fragment {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setMessage(errorText);
|
builder.setMessage(errorText);
|
||||||
|
builder.setCancelable(false);
|
||||||
builder.create().show();
|
builder.create().show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ public class PendingTransaction {
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum Priority {
|
public enum Priority {
|
||||||
|
Priority_Default(0),
|
||||||
Priority_Low(1),
|
Priority_Low(1),
|
||||||
Priority_Medium(2),
|
Priority_Medium(2),
|
||||||
Priority_High(3),
|
Priority_High(3),
|
||||||
|
@ -41,6 +42,8 @@ public class PendingTransaction {
|
||||||
|
|
||||||
public static Priority fromInteger(int n) {
|
public static Priority fromInteger(int n) {
|
||||||
switch (n) {
|
switch (n) {
|
||||||
|
case 0:
|
||||||
|
return Priority_Default;
|
||||||
case 1:
|
case 1:
|
||||||
return Priority_Low;
|
return Priority_Low;
|
||||||
case 2:
|
case 2:
|
||||||
|
|
|
@ -81,6 +81,8 @@ public class Wallet {
|
||||||
|
|
||||||
public native String getSecretViewKey();
|
public native String getSecretViewKey();
|
||||||
|
|
||||||
|
public native String getSecretSpendKey();
|
||||||
|
|
||||||
public boolean store() {
|
public boolean store() {
|
||||||
return store("");
|
return store("");
|
||||||
}
|
}
|
||||||
|
|
|
@ -193,14 +193,14 @@
|
||||||
<string name="big_amount">999999.999999999999</string>
|
<string name="big_amount">999999.999999999999</string>
|
||||||
|
|
||||||
<string-array name="mixin">
|
<string-array name="mixin">
|
||||||
<item>Mixin 4</item>
|
<item>Ring Size 5</item>
|
||||||
<item>Mixin 6</item>
|
<item>Ring Size 8</item>
|
||||||
<item>Mixin 8</item>
|
<item>Ring Size 13</item>
|
||||||
<item>Mixin 10</item>
|
<item>Ring Size 26</item>
|
||||||
<item>Mixin 13</item>
|
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="priority">
|
<string-array name="priority">
|
||||||
|
<item>Default Priority</item>
|
||||||
<item>Low Priority</item>
|
<item>Low Priority</item>
|
||||||
<item>Medium Priority</item>
|
<item>Medium Priority</item>
|
||||||
<item>High Priority</item>
|
<item>High Priority</item>
|
||||||
|
|
|
@ -156,6 +156,7 @@ struct TransactionInfo
|
||||||
virtual uint64_t fee() const = 0;
|
virtual uint64_t fee() const = 0;
|
||||||
virtual uint64_t blockHeight() const = 0;
|
virtual uint64_t blockHeight() const = 0;
|
||||||
virtual uint64_t confirmations() const = 0;
|
virtual uint64_t confirmations() const = 0;
|
||||||
|
virtual uint64_t unlockTime() const = 0;
|
||||||
//! transaction_id
|
//! transaction_id
|
||||||
virtual std::string hash() const = 0;
|
virtual std::string hash() const = 0;
|
||||||
virtual std::time_t timestamp() const = 0;
|
virtual std::time_t timestamp() const = 0;
|
||||||
|
@ -312,10 +313,28 @@ struct Wallet
|
||||||
virtual std::string integratedAddress(const std::string &payment_id) const = 0;
|
virtual std::string integratedAddress(const std::string &payment_id) const = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief privateViewKey - returns private view key
|
* \brief secretViewKey - returns secret view key
|
||||||
* \return - private view key
|
* \return - secret view key
|
||||||
*/
|
*/
|
||||||
virtual std::string privateViewKey() const = 0;
|
virtual std::string secretViewKey() const = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief publicViewKey - returns public view key
|
||||||
|
* \return - public view key
|
||||||
|
*/
|
||||||
|
virtual std::string publicViewKey() const = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief secretSpendKey - returns secret spend key
|
||||||
|
* \return - secret spend key
|
||||||
|
*/
|
||||||
|
virtual std::string secretSpendKey() const = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief publicSpendKey - returns public spend key
|
||||||
|
* \return - public spend key
|
||||||
|
*/
|
||||||
|
virtual std::string publicSpendKey() const = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief store - stores wallet to file.
|
* \brief store - stores wallet to file.
|
||||||
|
@ -361,6 +380,12 @@ struct Wallet
|
||||||
*/
|
*/
|
||||||
virtual void setRefreshFromBlockHeight(uint64_t refresh_from_block_height) = 0;
|
virtual void setRefreshFromBlockHeight(uint64_t refresh_from_block_height) = 0;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief getRestoreHeight - get wallet creation height
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
virtual uint64_t getRefreshFromBlockHeight() const = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief setRecoveringFromSeed - set state recover form seed
|
* \brief setRecoveringFromSeed - set state recover form seed
|
||||||
*
|
*
|
||||||
|
@ -571,6 +596,9 @@ struct Wallet
|
||||||
virtual bool verifySignedMessage(const std::string &message, const std::string &addres, const std::string &signature) const = 0;
|
virtual bool verifySignedMessage(const std::string &message, const std::string &addres, const std::string &signature) const = 0;
|
||||||
|
|
||||||
virtual bool parse_uri(const std::string &uri, std::string &address, std::string &payment_id, uint64_t &amount, std::string &tx_description, std::string &recipient_name, std::vector<std::string> &unknown_parameters, std::string &error) = 0;
|
virtual bool parse_uri(const std::string &uri, std::string &address, std::string &payment_id, uint64_t &amount, std::string &tx_description, std::string &recipient_name, std::vector<std::string> &unknown_parameters, std::string &error) = 0;
|
||||||
|
|
||||||
|
virtual std::string getDefaultDataDir() const = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* \brief rescanSpent - Rescan spent outputs - Can only be used with trusted daemon
|
* \brief rescanSpent - Rescan spent outputs - Can only be used with trusted daemon
|
||||||
* \return true on success
|
* \return true on success
|
||||||
|
@ -635,7 +663,7 @@ struct WalletManager
|
||||||
* \param wallet previously opened / created wallet instance
|
* \param wallet previously opened / created wallet instance
|
||||||
* \return None
|
* \return None
|
||||||
*/
|
*/
|
||||||
virtual bool closeWallet(Wallet *wallet) = 0;
|
virtual bool closeWallet(Wallet *wallet, bool store = true) = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ! checks if wallet with the given name already exists
|
* ! checks if wallet with the given name already exists
|
||||||
|
@ -644,7 +672,7 @@ struct WalletManager
|
||||||
/*!
|
/*!
|
||||||
* @brief TODO: delme walletExists - check if the given filename is the wallet
|
* @brief TODO: delme walletExists - check if the given filename is the wallet
|
||||||
* @param path - filename
|
* @param path - filename
|
||||||
* @return
|
* @return - true if wallet exists
|
||||||
*/
|
*/
|
||||||
virtual bool walletExists(const std::string &path) = 0;
|
virtual bool walletExists(const std::string &path) = 0;
|
||||||
|
|
||||||
|
@ -653,9 +681,9 @@ struct WalletManager
|
||||||
* @param keys_file_name - location of keys file
|
* @param keys_file_name - location of keys file
|
||||||
* @param password - password to verify
|
* @param password - password to verify
|
||||||
* @param watch_only - verify only view keys?
|
* @param watch_only - verify only view keys?
|
||||||
* @return
|
* @return - true if password is correct
|
||||||
*/
|
*/
|
||||||
virtual bool verifyWalletPassword(const std::string &keys_file_name, const std::string &password, const bool watch_only) = 0;
|
virtual bool verifyWalletPassword(const std::string &keys_file_name, const std::string &password, bool watch_only) const = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief findWallets - searches for the wallet files by given path name recursively
|
* \brief findWallets - searches for the wallet files by given path name recursively
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,12 +0,0 @@
|
||||||
## This file is automatically generated by Android Studio.
|
|
||||||
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
|
||||||
#
|
|
||||||
# This file must *NOT* be checked into Version Control Systems,
|
|
||||||
# as it contains information specific to your local configuration.
|
|
||||||
#
|
|
||||||
# Location of the SDK. This is only used by Gradle.
|
|
||||||
# For customization when using a Version Control System, please read the
|
|
||||||
# header note.
|
|
||||||
#Sat May 13 17:52:51 CEST 2017
|
|
||||||
ndk.dir=C\:\\Users\\Test\\AppData\\Local\\Android\\Sdk\\ndk-bundle
|
|
||||||
sdk.dir=C\:\\Users\\Test\\AppData\\Local\\Android\\Sdk
|
|
Loading…
Reference in New Issue