Commit 3a3e233a authored by timel's avatar timel

fix: eventbus

parent c81ab240
......@@ -44,4 +44,8 @@ const call = (task: Task, ...args: any[]) =>
export const eventbus = {
call,
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";
import { eventbus, Task } from "@/infra";
import { RoomStage, roomStore } from "@/stores";
export default async function handleSelectHand(_: ygopro.YgoStocMsg) {
export default function handleSelectHand(_: ygopro.YgoStocMsg) {
roomStore.stage = RoomStage.HAND_SELECTING;
await eventbus.call(Task.Mora);
eventbus.emit(Task.Mora);
}
......@@ -2,7 +2,7 @@ import { ygopro } from "@/api";
import { eventbus, Task } from "@/infra";
import { RoomStage, roomStore } from "@/stores";
export default async function handleSelectTp(_: ygopro.YgoStocMsg) {
export default function handleSelectTp(_: ygopro.YgoStocMsg) {
roomStore.stage = RoomStage.TP_SELECTING;
await eventbus.call(Task.Tp);
eventbus.emit(Task.Tp);
}
import { Button, Popover, Space } from "antd";
import { useState } from "react";
import { useEffect, useState } from "react";
import { eventbus, Task } from "@/infra";
......@@ -22,10 +22,11 @@ export const MoraPopover: React.FC<
const [open, setOpen] = useState(false);
// 需要在mora的service之中,emit一个事件,让这个组件监听到,然后打开popover
eventbus.register(Task.Mora, async () => {
setOpen(true);
return true;
});
useEffect(() => {
eventbus.once(Task.Mora, () => {
setOpen(true);
});
}, []);
const onClick = (result: Mora) => {
result; // 这里send猜拳的结果给服务器
......@@ -71,10 +72,11 @@ export const TpPopover: React.FC<
const [open, setOpen] = useState(false);
// 需要在mora的service之中,emit一个事件,让这个组件监听到,然后打开popover
eventbus.register(Task.Tp, async () => {
setOpen(true);
return true;
});
useEffect(() => {
eventbus.once(Task.Tp, () => {
setOpen(true);
});
}, []);
const onClick = (result: Tp) => {
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