mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2025-11-27 19:20:32 -05:00
* 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
* 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
* refactor(gui): Remove isLoading from wallet slice
* feat(gui): Add success dialog after send transaction was approved
* fix(gui): Floor piconero amount in sendMoneroTransaction
* feat(gui): Allow view on explorer button on send success modal
* feat(backend): save the wallet state on events
* fix(structure): move throttle into its own crate
* fix(log): remove spammy logs
* fix(logs): log folder in confid
* remove "sync progress: " log
* small refactors
* save wallet at most every 60s
* remove useless logs
* underscore unused variables
* feat(gui): Add timestamp of the tx
* feat(gui): Add the legacy wallet init option
* legac ybutton
* Fix(gui, asb): reverse the log config
remove log in bridge.h
cleanup
* use none for .store(..)
* display dot for running swap
---------
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>
167 lines
3.7 KiB
TypeScript
167 lines
3.7 KiB
TypeScript
import { createTheme, ThemeOptions } from "@mui/material";
|
|
import { indigo } from "@mui/material/colors";
|
|
|
|
// Extend the theme to include custom chip variants
|
|
declare module "@mui/material/Chip" {
|
|
interface ChipPropsVariantOverrides {
|
|
button: true;
|
|
}
|
|
}
|
|
|
|
// Extend the theme to include custom button variants and sizes
|
|
declare module "@mui/material/Button" {
|
|
interface ButtonPropsVariantOverrides {
|
|
secondary: true;
|
|
}
|
|
interface ButtonPropsSizeOverrides {
|
|
tiny: true;
|
|
}
|
|
}
|
|
|
|
export enum Theme {
|
|
Light = "light",
|
|
Dark = "dark",
|
|
}
|
|
|
|
const baseTheme: ThemeOptions = {
|
|
typography: {
|
|
overline: {
|
|
textTransform: "none" as const,
|
|
fontFamily: "monospace",
|
|
},
|
|
},
|
|
breakpoints: {
|
|
values: {
|
|
xs: 0,
|
|
sm: 600,
|
|
md: 900,
|
|
lg: 1000,
|
|
xl: 1536,
|
|
},
|
|
},
|
|
components: {
|
|
MuiButton: {
|
|
styleOverrides: {
|
|
outlined: {
|
|
color: "inherit",
|
|
borderColor: "color-mix(in srgb, currentColor 30%, transparent)",
|
|
"&:hover": {
|
|
borderColor: "color-mix(in srgb, currentColor 30%, transparent)",
|
|
backgroundColor: "color-mix(in srgb, #bdbdbd 10%, transparent)",
|
|
},
|
|
},
|
|
sizeTiny: {
|
|
fontSize: "0.75rem",
|
|
fontWeight: 500,
|
|
padding: "4px 8px",
|
|
minHeight: "24px",
|
|
minWidth: "auto",
|
|
lineHeight: 1.2,
|
|
textTransform: "none",
|
|
borderRadius: "4px",
|
|
},
|
|
},
|
|
variants: [
|
|
{
|
|
props: { variant: "secondary" },
|
|
style: ({ theme }) => ({
|
|
backgroundColor:
|
|
theme.palette.mode === "dark"
|
|
? "rgba(255, 255, 255, 0.08)"
|
|
: "rgba(0, 0, 0, 0.04)",
|
|
color: theme.palette.text.secondary,
|
|
"&:hover": {
|
|
backgroundColor:
|
|
theme.palette.mode === "dark"
|
|
? "rgba(255, 255, 255, 0.12)"
|
|
: "rgba(0, 0, 0, 0.08)",
|
|
borderColor:
|
|
theme.palette.mode === "dark"
|
|
? "rgba(255, 255, 255, 0.23)"
|
|
: "rgba(0, 0, 0, 0.23)",
|
|
},
|
|
"&:disabled": {
|
|
backgroundColor:
|
|
theme.palette.mode === "dark"
|
|
? "rgba(255, 255, 255, 0.04)"
|
|
: "rgba(0, 0, 0, 0.02)",
|
|
color: theme.palette.text.disabled,
|
|
borderColor:
|
|
theme.palette.mode === "dark"
|
|
? "rgba(255, 255, 255, 0.08)"
|
|
: "rgba(0, 0, 0, 0.08)",
|
|
},
|
|
}),
|
|
},
|
|
],
|
|
},
|
|
MuiChip: {
|
|
variants: [
|
|
{
|
|
props: { variant: "button" },
|
|
style: ({ theme }) => ({
|
|
padding: "12px 16px",
|
|
cursor: "pointer",
|
|
}),
|
|
},
|
|
],
|
|
},
|
|
MuiDialog: {
|
|
defaultProps: {
|
|
slotProps: {
|
|
paper: {
|
|
variant: "outlined",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
MuiDialogContentText: {
|
|
styleOverrides: {
|
|
root: {
|
|
marginBottom: "0.5rem",
|
|
},
|
|
},
|
|
},
|
|
MuiTextField: {
|
|
styleOverrides: {
|
|
root: {
|
|
"& legend": {
|
|
transition: "unset",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
const darkTheme = createTheme({
|
|
...baseTheme,
|
|
palette: {
|
|
mode: "dark",
|
|
primary: {
|
|
main: "#f4511e", // Monero orange
|
|
},
|
|
secondary: indigo,
|
|
},
|
|
});
|
|
|
|
const lightTheme = createTheme({
|
|
...baseTheme,
|
|
palette: {
|
|
mode: "light",
|
|
primary: {
|
|
main: "#f4511e", // Monero orange
|
|
},
|
|
secondary: indigo,
|
|
},
|
|
});
|
|
|
|
console.log("Creating themes:", {
|
|
dark: darkTheme,
|
|
light: lightTheme,
|
|
});
|
|
|
|
export const themes = {
|
|
[Theme.Dark]: darkTheme,
|
|
[Theme.Light]: lightTheme,
|
|
};
|