@@ -18,8 +18,11 @@ export class LocalAudioStream extends LocalStream {
1818 * @inheritdoc
1919 */
2020 async addEffect ( effect : TrackEffect ) : Promise < void > {
21- await super . addEffect ( effect ) ;
21+ if ( this . effects . some ( ( e ) => e . id === effect . id ) ) {
22+ return ;
23+ }
2224 this . addConstraintHandlers ( effect ) ;
25+ await super . addEffect ( effect ) ;
2326 }
2427
2528 /**
@@ -186,13 +189,13 @@ export class LocalAudioStream extends LocalStream {
186189 * The base class handles its own listener cleanup separately.
187190 */
188191 const removeConstraintHandlers = ( ) => {
189- effect . off ( 'constraints-required' as EffectEvent , handleConstraintsRequired ) ;
190- effect . off ( 'constraints-released' as EffectEvent , handleConstraintsReleased ) ;
191- effect . off ( 'disposed' as EffectEvent , removeConstraintHandlers ) ;
192+ effect . off ( 'constraints-required' as EffectEvent , handleConstraintsRequired as never ) ;
193+ effect . off ( 'constraints-released' as EffectEvent , handleConstraintsReleased as never ) ;
194+ effect . off ( 'disposed' as EffectEvent , removeConstraintHandlers as never ) ;
192195 } ;
193196
194- effect . on ( 'constraints-required' as EffectEvent , handleConstraintsRequired ) ;
195- effect . on ( 'constraints-released' as EffectEvent , handleConstraintsReleased ) ;
196- effect . on ( 'disposed' as EffectEvent , removeConstraintHandlers ) ;
197+ effect . on ( 'constraints-required' as EffectEvent , handleConstraintsRequired as never ) ;
198+ effect . on ( 'constraints-released' as EffectEvent , handleConstraintsReleased as never ) ;
199+ effect . on ( 'disposed' as EffectEvent , removeConstraintHandlers as never ) ;
197200 }
198201}
0 commit comments