@melony/react 0.1.11 → 0.1.12

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/dist/index.cjs CHANGED
@@ -67,15 +67,22 @@ function groupEventsToMessages(events) {
67
67
  var MelonyContext = React9.createContext(
68
68
  void 0
69
69
  );
70
- var MelonyProvider = ({
70
+ var MelonyClientProvider = ({
71
71
  children,
72
- client
72
+ client,
73
+ initialEvents
73
74
  }) => {
74
75
  const [state, setState] = React9.useState(client.getState());
76
+ React9.useEffect(() => {
77
+ if (initialEvents && initialEvents.length > 0 && client.getState().events.length === 0) {
78
+ client.reset(initialEvents);
79
+ }
80
+ }, [client, initialEvents]);
75
81
  React9.useEffect(() => {
76
82
  setState(client.getState());
83
+ const unsubscribe = client.subscribe(setState);
77
84
  return () => {
78
- client.subscribe(setState);
85
+ unsubscribe();
79
86
  };
80
87
  }, [client]);
81
88
  const sendEvent = React9.useCallback(
@@ -86,16 +93,19 @@ var MelonyProvider = ({
86
93
  },
87
94
  [client]
88
95
  );
89
- const clear = React9.useCallback(() => client.clear(), [client]);
96
+ const reset = React9.useCallback(
97
+ (events) => client.reset(events),
98
+ [client]
99
+ );
90
100
  const value = React9.useMemo(
91
101
  () => ({
92
102
  ...state,
93
103
  messages: groupEventsToMessages(state.events),
94
104
  sendEvent,
95
- clear,
105
+ reset,
96
106
  client
97
107
  }),
98
- [state, sendEvent, clear, client]
108
+ [state, sendEvent, reset, client]
99
109
  );
100
110
  return /* @__PURE__ */ jsxRuntime.jsx(MelonyContext.Provider, { value, children });
101
111
  };
@@ -162,7 +172,9 @@ var AuthProvider = ({
162
172
  }
163
173
  return /* @__PURE__ */ jsxRuntime.jsx(AuthContext.Provider, { value, children });
164
174
  };
165
- var ThreadContext = React9.createContext(void 0);
175
+ var ThreadContext = React9.createContext(
176
+ void 0
177
+ );
166
178
  var ThreadProvider = ({
167
179
  children,
168
180
  service,
@@ -233,9 +245,6 @@ var ThreadProvider = ({
233
245
  const refreshThreads = React9.useCallback(async () => {
234
246
  await fetchThreads();
235
247
  }, [fetchThreads]);
236
- const threadMessages = React9.useMemo(() => {
237
- return groupEventsToMessages(threadEvents);
238
- }, [threadEvents]);
239
248
  React9.useEffect(() => {
240
249
  if (!activeThreadId) {
241
250
  setThreadEvents([]);
@@ -277,7 +286,6 @@ var ThreadProvider = ({
277
286
  deleteThread,
278
287
  refreshThreads,
279
288
  threadEvents,
280
- threadMessages,
281
289
  isLoadingEvents
282
290
  }),
283
291
  [
@@ -290,17 +298,23 @@ var ThreadProvider = ({
290
298
  deleteThread,
291
299
  refreshThreads,
292
300
  threadEvents,
293
- threadMessages,
294
301
  isLoadingEvents
295
302
  ]
296
303
  );
297
304
  return /* @__PURE__ */ jsxRuntime.jsx(ThreadContext.Provider, { value, children });
298
305
  };
299
- var useMelony = () => {
306
+ var useMelony = (options) => {
300
307
  const context = React9.useContext(MelonyContext);
301
308
  if (context === void 0) {
302
- throw new Error("useMelony must be used within a MelonyProvider");
309
+ throw new Error("useMelony must be used within a MelonyClientProvider");
303
310
  }
311
+ const { client, reset } = context;
312
+ const { initialEvents } = options || {};
313
+ React9.useEffect(() => {
314
+ if (initialEvents && initialEvents.length > 0 && client.getState().events.length === 0) {
315
+ reset(initialEvents);
316
+ }
317
+ }, [client, initialEvents, reset]);
304
318
  return context;
305
319
  };
306
320
  var useAuth = () => {
@@ -2359,8 +2373,8 @@ exports.ChatFull = ChatFull;
2359
2373
  exports.ChatPopup = ChatPopup;
2360
2374
  exports.ChatSidebar = ChatSidebar;
2361
2375
  exports.Composer = Composer;
2376
+ exports.MelonyClientProvider = MelonyClientProvider;
2362
2377
  exports.MelonyContext = MelonyContext;
2363
- exports.MelonyProvider = MelonyProvider;
2364
2378
  exports.Thread = Thread;
2365
2379
  exports.ThreadContext = ThreadContext;
2366
2380
  exports.ThreadList = ThreadList;