Преглед на файлове

feat(api): support unknown types for event emit payload, closes #2929 (#2964)

Lucas Fernandes Nogueira преди 3 години
родител
ревизия
0600099696
променени са 5 файла, в които са добавени 11 реда и са изтрити 6 реда
  1. 5 0
      .changes/api-emit-payload-type.md
  2. 0 0
      core/tauri/scripts/bundle.js
  3. 2 2
      tooling/api/src/event.ts
  4. 3 3
      tooling/api/src/helpers/event.ts
  5. 1 1
      tooling/api/src/window.ts

+ 5 - 0
.changes/api-emit-payload-type.md

@@ -0,0 +1,5 @@
+---
+"api": patch
+---
+
+Event `emit` now automatically serialize non-string types.

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
core/tauri/scripts/bundle.js


+ 2 - 2
tooling/api/src/event.ts

@@ -109,8 +109,8 @@ async function once<T>(
  * @param [payload] Event payload
  * @returns
  */
-async function emit(event: string, payload?: string): Promise<void> {
-  return emitEvent(event, undefined, payload)
+async function emit(event: string, payload?: unknown): Promise<void> {
+  return emitEvent(event, null, payload)
 }
 
 export type { Event, EventName, EventCallback, UnlistenFn }

+ 3 - 3
tooling/api/src/helpers/event.ts

@@ -15,8 +15,8 @@ import { invokeTauriCommand } from './tauri'
  */
 async function emit(
   event: string,
-  windowLabel: WindowLabel,
-  payload?: string
+  windowLabel: WindowLabel | null,
+  payload?: unknown
 ): Promise<void> {
   await invokeTauriCommand({
     __tauriModule: 'Event',
@@ -24,7 +24,7 @@ async function emit(
       cmd: 'emit',
       event,
       windowLabel,
-      payload
+      payload: typeof payload === 'string' ? payload : JSON.stringify(payload)
     }
   })
 }

+ 1 - 1
tooling/api/src/window.ts

@@ -283,7 +283,7 @@ class WebviewWindowHandle {
    * @param event Event name.
    * @param payload Event payload.
    */
-  async emit(event: string, payload?: string): Promise<void> {
+  async emit(event: string, payload?: unknown): Promise<void> {
     if (localTauriEvents.includes(event)) {
       // eslint-disable-next-line
       for (const handler of this.listeners[event] || []) {

Някои файлове не бяха показани, защото твърде много файлове са промени