diff --git a/html/js/services/account.js b/html/js/services/account.js
index 0056309..edc52cf 100755
--- a/html/js/services/account.js
+++ b/html/js/services/account.js
@@ -115,7 +115,7 @@ thinwalletServices
logged_in = true;
// console.log("logged_in = true;");
- ApiCalls.login(public_address, view_key)
+ ApiCalls.login(public_address, view_key, generated_account)
.then(function(response) {
// set account_imported to true if we are not logging in with a newly generated account, and a new account was created on the server
diff --git a/html/js/services/apicalls.js b/html/js/services/apicalls.js
index d6627a7..516ab32 100755
--- a/html/js/services/apicalls.js
+++ b/html/js/services/apicalls.js
@@ -12,12 +12,13 @@ thinwalletServices
return $http.post(config.apiUrl + 'get_version');
};
- api.login = function(public_address, view_key) {
+ api.login = function(public_address, view_key, gen_locally) {
return $http.post(config.apiUrl + "login", {
withCredentials: true,
address: public_address,
view_key: view_key,
- create_account: true
+ create_account: true,
+ generated_locally: gen_locally
});
};
@@ -84,4 +85,4 @@ thinwalletServices
};
return api;
- });
\ No newline at end of file
+ });
diff --git a/sql/openmonero_test.sql b/sql/openmonero_test.sql
index 03d6bd7..2329724 100755
--- a/sql/openmonero_test.sql
+++ b/sql/openmonero_test.sql
@@ -40,6 +40,7 @@ CREATE TABLE IF NOT EXISTS `Accounts` (
`scanned_block_height` int(10) UNSIGNED NOT NULL DEFAULT '0',
`scanned_block_timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`start_height` int(10) UNSIGNED NOT NULL DEFAULT '0',
+ `generated_locally` tinyint(1) NOT NULL DEFAULT '1',
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
@@ -55,13 +56,13 @@ TRUNCATE TABLE `Accounts`;
-- Dumping data for table `Accounts`
--
-INSERT INTO `Accounts` (`id`, `address`, `viewkey_hash`, `scanned_block_height`, `scanned_block_timestamp`, `start_height`, `created`, `modified`) VALUES
-(129, '57Hx8QpLUSMjhgoCNkvJ2Ch91mVyxcffESCprnRPrtbphMCv8iGUEfCUJxrpUWUeWrS9vPWnFrnMmTwnFpSKJrSKNuaXc5q', '1acf92d12101afe2ce7392169a38d2d547bd042373148eaaab323a3b5185a9ba', 101610, '2018-06-21 03:00:30', 96783, '2018-06-14 05:20:09', '2018-06-14 05:20:09'),
-(130, '59imctBu85zZ9fJDTndqQRikvkeGnnUF6EuLERmdpE5fW2EEJbvbAc92uLfao947dpYpV4JaWg7FfUAenFQ6DMyfNQG8v1C', '1af8e9e4b194d2bf6fc771718d97cd65bec142796445df74855e5502205aa41d', 100871, '2018-06-20 01:37:28', 100480, '2018-06-19 04:39:16', '2018-06-19 04:39:16'),
-(131, '55ZbQdMnZHPFS8pmrhHN5jMpgJwnnTXpTDmmM5wkrBBx4xD6aEnpZq7dPkeDeWs67TV9HunDQtT3qF2UGYWzGGxq3zYWCBE', 'c8e858047caf1615dc77759a4b134befc40955ab945bc381de71cf4502047059', 105232, '2018-06-26 04:22:22', 100480, '2018-06-19 04:39:27', '2018-06-19 04:39:27'),
-(132, '53mqDDKtVkib8inMa41HuNJG4tj9CcaNKGr6EVSbvhWGJdpDQCiNNYBUNF1oDb8BczU5aD68d3HNKXaEsPq8cvbQE2FBkTS', '4fbcd8e59f156553713e0b624930856a7798e98930cb9ae446712b53c44cde9d', 33399, '2018-03-15 00:47:44', 100870, '2018-06-20 01:36:25', '2018-06-20 01:36:25'),
-(133, '57hGLsqr6eLjUDoqWwP3Ko9nCJ4GFN5AyezdxNXwpa1PMt6M4AbsBgcHH21hVe2MJrLGSM9C7UTqcEmyBepdhvFE4eyW3Kd', '69b1d4a9f618724fabb85ef1e6631d384a0b8ea75cda94ecc999a8680af2d439', 100871, '2018-06-20 01:37:28', 100871, '2018-06-20 01:38:28', '2018-06-20 01:38:28'),
-(134, '5AjfkEY7RFgNGDYvoRQkncfwHXT6Fh7oJBisqFUX5u96i3ZepxDPocQK29tmAwBDuvKRpskZnfA6N8Ra58qFzA4bSA3QZFp', '46efade82358c19fc2f42b86cb10297e524fbe6c39f807fb064a445c5d8b6367', 101610, '2018-06-21 03:00:30', 100937, '2018-06-20 03:49:53', '2018-06-20 03:49:53');
+INSERT INTO `Accounts` (`id`, `address`, `viewkey_hash`, `scanned_block_height`, `scanned_block_timestamp`, `start_height`,`generated_locally`, `created`, `modified`) VALUES
+(129, '57Hx8QpLUSMjhgoCNkvJ2Ch91mVyxcffESCprnRPrtbphMCv8iGUEfCUJxrpUWUeWrS9vPWnFrnMmTwnFpSKJrSKNuaXc5q', '1acf92d12101afe2ce7392169a38d2d547bd042373148eaaab323a3b5185a9ba', 101610,1, '2018-06-21 03:00:30', 96783, '2018-06-14 05:20:09', '2018-06-14 05:20:09'),
+(130, '59imctBu85zZ9fJDTndqQRikvkeGnnUF6EuLERmdpE5fW2EEJbvbAc92uLfao947dpYpV4JaWg7FfUAenFQ6DMyfNQG8v1C', '1af8e9e4b194d2bf6fc771718d97cd65bec142796445df74855e5502205aa41d', 100871,1, '2018-06-20 01:37:28', 100480, '2018-06-19 04:39:16', '2018-06-19 04:39:16'),
+(131, '55ZbQdMnZHPFS8pmrhHN5jMpgJwnnTXpTDmmM5wkrBBx4xD6aEnpZq7dPkeDeWs67TV9HunDQtT3qF2UGYWzGGxq3zYWCBE', 'c8e858047caf1615dc77759a4b134befc40955ab945bc381de71cf4502047059', 105232,1, '2018-06-26 04:22:22', 100480, '2018-06-19 04:39:27', '2018-06-19 04:39:27'),
+(132, '53mqDDKtVkib8inMa41HuNJG4tj9CcaNKGr6EVSbvhWGJdpDQCiNNYBUNF1oDb8BczU5aD68d3HNKXaEsPq8cvbQE2FBkTS', '4fbcd8e59f156553713e0b624930856a7798e98930cb9ae446712b53c44cde9d', 33399,1, '2018-03-15 00:47:44', 100870, '2018-06-20 01:36:25', '2018-06-20 01:36:25'),
+(133, '57hGLsqr6eLjUDoqWwP3Ko9nCJ4GFN5AyezdxNXwpa1PMt6M4AbsBgcHH21hVe2MJrLGSM9C7UTqcEmyBepdhvFE4eyW3Kd', '69b1d4a9f618724fabb85ef1e6631d384a0b8ea75cda94ecc999a8680af2d439', 100871,1, '2018-06-20 01:37:28', 100871, '2018-06-20 01:38:28', '2018-06-20 01:38:28'),
+(134, '5AjfkEY7RFgNGDYvoRQkncfwHXT6Fh7oJBisqFUX5u96i3ZepxDPocQK29tmAwBDuvKRpskZnfA6N8Ra58qFzA4bSA3QZFp', '46efade82358c19fc2f42b86cb10297e524fbe6c39f807fb064a445c5d8b6367', 101610,1, '2018-06-21 03:00:30', 100937, '2018-06-20 03:49:53', '2018-06-20 03:49:53');
-- --------------------------------------------------------
diff --git a/src/OpenMoneroRequests.cpp b/src/OpenMoneroRequests.cpp
index b046d37..caef6a9 100755
--- a/src/OpenMoneroRequests.cpp
+++ b/src/OpenMoneroRequests.cpp
@@ -91,14 +91,6 @@ OpenMoneroRequests::login(const shared_ptr session, const Bytes & body)
}
- // return same as what we recieved to client
- j_response["generated_locally"] = generated_locally;
- //j_response["generated_locally"] = true;
-
- // optinoal field, but we set it to current height
- j_response["start_height"] = current_bc_status
- ->get_current_blockchain_height();
-
// a placeholder for exciting or new account data
uint64_t acc_id {0};
@@ -114,7 +106,8 @@ OpenMoneroRequests::login(const shared_ptr session, const Bytes & body)
{
// account does not exist, so create new one
// for this address
- if (!(acc = create_account(xmr_address, view_key)))
+ if (!(acc = create_account(xmr_address, view_key,
+ generated_locally)))
{
// if creating account failed
j_response = json {{"status", "error"},
@@ -123,6 +116,10 @@ OpenMoneroRequests::login(const shared_ptr session, const Bytes & body)
session_close(session, j_response);
return;
}
+
+ j_response["generated_locally"] = bool {acc->generated_locally};
+
+ j_response["start_height"] = acc->start_height;
// set this flag to indicate that we have just created a
// new account in mysql. this information is sent to front-end
@@ -2016,7 +2013,8 @@ OpenMoneroRequests::parse_request(
boost::optional
OpenMoneroRequests::create_account(
string const& xmr_address,
- string const& view_key) const
+ string const& view_key,
+ bool generated_locally) const
{
boost::optional acc = XmrAccount{};
@@ -2048,14 +2046,27 @@ OpenMoneroRequests::create_account(
= XmrTransaction::timestamp_to_DateTime(
current_blockchain_timestamp);
+
+ // accounts generated locally (using create account button)
+ // will have start height equal to current blockchain height.
+ // existing accounts, i.e., those imported ones or extenal ones
+ // will have start_height of 0 to indicated that they could
+ // have been created years ago
+ uint64_t start_height = generated_locally
+ ? current_blockchain_height
+ : 0;
+
+ uint64_t scanned_block_height = start_height;
+
// create new account
acc = XmrAccount(
mysqlpp::null,
xmr_address,
make_hash(view_key),
- current_blockchain_height, /* for scanned_block_height */
+ scanned_block_height,
blk_timestamp_mysql_format,
- current_blockchain_height);
+ start_height,
+ generated_locally);
uint64_t acc_id {0};
diff --git a/src/OpenMoneroRequests.h b/src/OpenMoneroRequests.h
index c275f4a..c53ba7d 100755
--- a/src/OpenMoneroRequests.h
+++ b/src/OpenMoneroRequests.h
@@ -151,7 +151,8 @@ private:
boost::optional
create_account(string const& xmr_address,
- string const& view_key) const;
+ string const& view_key,
+ bool generated_locally = true) const;
bool
make_search_thread(XmrAccount& acc) const;
diff --git a/src/db/ssqlses.h b/src/db/ssqlses.h
index c054824..40f91d6 100755
--- a/src/db/ssqlses.h
+++ b/src/db/ssqlses.h
@@ -30,13 +30,14 @@ public:
friend std::ostream& operator<< (std::ostream& stream, const Table& data);
};
-sql_create_8(Accounts, 1, 6,
+sql_create_9(Accounts, 1, 7,
sql_bigint_unsigned_null, id,
sql_varchar , address,
sql_char , viewkey_hash,
sql_bigint_unsigned, scanned_block_height,
sql_timestamp , scanned_block_timestamp,
sql_bigint_unsigned, start_height,
+ sql_boolean , generated_locally,
sql_timestamp , created,
sql_timestamp , modified);
@@ -61,9 +62,10 @@ struct XmrAccount : public Accounts, Table
static constexpr const char* INSERT_STMT = R"(
INSERT INTO `Accounts` (`address`, `viewkey_hash`,
`scanned_block_height`,
- `scanned_block_timestamp`, `start_height`)
+ `scanned_block_timestamp`, `start_height`,
+ `generated_locally`)
VALUES
- (%0q, %1q, %2q, %3q, %4q);
+ (%0q, %1q, %2q, %3q, %4q, %5q);
)";
using Accounts::Accounts;