Skip to content

Commit

Permalink
Build with an updated tonlib.
Browse files Browse the repository at this point in the history
  • Loading branch information
john-preston committed Feb 26, 2020
1 parent 1d3b773 commit b067dd8
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 59 deletions.
6 changes: 6 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ get_filename_component(src_loc . REALPATH)
generate_ton_tl(lib_ton ${src_loc}/ton/details/ton_tl_generate.py ${libs_loc}/ton/tl/generate/scheme/tonlib_api.tl)
generate_ton_storage_tl(lib_ton ${src_loc}/ton/details/ton_storage_tl_generate.py ${src_loc}/ton/details/ton_storage.tl)

nice_target_sources(lib_ton ${libs_loc}/ton/tl/generate
PRIVATE
scheme/tonlib_api.tl
)

target_precompile_headers(lib_ton PRIVATE ${src_loc}/ton/details/ton_pch.h)
nice_target_sources(lib_ton ${src_loc}
PRIVATE
Expand All @@ -39,6 +44,7 @@ PRIVATE
ton/details/ton_request_sender.h
ton/details/ton_storage.cpp
ton/details/ton_storage.h
ton/details/ton_storage.tl
ton/details/ton_tl_core.h
ton/details/ton_tl_core_conversion.cpp
ton/details/ton_tl_core_conversion.h
Expand Down
33 changes: 7 additions & 26 deletions ton/details/ton_parse_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,18 +42,8 @@ TransactionId Parse(const TLinternal_TransactionId &data) {
});
}

AccountState Parse(const TLwallet_v3_AccountState &data) {
return data.match([&](const TLDwallet_v3_accountState &data) {
auto result = AccountState();
result.balance = data.vbalance().v;
result.lastTransactionId = Parse(data.vlast_transaction_id());
result.syncTime = data.vsync_utime().v;
return result;
});
}

