event.ts 739 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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>(event: string, handler: EventCallback<T>, once = false): void {
  14. invoke({
  15. cmd: 'listen',
  16. event,
  17. handler: transformCallback(handler, once),
  18. once
  19. })
  20. }
  21. /**
  22. * emits an event to the backend
  23. *
  24. * @param event the event name
  25. * @param [payload] the event payload
  26. */
  27. function emit(event: string, payload?: string): void {
  28. invoke({
  29. cmd: 'emit',
  30. event,
  31. payload
  32. })
  33. }
  34. export {
  35. listen,
  36. emit
  37. }