UNPKG

@unilogin/sdk

Version:

SDK is a JS library, that communicates with relayer. SDK allows managing contract, by creating basic contract-calling messages.

25 lines (20 loc) 597 B
import {State, Callback} from 'reactive-properties'; export abstract class ReferenceCountedState<T> extends State<T> { private subscribersCount = 0; abstract onFirstSubscribe(): void; abstract onLastUnsubscribe(): void; subscribe(callback: Callback): Callback { const unsubscribe = super.subscribe(callback); if (this.subscribersCount === 0) { this.onFirstSubscribe(); } this.subscribersCount++; return () => { this.subscribersCount--; if (this.subscribersCount === 0) { this.onLastUnsubscribe(); } unsubscribe(); }; } }