Skip to content

Commit 7bdfdeb

Browse files
committed
Add debug log in subscribe
1 parent 69cf12b commit 7bdfdeb

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

src/Event.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
import { v4 as uuid } from "uuid";
22

33
const subscriptions = {};
4-
const map = new Map();
4+
const messages = new Map();
55

66
const subscribe = (type, callback) => {
77
const id = uuid();
8+
console.debug("react-event", "subscribe", type, id);
89

910
if (!subscriptions[type]) {
1011
subscriptions[type] = {};
1112
}
1213

1314
subscriptions[type][id] = callback;
1415

15-
let last = map.get(type);
16+
let last = messages.get(type);
1617

1718
if (last) {
1819
callback(last);
@@ -30,15 +31,22 @@ const subscribe = (type, callback) => {
3031
};
3132

3233
const publish = (type, payload) => {
33-
console.log("react-event", type, payload);
34-
map.set(type, payload);
35-
if (!subscriptions[type]) return;
34+
console.log("react-event", "publish", type, payload);
35+
messages.set(type, payload);
3636

37-
Object.keys(subscriptions[type]).forEach((key) => {
37+
Object.keys(subscriptions[type] || {}).forEach((key) => {
3838
setTimeout(() => {
3939
subscriptions[type][key](payload);
4040
}, 0);
4141
});
4242
};
4343

44-
export { subscribe, publish, map };
44+
function last(type, init) {
45+
if (messages.has(type)) {
46+
return messages.get(type);
47+
} else {
48+
return init;
49+
}
50+
}
51+
52+
export { subscribe, publish, messages, last };

src/test/event.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { map, publish, subscribe } from "../Event";
1+
import { subscribe, publish, messages } from "../Event";
22

33
describe("react-event", () => {
44
it("subscribes and publishes events", (done) => {
@@ -57,7 +57,7 @@ describe("react-event", () => {
5757
it("registers the last published event to map", () => {
5858
publish("LAST_EVENT", { data: "test payload" });
5959

60-
const lastPublishedEvent = map.get("LAST_EVENT");
60+
const lastPublishedEvent = messages.get("LAST_EVENT");
6161
expect(lastPublishedEvent).toEqual({ data: "test payload" });
6262
});
6363
});

src/useEvent.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,12 @@
11
import React from "react";
22

3-
import { map, publish, subscribe } from "./Event";
4-
5-
function last(type, init) {
6-
if (map.has(type)) {
7-
return map.get(type);
8-
} else {
9-
return init;
10-
}
11-
}
3+
import { publish, subscribe, last } from "./Event";
124

135
const useEvent = (type = "", init) => {
146
const [payload, setPayload] = React.useState(last(type, init));
157

168
React.useEffect(() => {
179
const registry = subscribe(type, (event) => {
18-
map.set(type, event);
1910
setPayload(event);
2011
});
2112

0 commit comments

Comments
 (0)