mirror of
https://github.com/ReVanced/revanced-bots.git
synced 2026-01-22 18:53:57 +00:00
feat(events)!: use better api for events
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user