feat(events)!: use better api for events

This commit is contained in:
PalmDevs
2024-07-04 20:53:29 +07:00
parent af3759caf4
commit 0bfd03583d
11 changed files with 48 additions and 44 deletions

View File

@@ -1,15 +1,20 @@
import type { ClientWebSocketEvents } from '@revanced/bot-api'
import { api } from '../../context'
import * as context from '../../context'
const { client } = api
const { client } = context.api
export const on = <Event extends EventName>(event: Event, listener: ListenerOf<Event>) => {
client.on(event, listener)
}
export const withContext = <Event extends EventName>(
fn: typeof on | typeof once,
event: Event,
listener: ListenerWithContextOf<Event>,
// @ts-expect-error: Not smart enough, sorry!
) => fn(event, (...args) => listener(context, ...args))
export const once = <Event extends EventName>(event: Event, listener: ListenerOf<Event>) => {
client.once(event, listener)
}
export const on = <Event extends EventName>(event: Event, listener: ListenerOf<Event>) => client.on(event, listener)
export const once = <Event extends EventName>(event: Event, listener: ListenerOf<Event>) => client.once(event, listener)
export type EventName = keyof ClientWebSocketEvents
export type ListenerOf<Event extends EventName> = ClientWebSocketEvents[Event]
export type ListenerWithContextOf<Event extends EventName> = (
...args: [typeof import('../../context'), ...Parameters<ClientWebSocketEvents[Event]>]
) => void | Promise<void>