@@ -280,12 +280,6 @@ export class SorobanEventWorker {
280280 case 'fee_collected' :
281281 await this . handleFeeCollected ( event , topic1 ) ;
282282 break ;
283- case 'stream_paused' :
284- await this . handleStreamPaused ( event , topic1 ) ;
285- break ;
286- case 'stream_resumed' :
287- await this . handleStreamResumed ( event , topic1 ) ;
288- break ;
289283 default :
290284 // Unrecognised event — ignore silently.
291285 break ;
@@ -408,7 +402,12 @@ export class SorobanEventWorker {
408402 select : { ratePerSecond : true , startTime : true , totalPausedDuration : true }
409403 } ) ;
410404
411- const durationSeconds = Number ( BigInt ( newDepositedAmount ) / BigInt ( stream . ratePerSecond ) ) ;
405+ const rate = BigInt ( stream . ratePerSecond || '1' ) ;
406+ if ( rate === 0n ) {
407+ throw new Error ( `Stream #${ streamId } has zero rate_per_second` ) ;
408+ }
409+
410+ const durationSeconds = Number ( BigInt ( newDepositedAmount ) / rate ) ;
412411 const newEndTime = stream . startTime + durationSeconds + stream . totalPausedDuration ;
413412
414413 await tx . stream . update ( {
@@ -443,88 +442,6 @@ export class SorobanEventWorker {
443442 } ) ;
444443 }
445444
446- private async handleStreamPaused (
447- event : rpc . Api . EventResponse ,
448- streamIdTopic : xdr . ScVal ,
449- ) : Promise < void > {
450- const streamId = Number ( decodeU64 ( streamIdTopic ) ) ;
451- const timestamp = Math . floor ( Date . now ( ) / 1000 ) ;
452-
453- await prisma . $transaction ( async ( tx : any ) => {
454- await tx . stream . update ( {
455- where : { streamId } ,
456- data : {
457- isPaused : true ,
458- lastPausedAt : timestamp ,
459- } ,
460- } ) ;
461-
462- await tx . streamEvent . create ( {
463- data : {
464- streamId,
465- eventType : 'PAUSED' ,
466- transactionHash : event . txHash ,
467- ledgerSequence : event . ledger ,
468- timestamp,
469- } ,
470- } ) ;
471- } ) ;
472-
473- sseService . broadcastToStream ( String ( streamId ) , 'stream.paused' , {
474- streamId,
475- isPaused : true ,
476- transactionHash : event . txHash ,
477- ledger : event . ledger ,
478- timestamp,
479- } ) ;
480- }
481-
482- private async handleStreamResumed (
483- event : rpc . Api . EventResponse ,
484- streamIdTopic : xdr . ScVal ,
485- ) : Promise < void > {
486- const streamId = Number ( decodeU64 ( streamIdTopic ) ) ;
487- const timestamp = Math . floor ( Date . now ( ) / 1000 ) ;
488-
489- await prisma . $transaction ( async ( tx : any ) => {
490- const stream = await tx . stream . findUniqueOrThrow ( {
491- where : { streamId } ,
492- select : { totalPausedSeconds : true , lastPausedAt : true } ,
493- } ) ;
494-
495- const lastPausedAt = stream . lastPausedAt ?? timestamp ;
496- const pausedDuration = Math . max ( 0 , timestamp - lastPausedAt ) ;
497- const nextTotalPausedSeconds = stream . totalPausedSeconds + pausedDuration ;
498-
499- await tx . stream . update ( {
500- where : { streamId } ,
501- data : {
502- isPaused : false ,
503- totalPausedSeconds : nextTotalPausedSeconds ,
504- lastPausedAt : null ,
505- } ,
506- } ) ;
507-
508- await tx . streamEvent . create ( {
509- data : {
510- streamId,
511- eventType : 'RESUMED' ,
512- transactionHash : event . txHash ,
513- ledgerSequence : event . ledger ,
514- timestamp,
515- } ,
516- } ) ;
517- } ) ;
518-
519- sseService . broadcastToStream ( String ( streamId ) , 'stream.resumed' , {
520- streamId,
521- isPaused : false ,
522- transactionHash : event . txHash ,
523- ledger : event . ledger ,
524- timestamp,
525- } ) ;
526- }
527-
528445 private async handleTokensWithdrawn (
529446 event : rpc . Api . EventResponse ,
530447 streamIdTopic : xdr . ScVal ,
0 commit comments