Commit graph

24 commits

Author SHA1 Message Date
binarybaron
163f6fa94d
feat(gui): Connect to preset rendezvous nodes at startup (#162) 2024-11-14 17:04:27 +01:00
binarybaron
e46be4a9ff
feat(gui): Refund swap in the background (#154)
Swaps will now be refunded as soon as the cancel timelock expires if the GUI is running but the swap dialog is not open.
2024-11-14 14:20:22 +01:00
binarybaron
4cf5cf719a
feat(gui): Display timelock status using a timeline (#153) 2024-11-14 13:33:20 +01:00
Einliterflasche
3e79bb3712
feat(GUI): Add settings for theme, fiat currency and remote nodes (#128) 2024-11-13 22:51:47 +01:00
binarybaron
bd3fca7e41
feat(gui): Allow to select from recently used monero addresses (#139)
* feat(gui): Allow user to select from recently used monero addresses in textfield
2024-11-09 12:11:00 +01:00
Einliterflasche
c91adb3ac8
feat(tauri): Allow export of wallet descriptors (#118) 2024-10-15 14:22:35 +02:00
Einliterflasche
639f540876
feat(tauri): send tauri event on btc balance change (#113)
Closes #43. This PR creates a new event, which is emitted by the watcher daemon when the BTC balance changes. Then, on the guest side, we simply update the balance when this event is received.
2024-10-13 18:01:29 +02:00
binarybaron
83f831ccac
feat(gui, tauri): Accept --testnet flag, default to mainnet (#106)
This PR tackles #92 

- Add the `tauri-plugin-cli` (only on desktop)
- Check in the frontend if the `--testnet` flag is set. If it's set we pass `testnet=true` to the `initialize_context` command on invokation
- We add the `vite-plugin-top-level-await` to allow top level await in all browsers
- Remove the `bitcoin_confirmation_target` from settings for simplicity
2024-10-10 14:51:56 +02:00
binarybaron
8f33fe5b41
feat(tauri, gui): Send event on changes to details, timelocks and tx_lock confirmations (#100)
- Send event when new swap state is inserated into database. The event only has the `swap_id` attached. The frontend then sends a request to the `get_swap_info` command to retrieve the updated version
- Send event when the Bitcoin lock transaction gets a new confirmation 
- A new `watcher` daemon runs contineously and sends an event when the timelock updated. The event has the the `swap_id` and the timelock attached
- Display logs on `ProcessExitedPage` (if swap was stopped prematurely)
- Rename `CliLogEmittedEvent` to `TauriLogEvent`
- Apply env_filter to tracing terminal writer to silence logging from other crates
- Add `.env.*` files in `src-gui` to `.gitingore`

Closes #93 and #12
2024-10-09 15:06:57 +02:00
binarybaron
253e0b0cf6
feat(gui, tauri): Save settings in Tauri storage (#102)
- Implemented dual persistence strategy:
  - **User Settings**: Persisted across app restarts using `tauri-plugin-store`.
  - **Transient State**: Persisted across page reloads using `sessionStorage`.
- Added `settingsSlice` reducer for managing persistent user settings.
- Updated Redux store configuration to handle multiple persistence layers.
- Added a new Settings page in the GUI where users can specify custom Electrum RPC URLs for Bitcoin and Monero node URLs.
  - Users can input their preferred Electrum server (`ssl://host:port`) and Monero daemon (`http://host:port`).
  - Input fields include validation to ensure correct URL formats.
  - Settings persist across application restarts using Tauri's storage plugin.
  - A reset option is available to revert to default settings.
- Improved the Daemon Controller in the Help page:
  - Renamed `RpcControlBox` to `DaemonControlBox` for clarity.
  - Users can now start the daemon manually if it isn't running or has failed.
  - Added a "Restart GUI" button to apply new settings immediately.
  - Displayed the daemon's status within the controller.
- Upgraded Tauri and related plugins to stable version `2.0.0`:
  - Updated `tauri`, `tauri-build`, and `tauri-utils` to `2.0.0`.
  - Ensured compatibility with the latest stable release.
- Updated Tauri plugins to version `2.0.0`:
  - `tauri-plugin-clipboard-manager`
  - `tauri-plugin-shell`
  - Added new plugins:
    - `tauri-plugin-store` for settings persistence.
    - `tauri-plugin-process` to enable application relaunch.
- Deferred Context initialization until explicitly triggered from the frontend.
  - Moved Context setup from the `setup` function to a new `initialize_context` Tauri command.
  - Allows the application to start without immediately initializing the backend context.
  - Context initialization now considers user-provided settings for Electrum and Monero nodes.
- Introduced a `ValidatedTextField` component for form inputs with validation logic.
  - Provides immediate feedback on input validity.
  - Used in the Settings page for Electrum and Monero node URLs.
- If the user provides an override Monero remote daemon, we check if it reachable and on the correct network before starting the `monero-wallet-rpc`
- Changed `bitcoin_confirmation_target` type from `usize` to `u16`.
2024-10-08 12:57:01 +02:00
Einliterflasche
7b79ad6abe
feat(cli+tauri): Send logs from host to guest (#90)
* feat(tauri): send logs from cli to tauri

---------

Co-authored-by: binarybaron <binarybaron@unstoppableswap.net>
Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2024-09-26 17:09:46 +06:00
binarybaron
167e031172
feat(gui): Allow discovery of sellers via connecting to rendezvous point (#83)
We,
- add a new list_sellers Tauri IPC command
- we rename the Seller struct to AliceAddress to name clash
2024-09-19 00:40:51 +02:00
binarybaron
c486ca5de9
feat(gui): Display logs of specific swap on press of button on history page 2024-09-09 21:31:54 +02:00
binarybaron
063f9dbf9b
feat(gui, swap): allow change-address to be omitted and default to internal wallet (#68)
This PR:
- allows --change-address to be omitted and default to internal wallet address (https://github.com/comit-network/xmr-btc-swap/pull/1709). This is a change that is merged from upstream into our fork
- adds the necessary components for the tauri integration and the ui components to allow toggling between internal vs external refund address

Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
Co-authored-by: Einliterflasche <81313171+Einliterflasche@users.noreply.github.com>
Co-authored-by: Byron Hambly <byron@hambly.dev>
2024-09-09 19:47:15 +02:00
binarybaron
177e3e9949
feat(gui): Add button to display monero redeem recovery keys (#64) 2024-09-06 14:23:36 +02:00
binarybaron
e4141c763b
feat(tauri): Initialize Context in background (#59)
This PR does the following:
- The Context (including Bitcoin wallet, Monero wallet, ...) is initialized in the background. This allows the window to be displayed instantly upon startup.
- Host sends events to Guest about progress of Context initialization. Those events are used to display an alert in the navigation bar.
- If a Tauri command is invoked which requires the Context to be available, an error will be returned
- As soon as the Context becomes available the `Guest` requests the history and Bitcoin balance
- Re-enables Material UI animations
2024-09-03 12:28:30 +02:00
binarybaron
b8c8a566b3
refactor(gui): Put tauri event listener registeres in dedicated function 2024-08-29 13:57:47 +02:00
binarybaron
ca25e0454f fix(tauri, gui): Allow Tauri command to be called with empty arguments
- Allow Tauri command to be called with empty arguments
- Add struct for GetSwapInfosAllArgs
2024-08-27 22:34:21 +02:00
binarybaron
cf641bc8bb
feat(gui): Migrate to Tauri events
- Replace Electron IPC with Tauri invoke() for API calls
- Implement TauriSwapProgressEvent for state management
- Remove IpcInvokeButton, replace with PromiseInvokeButton
- Update models: new tauriModel.ts, refactor rpcModel.ts
- Simplify SwapSlice state, remove processRunning flag
- Refactor SwapStatePage to use TauriSwapProgressEvent
- Update HistoryRow and HistoryRowActions for new data structures
- Remove unused Electron-specific components (e.g., RpcStatusAlert)
- Update dependencies: React 18, Material-UI v4 to v5
- Implement typeshare for Rust/TypeScript type synchronization
- Add BobStateName enum for more precise swap state tracking
- Refactor utility functions for Tauri compatibility
- Remove JSONStream and other Electron-specific dependencies
2024-08-26 15:32:28 +02:00
binarybaron
47821cbe79
wip: WithdrawDialog migrated to Tauri IPC 2024-08-09 19:03:28 +02:00
binarybaron
693f4297c5
wip: remove Request for object and call functions like buy_xmr directly 2024-08-09 01:30:45 +02:00
binarybaron
4f336e98a1
chore: Refactor tauri commands 2024-08-08 12:28:33 +02:00
binarybaron
2e1b6f6b43
feat: swap history tauri connector 2024-08-08 12:02:59 +02:00
binarybaron
709a2820c4
feat: cargo project at root 2024-08-08 00:49:04 +02:00
Renamed from src-xmr-btc-swap/src-gui/src/renderer/rpc.ts (Browse further)