xmr-btc-swap/src-gui
binarybaron 97510a8619
refactor(gui): Swap state stepper to use Tauri events (#77)
Previously we used the data we fetched via the rpc (`GetSwapInfo` call, saved in redux in `rpc.swapInfos`) to decide what to display in the state stepper to the user. The state stepper is displayed at the bottom of the `SwapDialog`.

However, we are moving away from our depedence on periodic rpc calls and towards relying more and more on the events we receive from the Host (from Tauri). Our goal is to rely solely on the Tauri events for everything displayed about the currently running swap.

This PR includes the following changes:
- refactor the `SwapStateStepper` such that it relies only on the Tauri events
- emit two new Tauri events (`EncryptedSignatureSent`, `CancelTimelockExpired`) in the state machine
- correctly emit `BtcRefunded` Tauri event after Bitcoin refund transaction is published
- differentiate between `"Waiting for them to redeem the Bitcoin"` and `"Revealing encrypted signature to the other party"` on the `SwapStatePage` (content displayed in the center of the `SwapDialog`)
2024-09-23 03:31:24 +06:00
..
public feat: cargo project at root 2024-08-08 00:49:04 +02:00
src refactor(gui): Swap state stepper to use Tauri events (#77) 2024-09-23 03:31:24 +06:00
.gitignore ci: auto generate typescript bindings (#56) 2024-08-31 11:41:33 +02:00
eslint.config.js feat(gui): open links in default browser (#50) 2024-09-04 17:11:06 +02:00
index.html refactor(gui): Swap state stepper to use Tauri events (#77) 2024-09-23 03:31:24 +06:00
package.json refactor(gui): Swap state stepper to use Tauri events (#77) 2024-09-23 03:31:24 +06:00
README.md ci: auto generate typescript bindings (#56) 2024-08-31 11:41:33 +02:00
tsconfig.json wip: WithdrawDialog migrated to Tauri IPC 2024-08-09 19:46:58 +02:00
tsconfig.node.json feat: cargo project at root 2024-08-08 00:49:04 +02:00
vite.config.ts ci: auto generate typescript bindings (#56) 2024-08-31 11:41:33 +02:00
yarn.lock refactor(gui): Swap state stepper to use Tauri events (#77) 2024-09-23 03:31:24 +06:00

Requirements

  • For compiling the Rust code: cargo and cargo tauri (installation)
  • For running the Typescript code: node and yarn
  • For formatting and bindings: dprint (cargo install dprint@0.39.1) and typeshare (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 (probably C:\Program Files (x86)\GnuWin32\bin) to the PATH 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 
# 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