Hush lite wallet
https://faq.hush.is/sdl
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.0 KiB
63 lines
2.0 KiB
4 months ago
|
# Developer Docs for SDL
|
||
|
|
||
|
Random stuff that is useful for devs.
|
||
|
|
||
|
# Checking return values from litelib
|
||
|
|
||
|
There are 3 functions written in Rust that live in lib/src/lib.rs :
|
||
|
|
||
|
* `litelib_initialize_new`
|
||
|
* create a new client/connection and brand new wallet
|
||
|
* `litelib_initialize_new_from_phrase`
|
||
|
* create a new client/connection from a seedphrase (restoring from seedphrase)
|
||
|
* `litelib_initialize_existing`
|
||
|
* create a new client/connection with an already existing wallet
|
||
|
|
||
|
The Rust code calls it a "LightClient" while the C++ of SDL calls it a "Connection".
|
||
|
|
||
|
When `litelib_initialize_existing` or `litelib_initialize_new_from_phrase` return successfully, they return the string "OK" (which is not JSON).
|
||
|
|
||
|
When `litelib_initialize_new` returns successfully it returns JSON that looks like :
|
||
|
|
||
|
```
|
||
|
{"seed":"seed","birthday":birthday}
|
||
|
```
|
||
|
|
||
|
where "seed" is a 24 word seed and birthday is an integer block height.
|
||
|
|
||
|
So when calling these 3 functions, which looks almost the same in the calling code, the code which checks if they worked will be different, depending on what each returns on success.
|
||
|
|
||
|
When checking the return value of `litelib_initialize_existing` or `litelib_initialize_new_from_phrase` it should look like :
|
||
|
|
||
|
```
|
||
|
QString reply = "";
|
||
|
try {
|
||
|
char* resp = litelib_initialize_new_from_phrase(...);
|
||
|
reply = litelib_process_response(resp);
|
||
|
} catch {
|
||
|
...
|
||
|
}
|
||
|
if (reply.isEmpty())) {
|
||
|
// litelib_initialize_new_from_phrase failed
|
||
|
...
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Yes, `isEmpty()` is not a very strict check, we could actually check for valid-looking JSON (starts with a { and ends with a }) as well as making sure the keys "seed" and "birthday" exist. Please implement this.
|
||
|
|
||
|
When checking the return value of `litelib_initialize_new` it should look like :
|
||
|
|
||
|
```
|
||
|
QString reply = "";
|
||
|
try {
|
||
|
char* resp = litelib_initialize_new(...);
|
||
|
reply = litelib_process_response(resp);
|
||
|
} catch {
|
||
|
...
|
||
|
}
|
||
|
if (reply.toUpper().trimmed() != "OK") {
|
||
|
// litelib_initialize_new failed
|
||
|
...
|
||
|
}
|
||
|
```
|