![]() * feat(gui): Monero wallet * progress * refactor * progress, dont delete wallet, re-fetch approvals and background periodically * show transaction history correctly * Enable fetching tx hashes * Try add the wallet listener event callbacks, not working * fix: Redeem XMR to internal main wallet, not temp wallet * feat(monero-sys): Support signing messages * feat(gui): DFX.swiss integration * refactor: format, slight refactorings * progress * type safety * refactoring of callback system * make free floating functions generic * refactor: Format files * refactor(gui): Split wallet components and redesign balanceOverview component * refactor(gui): Add action buttons and transaction section * wrapper event listener * progress, compiles * works! * WORKS! Event received on balance change * refactor: format and slight refactorings and comments * refactor(gui): Start with implementation of send dialog - new number input - new button variant and size * add @tauri-apps/plugin-dialog * feat(gui): Add permissions for file dialog * fix(monero-harness): Compile issue * feat(gui): Extract seed from Monero wallet and use for derivation, allow opening existing wallet file * feat(gui): Always refresh the approval list from frontend when resolving * fix(monero-rpc-pool): Implement Into<String> for ServerInfo * fix(monero-sys): Use oneshot channel for all wallets * feat(gui, monero-sys): Display recently opened wallets * small refactors * fix(gui): Enable background_sync, display temp "Loading..." if values are null * feat(gui): Remove headers from pages, show selected navigation item * feat(gui): Explicitly tell user if no swaps have been made yet * feat(gui): send sync and history updates * feat(gui): Fetch monero wallet details when context becomes availiable * feat(gui): Display Monero primary address without modal * feat(gui): Make "swap" button on wallet page take you to "/swap" * feat(gui): Rework send modal, adjust number input, added send to field * feat(gui): set block restore height, not working * refactor(gui): Optimize number input and add support for switching between currency * feat(gui): Display real fiat currency prices in send modal * feat(gui): Add error message for too high send amount * feat(gui): Modern UI for SeedSelectionDialog * feat(gui): Wrap MoneroWalletActions * wip * refactoring approval callback * feat(gui): Send Direction of Transaction in History to Frontend * feat(gui): Let user approve transaction before publishing * feat: Display 8 digits for Monero amounts by default * feat(monero-sys): Store pending (non published) transactions in Mutex map inside wallet thread This allows seperating signing and publishing transactions cleanly * dprint fmt * fix(gui): Refresh Monero wallet history C++ struct before serializing * feat(monero-rpc-pool): Fail after three JSON-RPC errors * feat(monero-sys): Add wrapper around verify_wallet_password * feat(gui): Allow opening password-protected Wallets * refactor: fmt, remove receive button * fix(gui): Convert to XMR before converting into Fiat * feat(gui): Add dialog for setting restore height * feat(gui): block height can be changed, blocks when too low * refactor(monero-sys): Remove old WalletListener code * feat(gui): Continually ask for user to select wallet and enter password, if user rejects, offer to select different wallet * refactor(swap): Extract "select Monero wallet" into own function * refactor(tauri): Dont kill monero-wallet-rpc * refactor(tauri): Avoid multiple concurrent Contexts starting * refactor: Change "Cancel" to "Change wallet" on PasswordEntryDialog * feat(gui): show curent block height, fix blockage * Cargo.lock update * refactor(monero-sys): Use match instead of is_err() and expect(...) * refactor: better context for WalletHandle constructor method errors handling * refactor(monero-sys): Common open_with<F>(path: String, daemon: Daemon, wallet_op: F) function * feat: check empty password before requeston password for wallet * feat: Remove "Checking for available remote nodes" from frontend * feat(gui): Allow sweeping entire Monero balance * feat(monero-rpc-pool): Keep alive TCP connections, do not record JSON-RPC errors as failure if >=3 nodes failed If >=3 nodes failed we assume it was an actual issue on our side, not an issue with the node * refactor(swap): Remove dead code * add comment to WalletHandleListener::on_refreshed{...} * feat(gui): show current block height in the field * refactor: remove unused UserCancelledError; * refactor: No Arc<Mutex<_>> for Pending TXs map * refactor: remove redundant } catch (error) { * feat: add our new crates to `OUR_CRATES` in tracing util * fix(gui): Add math.ceil to piconero conversion to ensure integer * fix(gui): Close menu when option is clicked * review and improve/reduce uses of unsafe, also remove unique_ptr wrapper around TransactionHistory to avoid double free * fix(gui): Use monero amount from units.tsx * fix(gui): Use PromiseInvokeButton for simplification for approving of send transaction * update comment, rename function * refactor(gui): Fix alignment of amounts * refactor(gui): Remove sending and refreshing states from wallet * fix(cli, gui): use old seed flow on no tauri, fix minor issues in gui * fix: use the new named function * refactor(gui): Add skeletons for monero wallet when still loading * fix * get working * feat(gui): Add tooltip to buy monero button * refactor: Format files * refactor(gui): Do not store logs in redux-persist --------- Co-authored-by: Maksim Kirillov <maksim.kirillov@staticlabs.de> Co-authored-by: b-enedict <benedict.seuss@gmail.com> Co-authored-by: einliterflasche <einliterflasche@pm.me> |
||
---|---|---|
.. | ||
public | ||
src | ||
.env.development | ||
.gitignore | ||
eslint.config.js | ||
index.html | ||
package-lock.json | ||
package.json | ||
README.md | ||
tsconfig.json | ||
tsconfig.node.json | ||
vite.config.ts | ||
yarn.lock |
Recommended IDE Setup
Requirements
- For compiling the Rust code:
cargo
andcargo tauri
(installation) - For running the Typescript code:
node
andyarn
- For formatting and bindings:
dprint
(cargo install dprint@0.50.0
) andtypeshare
(cargo install typeshare-cli
) - If you are on Windows and you want to use the
check-bindings
command you'll need to manually install the GNU DiffUtils (installation) and GNU CoreUtils (installtion). Remember to add the installation path (probablyC:\Program Files (x86)\GnuWin32\bin
) to thePATH
in your enviroment variables.
Start development servers
For development, we need to run both vite
and tauri
servers:
cd src-gui
yarn install && yarn run dev
# let this run
cd src-tauri
cargo tauri dev --no-watch -- -- --testnet
# let this run as well
Generate bindings for Tauri API
Running yarn run dev
or yarn build
should automatically re-build the Typescript bindings whenever something changes. You can also manually trigger this using the gen-bindings
command:
yarn run gen-bindings
You can also check whether the current bindings are up to date:
yarn run check-bindings
Debugging
Because the GUI is running in an embedded browser, we can't use the usual Browser extensions to debug the GUI. Instead we use standalone React DevTools / Redux DevTools.
React DevTools
Run this command to start the React DevTools server. The frontend will connect to this server automatically:
npx react-devtools
Redux DevTools
Run this command to start the Redux DevTools server. The frontend will connect to this server automatically. You can then debug the global Redux state. Observe how it changes over time, go back in time, see dispatch history, etc.
You may have to go to Settings -> 'use local custom server' -> connect
inside the devtools window for the state to be reflected correctly.
npx redux-devtools --hostname=localhost --port=8098 --open