diff --git a/contracts/stream/src/lib.rs b/contracts/stream/src/lib.rs index 177bacf5..3052738f 100644 --- a/contracts/stream/src/lib.rs +++ b/contracts/stream/src/lib.rs @@ -812,6 +812,13 @@ impl DripStream { math::streamed_amount(&env, &info) } + /// Read-only alias for [`streamed_total`] (#461): cumulative streamed + /// amount at the current ledger time, matching the on-chain + /// `streamed_amount` math. + pub fn total_streamed(env: Env) -> Result { + Self::streamed_total(env) + } + /// Read-only: full stream state. pub fn info(env: Env) -> StreamInfo { state::load(&env) diff --git a/contracts/stream/src/tests.rs b/contracts/stream/src/tests.rs index 1c9474d4..a9b9bc45 100644 --- a/contracts/stream/src/tests.rs +++ b/contracts/stream/src/tests.rs @@ -127,6 +127,14 @@ fn withdraw_correct_after_elapsed() { assert_eq!(s.token.balance(&s.recipient), 10_000); } +#[test] +fn total_streamed_matches_streamed_total() { + let s = Setup::new(1_000, 3_600, false); + s.advance_secs(100); + assert_eq!(s.client.total_streamed(), 100_000); + assert_eq!(s.client.total_streamed(), s.client.streamed_total()); +} + #[test] fn withdraw_capped_at_available() { let s = Setup::new(100, 3600, false); diff --git a/frontend/src/streams.ts b/frontend/src/streams.ts index 65b4cdf3..18b92d41 100644 --- a/frontend/src/streams.ts +++ b/frontend/src/streams.ts @@ -251,7 +251,7 @@ export class StreamSDK { async getStreamedTotal(streamId: string): Promise { const result = await this.server.getContractData( streamId, - xdr.ScVal.scvSymbol('streamed_total') + xdr.ScVal.scvSymbol('total_streamed') ); if (result && result.val().i128) { @@ -259,4 +259,9 @@ export class StreamSDK { } return '0'; } + + /** Alias matching the on-chain `total_streamed()` view method. */ + async getTotalStreamed(streamId: string): Promise { + return this.getStreamedTotal(streamId); + } } \ No newline at end of file