event.ts 743 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { invoke, transformCallback } from './tauri'
  2. export interface Event<T> {
  3. type: string
  4. payload: T
  5. }
  6. export type EventCallback<T> = (event: Event<T>) => void
  7. /**
  8. * listen to an event from the backend
  9. *
  10. * @param event the event name
  11. * @param handler the event handler callback
  12. */
  13. function listen<T>(
  14. event: string,
  15. handler: EventCallback<T>,
  16. once = false
  17. ): void {
  18. invoke({
  19. cmd: 'listen',
  20. event,
  21. handler: transformCallback(handler, once),
  22. once
  23. })
  24. }
  25. /**
  26. * emits an event to the backend
  27. *
  28. * @param event the event name
  29. * @param [payload] the event payload
  30. */
  31. function emit(event: string, payload?: string): void {
  32. invoke({
  33. cmd: 'emit',
  34. event,
  35. payload
  36. })
  37. }
  38. export { listen, emit }