@peerbit/react 0.0.20 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/useCount.tsx CHANGED
@@ -5,7 +5,7 @@ import { debounceLeadingTrailing } from "./utils";
5
5
 
6
6
  type QueryOptons = {
7
7
  query: indexerTypes.Query[] | indexerTypes.QueryLike;
8
- id: string;
8
+ id?: string;
9
9
  };
10
10
  export const useCount = <T extends Record<string, any>>(
11
11
  db?: Documents<T, any, any>,
@@ -54,7 +54,10 @@ export const useCount = <T extends Record<string, any>>(
54
54
  db.events.removeEventListener("change", handleChange);
55
55
  debounced.cancel();
56
56
  };
57
- }, [db?.closed ? undefined : db?.rootAddress, options?.id]);
57
+ }, [
58
+ db?.closed ? undefined : db?.rootAddress,
59
+ options?.id ?? options?.query,
60
+ ]);
58
61
 
59
62
  return count;
60
63
  };
@@ -38,26 +38,39 @@ export const useProgram = <
38
38
  return;
39
39
  }
40
40
  setLoading(true);
41
- let changeListener: () => void;
41
+ let changeListener: (() => void) | undefined = undefined;
42
42
 
43
43
  closingRef.current.then(() => {
44
44
  programLoadingRef.current = peer
45
45
  ?.open(addressOrOpen, { ...options, existing: "reuse" })
46
46
  .then((p) => {
47
- changeListener = () => {
48
- p.getReady().then((set) => {
49
- setPeers([...set.values()]);
50
- });
51
- };
52
- p.events.addEventListener("join", changeListener);
53
- p.events.addEventListener("leave", changeListener);
54
- p.getReady()
55
- .then((set) => {
56
- setPeers([...set.values()]);
57
- })
58
- .catch((e) => {
59
- console.log("Error getReady()", e);
60
- });
47
+ // if program has topics do change listening on peers
48
+ if (
49
+ [p, ...p.allPrograms].filter(
50
+ (x) =>
51
+ x.closed === false &&
52
+ x.getTopics &&
53
+ x.getTopics?.().length > 0
54
+ ).length === 0
55
+ ) {
56
+ setPeers([peer.identity.publicKey]);
57
+ } else {
58
+ changeListener = () => {
59
+ p.getReady().then((set) => {
60
+ setPeers([...set.values()]);
61
+ });
62
+ };
63
+ p.events.addEventListener("join", changeListener);
64
+ p.events.addEventListener("leave", changeListener);
65
+ p.getReady()
66
+ .then((set) => {
67
+ setPeers([...set.values()]);
68
+ })
69
+ .catch((e) => {
70
+ console.log("Error getReady()", e);
71
+ });
72
+ }
73
+
61
74
  setProgram(p);
62
75
  forceUpdate();
63
76
  if (options?.id) {
@@ -83,14 +96,16 @@ export const useProgram = <
83
96
  closingRef.current =
84
97
  programLoadingRef.current.then((p) => {
85
98
  const unsubscribe = () => {
86
- p.events.removeEventListener(
87
- "join",
88
- changeListener
89
- );
90
- p.events.removeEventListener(
91
- "leave",
92
- changeListener
93
- );
99
+ changeListener &&
100
+ p.events.removeEventListener(
101
+ "join",
102
+ changeListener
103
+ );
104
+ changeListener &&
105
+ p.events.removeEventListener(
106
+ "leave",
107
+ changeListener
108
+ );
94
109
  };
95
110
  if (options?.keepOpenOnUnmount) {
96
111
  unsubscribe();