AccountState Parse(const TLuninited_AccountState &data) {
return data.match([&](const TLDuninited_accountState &data) {
AccountState Parse(const TLFullAccountState &data) {
return data.match([&](const TLDfullAccountState &data) {
auto result = AccountState();
result.balance = data.vbalance().v;
result.lastTransactionId = Parse(data.vlast_transaction_id());
Expand Down Expand Up @@ -106,19 +96,6 @@ TransactionsSlice Parse(const TLraw_Transactions &data) {
});
}

PendingTransaction Parse(
const TLSendGramsResult &data,
const QString &sender,
const TransactionToSend &transaction) {
return data.match([&](const TLDsendGramsResult &data) {
return PreparePending(
sender,
transaction,
data.vsent_until().v,
data.vbody_hash().v);
});
}

PendingTransaction Parse(
const TLquery_Info &data,
const QString &sender,
Expand Down Expand Up @@ -147,7 +124,11 @@ TransactionCheckResult Parse(const TLquery_Fees &data) {
return data.match([&](const TLDquery_fees &data) {
auto result = TransactionCheckResult();
result.sourceFees = Parse(data.vsource_fees());
result.destinationFees = Parse(data.vdestination_fees());
result.destinationFees = ranges::view::all(
data.vdestination_fees().v
) | ranges::view::transform([](const TLFees &data) {
return Parse(data);
}) | ranges::to_vector;
return result;
});
}
Expand Down
7 changes: 1 addition & 6 deletions ton/details/ton_parse_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,9 @@
namespace Ton::details {

[[nodiscard]] TransactionId Parse(const TLinternal_TransactionId &data);
[[nodiscard]] AccountState Parse(const TLwallet_v3_AccountState &data);
[[nodiscard]] AccountState Parse(const TLuninited_AccountState &data);
[[nodiscard]] AccountState Parse(const TLFullAccountState &data);
[[nodiscard]] Transaction Parse(const TLraw_Transaction &data);
[[nodiscard]] TransactionsSlice Parse(const TLraw_Transactions &data);
[[nodiscard]] PendingTransaction Parse(
const TLSendGramsResult &data,
const QString &sender,
const TransactionToSend &transaction);
[[nodiscard]] PendingTransaction Parse(
const TLquery_Info &data,
const QString &sender,
Expand Down
3 changes: 3 additions & 0 deletions ton/details/ton_tl_generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
'skip': [
'double ? = Double;',
'string ? = String;',
'object ? = Object;',
'function ? = Function;',

'int32 = Int32;',
'int53 = Int53;',
Expand All @@ -39,6 +41,7 @@
'secureBytes = SecureBytes;',

'vector {t:Type} # [ t ] = Vector t;',
'withBlock id:ton.blockIdExt function:Function = Object;',
],
'builtin': [
'double',
Expand Down
2 changes: 1 addition & 1 deletion ton/ton_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ struct TransactionFees {

struct TransactionCheckResult {
TransactionFees sourceFees;
TransactionFees destinationFees;
std::vector<TransactionFees> destinationFees;
};

struct PendingTransaction {
Expand Down
49 changes: 23 additions & 26 deletions ton/ton_wallet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ namespace {

using namespace details;

constexpr auto kSmcRevision = 1;

} // namespace

Wallet::Wallet(const QString &path)
Expand Down Expand Up @@ -117,10 +119,11 @@ void Wallet::start(Callback<> done) {
QString Wallet::getAddress(const QByteArray &publicKey) const {
Expects(_walletId.has_value());

return RequestSender::Execute(TLwallet_v3_GetAccountAddress(
return RequestSender::Execute(TLGetAccountAddress(
tl_wallet_v3_initialAccountState(
tl_string(publicKey),
tl_int53(*_walletId))
tl_int53(*_walletId)),
tl_int32(kSmcRevision)
)).value_or(
tl_accountAddress(tl_string())
).match([&](const TLDaccountAddress &data) {
Expand Down Expand Up @@ -367,14 +370,16 @@ void Wallet::checkSendGrams(
InvokeCallback(done, ErrorFromLib(error));
}).send();
};
_external->lib().request(TLgeneric_CreateSendGramsQuery(
_external->lib().request(TLCreateQuery(
tl_inputKeyFake(),
tl_accountAddress(tl_string(sender)),
tl_accountAddress(tl_string(transaction.recipient)),
tl_int64(transaction.amount),
tl_int32(transaction.timeout),
tl_from(transaction.allowSendToUninited),
tl_string(transaction.comment)
tl_actionMsg(
tl_vector(1, tl_msg_message(
tl_accountAddress(tl_string(transaction.recipient)),
tl_int64(transaction.amount),
tl_msg_dataText(tl_string(transaction.comment)))),
tl_from(transaction.allowSendToUninited))
)).done([=](const TLquery_Info &result) {
result.match([&](const TLDquery_info &data) {
check(data.vid().v);
Expand Down Expand Up @@ -405,14 +410,16 @@ void Wallet::sendGrams(
}).send();
};

_external->lib().request(TLgeneric_CreateSendGramsQuery(
_external->lib().request(TLCreateQuery(
prepareInputKey(publicKey, password),
tl_accountAddress(tl_string(sender)),
tl_accountAddress(tl_string(transaction.recipient)),
tl_int64(transaction.amount),
tl_int32(transaction.timeout),
tl_from(transaction.allowSendToUninited),
tl_string(transaction.comment)
tl_actionMsg(
tl_vector(1, tl_msg_message(
tl_accountAddress(tl_string(transaction.recipient)),
tl_int64(transaction.amount),
tl_msg_dataText(tl_string(transaction.comment)))),
tl_from(transaction.allowSendToUninited))
)).done([=](const TLquery_Info &result) {
result.match([&](const TLDquery_info &data) {
const auto weak = base::make_weak(this);
Expand All @@ -435,23 +442,12 @@ void Wallet::sendGrams(
void Wallet::requestState(
const QString &address,
Callback<AccountState> done) {
_external->lib().request(TLgeneric_GetAccountState(
_external->lib().request(TLGetAccountState(
tl_accountAddress(tl_string(address))
)).done([=](const TLgeneric_AccountState &result) {
)).done([=](const TLFullAccountState &result) {
const auto finish = [&](auto &&value) {
InvokeCallback(done, std::move(value));
};
result.match([&](const TLDgeneric_accountStateTestGiver &data) {
finish(Error{ Error::Type::TonLib, "BAD_ADDRESS_TEST_GIVER" });
}, [&](const TLDgeneric_accountStateTestWallet &data) {
finish(Error{ Error::Type::TonLib, "BAD_ADDRESS_TEST_WALLET" });
}, [&](const TLDgeneric_accountStateRaw &data) {
finish(Error{ Error::Type::TonLib, "BAD_ADDRESS_RAW" });
}, [&](const TLDgeneric_accountStateWallet &data) {
finish(Error{ Error::Type::TonLib, "BAD_ADDRESS_SIMPLE" });
}, [&](const auto &data) {
finish(Parse(data.vaccount_state()));
});
InvokeCallback(done, Parse(result));
}).fail([=](const TLError &error) {
InvokeCallback(done, ErrorFromLib(error));
}).send();
Expand All @@ -462,6 +458,7 @@ void Wallet::requestTransactions(
const TransactionId &lastId,
Callback<TransactionsSlice> done) {
_external->lib().request(TLraw_GetTransactions(
tl_inputKeyFake(),
tl_accountAddress(tl_string(address)),
tl_internal_transactionId(tl_int64(lastId.lt), tl_bytes(lastId.hash))
)).done([=](const TLraw_Transactions &result) {
Expand Down

0 comments on commit b067dd8

Please sign in to comment.