From 913c6d7bb779a5fea8d6d2cdacee198efc62cb40 Mon Sep 17 00:00:00 2001 From: Simeon Nakov Date: Fri, 1 Apr 2022 18:15:01 +0300 Subject: [PATCH 1/3] changed output --- sentry/src/routes/channel.rs | 42 ++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/sentry/src/routes/channel.rs b/sentry/src/routes/channel.rs index 0a86aa38f..aded7bc2d 100644 --- a/sentry/src/routes/channel.rs +++ b/sentry/src/routes/channel.rs @@ -307,22 +307,50 @@ pub async fn add_spender_leaf( let channel = req .extensions() .get::>() - .ok_or(ResponseError::NotFound)? - .context; + .ok_or(ResponseError::NotFound)?; update_accounting( app.pool.clone(), - channel.id(), + channel.context.id(), spender, Side::Spender, UnifiedNum::from_u64(0), ) .await?; - // TODO: Replace with SpenderResponse - Ok(success_response(serde_json::to_string(&SuccessResponse { - success: true, - })?)) + let latest_spendable = fetch_spendable(app.pool.clone(), &spender, &channel.context.id()).await?; + + let latest_spendable = match latest_spendable { + Some(spendable) => spendable, + None => { + create_or_update_spendable_document( + &app.adapter, + app.pool.clone(), + &channel, + spender, + ) + .await? + } + }; + + let new_state = match get_corresponding_new_state(&app.pool, &app.logger, &channel.context).await? { + Some(new_state) => new_state, + None => return spender_response_without_leaf(latest_spendable.deposit.total), + }; + + let total_spent = new_state + .balances + .spenders + .get(&spender) + .map(|spent| spent.to_owned()); + + let res = SpenderResponse { + spender: Spender { + total_deposited: latest_spendable.deposit.total, + total_spent, + }, + }; + Ok(success_response(serde_json::to_string(&res)?)) } async fn get_corresponding_new_state( From 7d4c3da4cb9629a14363d197db480b02678cdf96 Mon Sep 17 00:00:00 2001 From: Simeon Nakov Date: Tue, 5 Apr 2022 15:53:52 +0300 Subject: [PATCH 2/3] formatting --- primitives/src/campaign.rs | 2 +- sentry/src/routes/channel.rs | 21 +++++++++------------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/primitives/src/campaign.rs b/primitives/src/campaign.rs index b2f2fdcc5..eb1298e86 100644 --- a/primitives/src/campaign.rs +++ b/primitives/src/campaign.rs @@ -40,7 +40,7 @@ mod campaign_id { write!(f, "CampaignId({})", self) } } - + impl CampaignId { /// Generates randomly a `CampaignId` using `Uuid::new_v4().to_simple()` pub fn new() -> Self { diff --git a/sentry/src/routes/channel.rs b/sentry/src/routes/channel.rs index aded7bc2d..67eb3748b 100644 --- a/sentry/src/routes/channel.rs +++ b/sentry/src/routes/channel.rs @@ -318,25 +318,22 @@ pub async fn add_spender_leaf( ) .await?; - let latest_spendable = fetch_spendable(app.pool.clone(), &spender, &channel.context.id()).await?; + let latest_spendable = + fetch_spendable(app.pool.clone(), &spender, &channel.context.id()).await?; let latest_spendable = match latest_spendable { Some(spendable) => spendable, None => { - create_or_update_spendable_document( - &app.adapter, - app.pool.clone(), - &channel, - spender, - ) - .await? + create_or_update_spendable_document(&app.adapter, app.pool.clone(), &channel, spender) + .await? } }; - let new_state = match get_corresponding_new_state(&app.pool, &app.logger, &channel.context).await? { - Some(new_state) => new_state, - None => return spender_response_without_leaf(latest_spendable.deposit.total), - }; + let new_state = + match get_corresponding_new_state(&app.pool, &app.logger, &channel.context).await? { + Some(new_state) => new_state, + None => return spender_response_without_leaf(latest_spendable.deposit.total), + }; let total_spent = new_state .balances From fcfa5d2ec7926ab7c9e058cf9a829ce2d9c50eb0 Mon Sep 17 00:00:00 2001 From: Simeon Nakov Date: Mon, 11 Apr 2022 19:11:15 +0300 Subject: [PATCH 3/3] fixed failing test --- sentry/src/routes/channel.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sentry/src/routes/channel.rs b/sentry/src/routes/channel.rs index 67eb3748b..c66a7ffc5 100644 --- a/sentry/src/routes/channel.rs +++ b/sentry/src/routes/channel.rs @@ -927,12 +927,21 @@ mod test { #[tokio::test] async fn adds_and_retrieves_spender_leaf() { let app = setup_dummy_app().await; + let channel_context = app .config .find_chain_of(DUMMY_CAMPAIGN.channel.token) .expect("Dummy channel Token should be present in config!") .with(DUMMY_CAMPAIGN.channel); + let deposit = AdapterDeposit { + total: BigNum::from_str("100000000000000000000").expect("should convert"), // 100 DAI + still_on_create2: BigNum::from_str("1000000000000000000").expect("should convert"), // 1 DAI + }; + app.adapter + .client + .add_deposit_call(channel_context.context.id(), *CREATOR, deposit.clone()); + insert_channel(&app.pool, channel_context.context) .await .expect("should insert channel");