Skip to content

Commit 31d808a

Browse files
committed
WalletList.
Signed-off-by: Markuu-s <[email protected]>
1 parent 91c3b01 commit 31d808a

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

core/api/wallet/local_wallet.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "common/error_text.hpp"
99
#include "crypto/bls/impl/bls_provider_impl.hpp"
1010
#include "crypto/secp256k1/impl/secp256k1_provider_impl.hpp"
11+
#include "primitives/address/address_codec.hpp"
1112

1213
namespace fc::api {
1314

@@ -66,7 +67,31 @@ namespace fc::api {
6667
return std::move(address);
6768
}};
6869
api->WalletList = [=]() -> outcome::result<std::vector<Address>> {
70+
OUTCOME_TRY(all, key_store->list());
71+
std::sort(all.begin(), all.end());
6972

73+
std::set<Address> seen;
74+
std::vector<Address> out;
75+
out.reserve(all.size());
76+
77+
std::string k_name_prefix = "wallet-";
78+
for (auto &a : all) {
79+
if (encodeToString(a).substr(0, k_name_prefix.size())
80+
== k_name_prefix) {
81+
std::string name = encodeToString(a).erase(0, k_name_prefix.size());
82+
OUTCOME_TRY(address, primitives::address::decodeFromString(name));
83+
if (seen.find(address) != seen.end()) {
84+
continue;
85+
}
86+
seen.insert(address);
87+
88+
out.push_back(address);
89+
}
90+
}
91+
92+
std::sort(out.begin(), out.end());
93+
94+
return out;
7095
};
7196
api->WalletSetDefault = [=](auto &address) -> outcome::result<void> {
7297
wallet_default_address->setCbor(address);

core/api/wallet/wallet_api.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ namespace fc::api {
3838

3939
API_METHOD(WalletSetDefault, jwt::kWritePermission, void, const Address &)
4040

41+
<<<<<<< HEAD
42+
=======
43+
API_METHOD(WalletList, jwt::kAdminPermission, std::vector<Address>)
44+
45+
API_METHOD(WalletDelete, jwt::kReadPermission, void, const Address &)
46+
47+
>>>>>>> 31900a33 (WalletList.)
4148
API_METHOD(WalletSign,
4249
jwt::kSignPermission,
4350
Signature,
@@ -63,6 +70,7 @@ namespace fc::api {
6370
f(a.WalletDefaultAddress);
6471
f(a.WalletHas);
6572
f(a.WalletImport);
73+
f(a.WalletList);
6674
f(a.WalletNew);
6775
f(a.WalletSetDefault);
6876
f(a.WalletSign);

0 commit comments

Comments
 (0)