Commit 3a3e233a authored by timel's avatar timel

fix: eventbus

parent c81ab240
...@@ -44,4 +44,8 @@ const call = (task: Task, ...args: any[]) => ...@@ -44,4 +44,8 @@ const call = (task: Task, ...args: any[]) =>
export const eventbus = { export const eventbus = {
call, call,
register, register,
on: eventEmitter.on.bind(eventEmitter),
off: eventEmitter.off.bind(eventEmitter),
once: eventEmitter.once.bind(eventEmitter),
emit: eventEmitter.emit.bind(eventEmitter),
}; };
...@@ -2,7 +2,7 @@ import { ygopro } from "@/api"; ...@@ -2,7 +2,7 @@ import { ygopro } from "@/api";
import { eventbus, Task } from "@/infra"; import { eventbus, Task } from "@/infra";
import { RoomStage, roomStore } from "@/stores"; import { RoomStage, roomStore } from "@/stores";
export default async function handleSelectHand(_: ygopro.YgoStocMsg) { export default function handleSelectHand(_: ygopro.YgoStocMsg) {
roomStore.stage = RoomStage.HAND_SELECTING; roomStore.stage = RoomStage.HAND_SELECTING;
await eventbus.call(Task.Mora); eventbus.emit(Task.Mora);
} }
...@@ -2,7 +2,7 @@ import { ygopro } from "@/api"; ...@@ -2,7 +2,7 @@ import { ygopro } from "@/api";
import { eventbus, Task } from "@/infra"; import { eventbus, Task } from "@/infra";
import { RoomStage, roomStore } from "@/stores"; import { RoomStage, roomStore } from "@/stores";
export default async function handleSelectTp(_: ygopro.YgoStocMsg) { export default function handleSelectTp(_: ygopro.YgoStocMsg) {
roomStore.stage = RoomStage.TP_SELECTING; roomStore.stage = RoomStage.TP_SELECTING;
await eventbus.call(Task.Tp); eventbus.emit(Task.Tp);
} }
import { Button, Popover, Space } from "antd"; import { Button, Popover, Space } from "antd";
import { useState } from "react"; import { useEffect, useState } from "react";
import { eventbus, Task } from "@/infra"; import { eventbus, Task } from "@/infra";
...@@ -22,10 +22,11 @@ export const MoraPopover: React.FC< ...@@ -22,10 +22,11 @@ export const MoraPopover: React.FC<
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
// 需要在mora的service之中,emit一个事件,让这个组件监听到,然后打开popover // 需要在mora的service之中,emit一个事件,让这个组件监听到,然后打开popover
eventbus.register(Task.Mora, async () => { useEffect(() => {
setOpen(true); eventbus.once(Task.Mora, () => {
return true; setOpen(true);
}); });
}, []);
const onClick = (result: Mora) => { const onClick = (result: Mora) => {
result; // 这里send猜拳的结果给服务器 result; // 这里send猜拳的结果给服务器
...@@ -71,10 +72,11 @@ export const TpPopover: React.FC< ...@@ -71,10 +72,11 @@ export const TpPopover: React.FC<
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
// 需要在mora的service之中,emit一个事件,让这个组件监听到,然后打开popover // 需要在mora的service之中,emit一个事件,让这个组件监听到,然后打开popover
eventbus.register(Task.Tp, async () => { useEffect(() => {
setOpen(true); eventbus.once(Task.Tp, () => {
return true; setOpen(true);
}); });
}, []);
const onClick = (result: Tp) => { const onClick = (result: Tp) => {
result; // 这里send结果给服务器 result; // 这里send结果给服务器
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment