vue-tdweb
Version:
Documentation is coming.
59 lines (45 loc) • 1.51 kB
text/typescript
import { ApiMethods, AuthorizationStateUnion, UPDATE } from '@airgram/api'
import { Airgram } from 'tdweb-airgram'
import { TdProvider } from './TdProvider'
import { TdEventHandler, TdVueConstructor } from './types'
class DollarTd {
private _authState: AuthorizationStateUnion | { _: null } = { _: null }
private readonly _authStateUnsubscribe?: () => void
constructor (private readonly vm: TdVueConstructor) {
this._authStateUnsubscribe = this.on(UPDATE.updateAuthorizationState, (authState: AuthorizationStateUnion) => {
this._authState = authState
})
}
public get airgram (): Airgram.AirgramInstance {
return this.provider.airgram
}
public get api (): ApiMethods {
return this.airgram.api
}
public get authState (): AuthorizationStateUnion | { _: null } {
return this._authState
}
private get provider (): TdProvider {
return this.vm.$_tdProvider
}
public _destroy (): void {
if (this._authStateUnsubscribe) {
this._authStateUnsubscribe()
}
}
public emit (update: Airgram.Update): Promise<any> {
return this.airgram.emit(update)
}
public off (eventName: string, handler: TdEventHandler): void {
this.provider.off(eventName, handler)
}
public on (eventName: string, handler: TdEventHandler): () => void {
return this.provider.on(eventName, handler)
}
public once (eventName: string, handler: TdEventHandler): () => void {
return this.provider.once(eventName, handler)
}
}
export {
DollarTd
}