Skip to content

Commit

Permalink
Merge pull request #5 from benthecarman/bdk-db
Browse files Browse the repository at this point in the history
  • Loading branch information
benthecarman committed Oct 25, 2022
2 parents 03a1a5d + de5cdaf commit b519d2a
Show file tree
Hide file tree
Showing 8 changed files with 1,093 additions and 35 deletions.
5 changes: 3 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ jobs:
name: Browser Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
toolchain: nightly
components: clippy
target: wasm32-unknown-unknown
override: true
profile: minimal
Expand Down
3 changes: 3 additions & 0 deletions node-manager/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ cfg-if = "1.0.0"
wasm-bindgen = "0.2.83"
bip39 = { version = "1.0.1" }
bitcoin = "0.29.1"
bdk = { git = "https://github.com/afilini/bdk", branch = "upgrade/rust-bitcoin-29", default-features = false, features = ["keys-bip39"] }
getrandom = { version = "0.2", features = ["js"] }
serde = { version = "^1.0", features = ["derive"] }
serde_json = { version = "^1.0" }
gloo-storage = "0.2.2"

# The `console_error_panic_hook` crate provides better debugging of panics by
Expand Down
2 changes: 2 additions & 0 deletions node-manager/rust-toolchain.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[toolchain]
channel = "nightly"
87 changes: 87 additions & 0 deletions node-manager/src/error.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
use gloo_storage::errors::StorageError;
use std::fmt;

#[derive(Debug)]
#[allow(dead_code)]
// copied from LDK lite
/// An error that possibly needs to be handled by the user.
pub enum Error {
/// Returned when trying to start Mutiny while it is already running.
AlreadyRunning,
/// Returned when trying to stop Mutiny while it is not running.
NotRunning,
/// The funding transaction could not be created.
FundingTxCreationFailed,
/// A network connection has been closed.
ConnectionFailed,
/// Payment of the given invoice has already been initiated.
NonUniquePaymentHash,
/// The given invoice is invalid.
InvoiceInvalid,
/// Invoice creation failed.
InvoiceCreationFailed,
/// No route for the given target could be found.
RoutingFailed,
/// A given peer info could not be parsed.
PeerInfoParseFailed,
/// A channel could not be opened.
ChannelCreationFailed,
/// A channel could not be closed.
ChannelClosingFailed,
/// Persistence failed.
PersistenceFailed,
/// A wallet operation failed.
WalletOperationFailed,
/// A signing operation failed.
WalletSigningFailed,
/// A chain access operation failed.
ChainAccessFailed,
}

impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
Self::AlreadyRunning => write!(f, "Mutiny is already running."),
Self::NotRunning => write!(f, "Mutiny is not running."),
Self::FundingTxCreationFailed => {
write!(f, "Funding transaction could not be created.")
}
Self::ConnectionFailed => write!(f, "Network connection closed."),
Self::NonUniquePaymentHash => write!(f, "An invoice must not get payed twice."),
Self::InvoiceInvalid => write!(f, "The given invoice is invalid."),
Self::InvoiceCreationFailed => write!(f, "Failed to create invoice."),
Self::RoutingFailed => write!(f, "Failed to find route."),
Self::PeerInfoParseFailed => write!(f, "Failed to parse the given peer information."),
Self::ChannelCreationFailed => write!(f, "Failed to create channel."),
Self::ChannelClosingFailed => write!(f, "Failed to close channel."),
Self::PersistenceFailed => write!(f, "Failed to persist data."),
Self::WalletOperationFailed => write!(f, "Failed to conduct wallet operation."),
Self::WalletSigningFailed => write!(f, "Failed to sign given transaction."),
Self::ChainAccessFailed => write!(f, "Failed to conduct chain access operation."),
}
}
}

impl std::error::Error for Error {}

impl From<bdk::Error> for Error {
fn from(e: bdk::Error) -> Self {
match e {
bdk::Error::Signer(_) => Self::WalletSigningFailed,
_ => Self::WalletOperationFailed,
}
}
}

// todo uncomment when we add esplora stuff
// impl From<esplora::EsploraError> for Error {
// fn from(_e: esplora::EsploraError) -> Self {
// Self::ChainAccessFailed
// }
// }

impl From<StorageError> for Error {
fn from(_e: StorageError) -> Self {
Self::PersistenceFailed
}
}
12 changes: 11 additions & 1 deletion node-manager/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
// wasm_bindgen uses improper casing and it needs to be turned off:
// https://github.com/rustwasm/wasm-bindgen/issues/2882

mod error;
mod localstorage;
mod nodemanager;
mod seedgen;
mod storage;
mod utils;

use cfg_if::cfg_if;
Expand All @@ -26,3 +27,12 @@ pub async fn main_js() -> Result<(), JsValue> {
debug!("Main function ends");
Ok(())
}

#[cfg(test)]
mod test {
use gloo_storage::{LocalStorage, Storage};

pub(crate) fn cleanup_test() {
LocalStorage::clear();
}
}

0 comments on commit b519d2a

Please sign in to comment.