@liveblocks/react 3.13.0-vincent3 → 3.13.0

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/_private.cjs CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
 
27
27
 
28
- var _chunk5I7TKGJBcjs = require('./chunk-5I7TKGJB.cjs');
28
+ var _chunkQFAOGFJKcjs = require('./chunk-QFAOGFJK.cjs');
29
29
 
30
30
  // src/lib/use-layout-effect.ts
31
31
  var _react = require('react');
@@ -50,7 +50,7 @@ function selectorFor_useGroup(state) {
50
50
  };
51
51
  }
52
52
  function useGroup(groupId) {
53
- const client = _chunk5I7TKGJBcjs.useClient.call(void 0, );
53
+ const client = _chunkQFAOGFJKcjs.useClient.call(void 0, );
54
54
  const store = client[_core.kInternal].httpClient.groupsStore;
55
55
  const getGroupState = _react.useCallback.call(void 0,
56
56
  () => store.getItemState(groupId),
@@ -59,7 +59,7 @@ function useGroup(groupId) {
59
59
  _react.useEffect.call(void 0, () => {
60
60
  void store.enqueue(groupId);
61
61
  }, [store, groupId]);
62
- return _chunk5I7TKGJBcjs.useSyncExternalStoreWithSelector.call(void 0,
62
+ return _chunkQFAOGFJKcjs.useSyncExternalStoreWithSelector.call(void 0,
63
63
  store.subscribe,
64
64
  getGroupState,
65
65
  getGroupState,
@@ -80,8 +80,8 @@ function normalizeMentionSuggestions(suggestions) {
80
80
  function useMentionSuggestions(roomId, search) {
81
81
  const [mentionSuggestions, setMentionSuggestions] = _react.useState.call(void 0, );
82
82
  const lastInvokedAt = _react.useRef.call(void 0, );
83
- const resolveMentionSuggestions = _chunk5I7TKGJBcjs.useResolveMentionSuggestions.call(void 0, );
84
- const mentionSuggestionsCache = _chunk5I7TKGJBcjs.useMentionSuggestionsCache.call(void 0, );
83
+ const resolveMentionSuggestions = _chunkQFAOGFJKcjs.useResolveMentionSuggestions.call(void 0, );
84
+ const mentionSuggestionsCache = _chunkQFAOGFJKcjs.useMentionSuggestionsCache.call(void 0, );
85
85
  _react.useEffect.call(void 0, () => {
86
86
  if (search === void 0 || !resolveMentionSuggestions) {
87
87
  return;
@@ -136,7 +136,7 @@ function useMentionSuggestions(roomId, search) {
136
136
 
137
137
 
138
138
  function useSyncSource() {
139
- const client = _chunk5I7TKGJBcjs.useClient.call(void 0, );
139
+ const client = _chunkQFAOGFJKcjs.useClient.call(void 0, );
140
140
  const createSyncSource = client[_core.kInternal].createSyncSource;
141
141
  const [syncSource, setSyncSource] = _react.useState.call(void 0, );
142
142
  _react.useEffect.call(void 0, () => {
@@ -176,5 +176,5 @@ function useSyncSource() {
176
176
 
177
177
 
178
178
 
179
- exports.getUmbrellaStoreForClient = _chunk5I7TKGJBcjs.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunk5I7TKGJBcjs.useAddRoomCommentReaction; exports.useClientOrNull = _chunk5I7TKGJBcjs.useClientOrNull; exports.useCreateRoomComment = _chunk5I7TKGJBcjs.useCreateRoomComment; exports.useCreateRoomThread = _chunk5I7TKGJBcjs.useCreateRoomThread; exports.useCreateTextMention = _chunk5I7TKGJBcjs.useCreateTextMention; exports.useDeleteRoomComment = _chunk5I7TKGJBcjs.useDeleteRoomComment; exports.useDeleteRoomThread = _chunk5I7TKGJBcjs.useDeleteRoomThread; exports.useDeleteTextMention = _chunk5I7TKGJBcjs.useDeleteTextMention; exports.useEditRoomComment = _chunk5I7TKGJBcjs.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunk5I7TKGJBcjs.useEditRoomThreadMetadata; exports.useGroup = useGroup; exports.useLatest = _chunk5I7TKGJBcjs.useLatest; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunk5I7TKGJBcjs.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunk5I7TKGJBcjs.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunk5I7TKGJBcjs.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunk5I7TKGJBcjs.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunk5I7TKGJBcjs.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunk5I7TKGJBcjs.useReportTextEditor; exports.useResolveMentionSuggestions = _chunk5I7TKGJBcjs.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunk5I7TKGJBcjs.useRoomAttachmentUrl; exports.useRoomPermissions = _chunk5I7TKGJBcjs.useRoomPermissions; exports.useRoomThreadSubscription = _chunk5I7TKGJBcjs.useRoomThreadSubscription; exports.useSignal = _chunk5I7TKGJBcjs.useSignal; exports.useSyncExternalStoreWithSelector = _chunk5I7TKGJBcjs.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunk5I7TKGJBcjs.useYjsProvider;
179
+ exports.getUmbrellaStoreForClient = _chunkQFAOGFJKcjs.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunkQFAOGFJKcjs.useAddRoomCommentReaction; exports.useClientOrNull = _chunkQFAOGFJKcjs.useClientOrNull; exports.useCreateRoomComment = _chunkQFAOGFJKcjs.useCreateRoomComment; exports.useCreateRoomThread = _chunkQFAOGFJKcjs.useCreateRoomThread; exports.useCreateTextMention = _chunkQFAOGFJKcjs.useCreateTextMention; exports.useDeleteRoomComment = _chunkQFAOGFJKcjs.useDeleteRoomComment; exports.useDeleteRoomThread = _chunkQFAOGFJKcjs.useDeleteRoomThread; exports.useDeleteTextMention = _chunkQFAOGFJKcjs.useDeleteTextMention; exports.useEditRoomComment = _chunkQFAOGFJKcjs.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunkQFAOGFJKcjs.useEditRoomThreadMetadata; exports.useGroup = useGroup; exports.useLatest = _chunkQFAOGFJKcjs.useLatest; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunkQFAOGFJKcjs.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunkQFAOGFJKcjs.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunkQFAOGFJKcjs.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunkQFAOGFJKcjs.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunkQFAOGFJKcjs.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunkQFAOGFJKcjs.useReportTextEditor; exports.useResolveMentionSuggestions = _chunkQFAOGFJKcjs.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunkQFAOGFJKcjs.useRoomAttachmentUrl; exports.useRoomPermissions = _chunkQFAOGFJKcjs.useRoomPermissions; exports.useRoomThreadSubscription = _chunkQFAOGFJKcjs.useRoomThreadSubscription; exports.useSignal = _chunkQFAOGFJKcjs.useSignal; exports.useSyncExternalStoreWithSelector = _chunkQFAOGFJKcjs.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunkQFAOGFJKcjs.useYjsProvider;
180
180
  //# sourceMappingURL=_private.cjs.map
@@ -1,5 +1,5 @@
1
- import { G as GroupAsyncResult } from './room-BadENFHi.cjs';
2
- export { g as getUmbrellaStoreForClient, a as useAddRoomCommentReaction, u as useClientOrNull, b as useCreateRoomComment, c as useCreateRoomThread, d as useCreateTextMention, e as useDeleteRoomComment, f as useDeleteRoomThread, h as useDeleteTextMention, i as useEditRoomComment, j as useEditRoomThreadMetadata, k as useMarkRoomThreadAsRead, l as useMarkRoomThreadAsResolved, m as useMarkRoomThreadAsUnresolved, n as useMentionSuggestionsCache, o as useRemoveRoomCommentReaction, p as useReportTextEditor, q as useResolveMentionSuggestions, r as useRoomAttachmentUrl, s as useRoomPermissions, t as useRoomThreadSubscription, v as useYjsProvider } from './room-BadENFHi.cjs';
1
+ import { G as GroupAsyncResult } from './room-CEMGQ1Mj.cjs';
2
+ export { g as getUmbrellaStoreForClient, a as useAddRoomCommentReaction, u as useClientOrNull, b as useCreateRoomComment, c as useCreateRoomThread, d as useCreateTextMention, e as useDeleteRoomComment, f as useDeleteRoomThread, h as useDeleteTextMention, i as useEditRoomComment, j as useEditRoomThreadMetadata, k as useMarkRoomThreadAsRead, l as useMarkRoomThreadAsResolved, m as useMarkRoomThreadAsUnresolved, n as useMentionSuggestionsCache, o as useRemoveRoomCommentReaction, p as useReportTextEditor, q as useResolveMentionSuggestions, r as useRoomAttachmentUrl, s as useRoomPermissions, t as useRoomThreadSubscription, v as useYjsProvider } from './room-CEMGQ1Mj.cjs';
3
3
  import { MutableRefObject, useEffect } from 'react';
4
4
  import { MentionData, ISignal, SyncSource } from '@liveblocks/core';
5
5
  import '@liveblocks/client';
@@ -1,5 +1,5 @@
1
- import { G as GroupAsyncResult } from './room-BadENFHi.js';
2
- export { g as getUmbrellaStoreForClient, a as useAddRoomCommentReaction, u as useClientOrNull, b as useCreateRoomComment, c as useCreateRoomThread, d as useCreateTextMention, e as useDeleteRoomComment, f as useDeleteRoomThread, h as useDeleteTextMention, i as useEditRoomComment, j as useEditRoomThreadMetadata, k as useMarkRoomThreadAsRead, l as useMarkRoomThreadAsResolved, m as useMarkRoomThreadAsUnresolved, n as useMentionSuggestionsCache, o as useRemoveRoomCommentReaction, p as useReportTextEditor, q as useResolveMentionSuggestions, r as useRoomAttachmentUrl, s as useRoomPermissions, t as useRoomThreadSubscription, v as useYjsProvider } from './room-BadENFHi.js';
1
+ import { G as GroupAsyncResult } from './room-CEMGQ1Mj.js';
2
+ export { g as getUmbrellaStoreForClient, a as useAddRoomCommentReaction, u as useClientOrNull, b as useCreateRoomComment, c as useCreateRoomThread, d as useCreateTextMention, e as useDeleteRoomComment, f as useDeleteRoomThread, h as useDeleteTextMention, i as useEditRoomComment, j as useEditRoomThreadMetadata, k as useMarkRoomThreadAsRead, l as useMarkRoomThreadAsResolved, m as useMarkRoomThreadAsUnresolved, n as useMentionSuggestionsCache, o as useRemoveRoomCommentReaction, p as useReportTextEditor, q as useResolveMentionSuggestions, r as useRoomAttachmentUrl, s as useRoomPermissions, t as useRoomThreadSubscription, v as useYjsProvider } from './room-CEMGQ1Mj.js';
3
3
  import { MutableRefObject, useEffect } from 'react';
4
4
  import { MentionData, ISignal, SyncSource } from '@liveblocks/core';
5
5
  import '@liveblocks/client';
package/dist/_private.js CHANGED
@@ -25,7 +25,7 @@ import {
25
25
  useSignal,
26
26
  useSyncExternalStoreWithSelector,
27
27
  useYjsProvider
28
- } from "./chunk-CCOIV25T.js";
28
+ } from "./chunk-ERRJHA6O.js";
29
29
 
30
30
  // src/lib/use-layout-effect.ts
31
31
  import { useEffect, useLayoutEffect as useOriginalLayoutEffect } from "react";
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/version.ts
2
2
  var PKG_NAME = "@liveblocks/react";
3
- var PKG_VERSION = "3.13.0-vincent3";
3
+ var PKG_VERSION = "3.13.0";
4
4
  var PKG_FORMAT = "cjs";
5
5
 
6
6
  // src/ClientSideSuspense.tsx
@@ -20,4 +20,4 @@ function ClientSideSuspense(props) {
20
20
 
21
21
 
22
22
  exports.PKG_NAME = PKG_NAME; exports.PKG_VERSION = PKG_VERSION; exports.PKG_FORMAT = PKG_FORMAT; exports.ClientSideSuspense = ClientSideSuspense;
23
- //# sourceMappingURL=chunk-ARSAULLN.cjs.map
23
+ //# sourceMappingURL=chunk-C7F5PZXE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/chunk-C7F5PZXE.cjs","../src/version.ts","../src/ClientSideSuspense.tsx"],"names":[],"mappings":"AAAA;ACGO,IAAM,SAAA,EAAW,mBAAA;AACjB,IAAM,YAAA,EAAiD,QAAA;AACvD,IAAM,WAAA,EAAgD,KAAA;ADD7D;AACA;AEJA,8BAA8C;AAkC1C,+CAAA;AAVG,SAAS,kBAAA,CAAmB,KAAA,EAAc;AAC/C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,EAAA,EAAI,6BAAA,KAAc,CAAA;AAE5C,EAAA,8BAAA,CAAU,EAAA,GAAM;AAGd,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,uBACE,6BAAA,eAAC,EAAA,EAAS,QAAA,EAAU,KAAA,CAAM,QAAA,EACvB,QAAA,EAAA,QAAA,EACG,OAAO,KAAA,CAAM,SAAA,IAAa,WAAA,EACxB,KAAA,CAAM,QAAA,CAAS,EAAA,EACf,KAAA,CAAM,SAAA,EACR,KAAA,CAAM,SAAA,CACZ,CAAA;AAEJ;AF5BA;AACA;AACE;AACA;AACA;AACA;AACF,iJAAC","file":"/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/chunk-C7F5PZXE.cjs","sourcesContent":[null,"declare const __VERSION__: string;\ndeclare const TSUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof TSUP_FORMAT === \"string\" && TSUP_FORMAT;\n","import type { ReactNode } from \"react\";\nimport { Suspense, useEffect, useState } from \"react\";\n\ntype Props = {\n fallback: ReactNode;\n children: (() => ReactNode | undefined) | ReactNode | undefined;\n};\n\n/**\n * Almost like a normal <Suspense> component, except that for server-side\n * renders, the fallback will be used.\n *\n * The child props will have to be provided in a function, i.e. change:\n *\n * <Suspense fallback={<Loading />}>\n * <MyRealComponent a={1} />\n * </Suspense>\n *\n * To:\n *\n * <ClientSideSuspense fallback={<Loading />}>\n * <MyRealComponent a={1} />\n * </ClientSideSuspense>\n *\n */\nexport function ClientSideSuspense(props: Props) {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n // Effects are never executed on the server side. The point of this is to\n // delay the flipping of this boolean until after hydration has happened.\n setMounted(true);\n }, []);\n\n return (\n <Suspense fallback={props.fallback}>\n {mounted\n ? typeof props.children === \"function\"\n ? props.children()\n : props.children\n : props.fallback}\n </Suspense>\n );\n}\n"]}
@@ -330,7 +330,7 @@ import {
330
330
  isStartsWithOperator
331
331
  } from "@liveblocks/core";
332
332
  function makeThreadsFilter(query, subscriptions) {
333
- return (thread) => matchesThreadsQuery(thread, query, subscriptions) && matchesMetadata(thread, query);
333
+ return (thread) => matchesThreadsQuery(thread, query, subscriptions) && matchesThreadMetadata(thread, query);
334
334
  }
335
335
  function matchesThreadsQuery(thread, q, subscriptions) {
336
336
  let subscription = void 0;
@@ -339,7 +339,7 @@ function matchesThreadsQuery(thread, q, subscriptions) {
339
339
  }
340
340
  return (q.resolved === void 0 || thread.resolved === q.resolved) && (q.subscribed === void 0 || q.subscribed === true && subscription !== void 0 || q.subscribed === false && subscription === void 0);
341
341
  }
342
- function matchesMetadata(thread, q) {
342
+ function matchesThreadMetadata(thread, q) {
343
343
  const metadata = thread.metadata;
344
344
  return q.metadata === void 0 || Object.entries(q.metadata).every(
345
345
  ([key, op]) => (
@@ -1519,6 +1519,26 @@ var UmbrellaStore = class {
1519
1519
  (thread) => applyUpsertComment(thread, editedComment)
1520
1520
  );
1521
1521
  }
1522
+ editCommentMetadata(threadId, commentId, optimisticId, updatedMetadata, updatedAt) {
1523
+ return this.#updateThread(
1524
+ threadId,
1525
+ optimisticId,
1526
+ (thread) => {
1527
+ const comment = thread.comments.find((c) => c.id === commentId);
1528
+ if (comment === void 0) {
1529
+ return thread;
1530
+ }
1531
+ return {
1532
+ ...thread,
1533
+ updatedAt,
1534
+ comments: thread.comments.map(
1535
+ (c) => c.id === commentId ? { ...c, metadata: updatedMetadata } : c
1536
+ )
1537
+ };
1538
+ },
1539
+ updatedAt
1540
+ );
1541
+ }
1522
1542
  deleteComment(threadId, optimisticId, commentId, deletedAt) {
1523
1543
  return this.#updateThread(
1524
1544
  threadId,
@@ -1724,6 +1744,27 @@ function applyOptimisticUpdates_forThreadifications(baseThreadsDB, notifications
1724
1744
  threadsDB.upsert(applyUpsertComment(thread, optimisticUpdate.comment));
1725
1745
  break;
1726
1746
  }
1747
+ case "edit-comment-metadata": {
1748
+ const thread = threadsDB.get(optimisticUpdate.threadId);
1749
+ if (thread === void 0) break;
1750
+ if (thread.updatedAt > optimisticUpdate.updatedAt) {
1751
+ break;
1752
+ }
1753
+ const existingComment = thread.comments.find(
1754
+ (c) => c.id === optimisticUpdate.commentId
1755
+ );
1756
+ if (existingComment === void 0) break;
1757
+ threadsDB.upsert(
1758
+ applyUpsertComment(thread, {
1759
+ ...existingComment,
1760
+ metadata: {
1761
+ ...existingComment.metadata,
1762
+ ...optimisticUpdate.metadata
1763
+ }
1764
+ })
1765
+ );
1766
+ break;
1767
+ }
1727
1768
  case "delete-comment": {
1728
1769
  const thread = threadsDB.get(optimisticUpdate.threadId);
1729
1770
  if (thread === void 0) break;
@@ -1930,7 +1971,20 @@ function applyUpsertComment(thread, comment) {
1930
1971
  return updatedThread;
1931
1972
  }
1932
1973
  if (existingComment.deletedAt !== void 0) {
1933
- return thread;
1974
+ const updatedComment = {
1975
+ ...existingComment,
1976
+ metadata: {
1977
+ ...existingComment.metadata,
1978
+ ...comment.metadata
1979
+ }
1980
+ };
1981
+ const updatedComments = thread.comments.map(
1982
+ (c) => c.id === comment.id ? updatedComment : c
1983
+ );
1984
+ return {
1985
+ ...thread,
1986
+ comments: updatedComments
1987
+ };
1934
1988
  }
1935
1989
  if (existingComment.editedAt === void 0 || comment.editedAt === void 0 || existingComment.editedAt <= comment.editedAt) {
1936
1990
  const updatedComments = thread.comments.map(
@@ -3521,9 +3575,11 @@ function makeRoomContextBundle(client) {
3521
3575
  useOthersMapped,
3522
3576
  useOthersConnectionIds,
3523
3577
  useOther,
3578
+ // prettier-ignore
3524
3579
  useMutation,
3525
3580
  useThreads,
3526
3581
  useSearchComments,
3582
+ // prettier-ignore
3527
3583
  useCreateThread,
3528
3584
  useDeleteThread,
3529
3585
  useEditThreadMetadata,
@@ -3533,6 +3589,7 @@ function makeRoomContextBundle(client) {
3533
3589
  useUnsubscribeFromThread,
3534
3590
  useCreateComment,
3535
3591
  useEditComment,
3592
+ useEditCommentMetadata,
3536
3593
  useDeleteComment,
3537
3594
  useAddReaction,
3538
3595
  useRemoveReaction,
@@ -3567,8 +3624,10 @@ function makeRoomContextBundle(client) {
3567
3624
  useOthersMapped: useOthersMappedSuspense,
3568
3625
  useOthersConnectionIds: useOthersConnectionIdsSuspense,
3569
3626
  useOther: useOtherSuspense,
3627
+ // prettier-ignore
3570
3628
  useMutation,
3571
3629
  useThreads: useThreadsSuspense,
3630
+ // prettier-ignore
3572
3631
  useCreateThread,
3573
3632
  useDeleteThread,
3574
3633
  useEditThreadMetadata,
@@ -3578,6 +3637,7 @@ function makeRoomContextBundle(client) {
3578
3637
  useUnsubscribeFromThread,
3579
3638
  useCreateComment,
3580
3639
  useEditComment,
3640
+ useEditCommentMetadata,
3581
3641
  useDeleteComment,
3582
3642
  useAddReaction,
3583
3643
  useRemoveReaction,
@@ -3683,6 +3743,7 @@ function RoomProviderInner(props) {
3683
3743
  case ServerMsgCode.COMMENT_REACTION_ADDED:
3684
3744
  case ServerMsgCode.COMMENT_REACTION_REMOVED:
3685
3745
  case ServerMsgCode.COMMENT_DELETED:
3746
+ case ServerMsgCode.COMMENT_METADATA_UPDATED:
3686
3747
  if (!existingThread) break;
3687
3748
  store.updateThreadifications(
3688
3749
  [thread],
@@ -4090,6 +4151,7 @@ function useCreateRoomThread(roomId) {
4090
4151
  (options) => {
4091
4152
  const body = options.body;
4092
4153
  const metadata = options.metadata ?? {};
4154
+ const commentMetadata = options.commentMetadata ?? {};
4093
4155
  const attachments = options.attachments;
4094
4156
  const threadId = createThreadId();
4095
4157
  const commentId = createCommentId();
@@ -4103,7 +4165,8 @@ function useCreateRoomThread(roomId) {
4103
4165
  userId: getCurrentUserId(client),
4104
4166
  body,
4105
4167
  reactions: [],
4106
- attachments: attachments ?? []
4168
+ attachments: attachments ?? [],
4169
+ metadata: commentMetadata
4107
4170
  };
4108
4171
  const newThread = {
4109
4172
  id: threadId,
@@ -4128,6 +4191,7 @@ function useCreateRoomThread(roomId) {
4128
4191
  commentId,
4129
4192
  body,
4130
4193
  metadata,
4194
+ commentMetadata,
4131
4195
  attachmentIds
4132
4196
  }).then(
4133
4197
  (thread) => {
@@ -4141,7 +4205,8 @@ function useCreateRoomThread(roomId) {
4141
4205
  threadId,
4142
4206
  commentId,
4143
4207
  body,
4144
- metadata
4208
+ metadata,
4209
+ commentMetadata
4145
4210
  },
4146
4211
  err
4147
4212
  )
@@ -4224,13 +4289,65 @@ function useEditRoomThreadMetadata(roomId) {
4224
4289
  [client, roomId]
4225
4290
  );
4226
4291
  }
4292
+ function useEditCommentMetadata() {
4293
+ return useEditRoomCommentMetadata(useRoom().id);
4294
+ }
4295
+ function useEditRoomCommentMetadata(roomId) {
4296
+ const client = useClient();
4297
+ return useCallback3(
4298
+ (options) => {
4299
+ if (!options.metadata) {
4300
+ return;
4301
+ }
4302
+ const threadId = options.threadId;
4303
+ const commentId = options.commentId;
4304
+ const metadata = options.metadata;
4305
+ const updatedAt = /* @__PURE__ */ new Date();
4306
+ const { store, onMutationFailure } = getRoomExtrasForClient(client);
4307
+ const optimisticId = store.optimisticUpdates.add({
4308
+ type: "edit-comment-metadata",
4309
+ threadId,
4310
+ commentId,
4311
+ metadata,
4312
+ updatedAt
4313
+ });
4314
+ client[kInternal4].httpClient.editCommentMetadata({ roomId, threadId, commentId, metadata }).then(
4315
+ (updatedMetadata) => (
4316
+ // Replace the optimistic update by the real thing
4317
+ store.editCommentMetadata(
4318
+ threadId,
4319
+ commentId,
4320
+ optimisticId,
4321
+ updatedMetadata,
4322
+ updatedAt
4323
+ )
4324
+ ),
4325
+ (err) => onMutationFailure(
4326
+ optimisticId,
4327
+ {
4328
+ type: "EDIT_COMMENT_METADATA_ERROR",
4329
+ roomId,
4330
+ threadId,
4331
+ commentId,
4332
+ metadata
4333
+ },
4334
+ err
4335
+ )
4336
+ );
4337
+ },
4338
+ [client, roomId]
4339
+ );
4340
+ }
4227
4341
  function useCreateComment() {
4228
4342
  return useCreateRoomComment(useRoom().id);
4229
4343
  }
4230
4344
  function useCreateRoomComment(roomId) {
4231
4345
  const client = useClient();
4232
4346
  return useCallback3(
4233
- ({ threadId, body, attachments }) => {
4347
+ (options) => {
4348
+ const { threadId, body } = options;
4349
+ const metadata = options.metadata ?? {};
4350
+ const attachments = options.attachments ?? [];
4234
4351
  const commentId = createCommentId();
4235
4352
  const createdAt = /* @__PURE__ */ new Date();
4236
4353
  const comment = {
@@ -4242,7 +4359,8 @@ function useCreateRoomComment(roomId) {
4242
4359
  userId: getCurrentUserId(client),
4243
4360
  body,
4244
4361
  reactions: [],
4245
- attachments: attachments ?? []
4362
+ attachments: attachments ?? [],
4363
+ metadata
4246
4364
  };
4247
4365
  const { store, onMutationFailure } = getRoomExtrasForClient(client);
4248
4366
  const optimisticId = store.optimisticUpdates.add({
@@ -4250,7 +4368,14 @@ function useCreateRoomComment(roomId) {
4250
4368
  comment
4251
4369
  });
4252
4370
  const attachmentIds = attachments?.map((attachment) => attachment.id);
4253
- client[kInternal4].httpClient.createComment({ roomId, threadId, commentId, body, attachmentIds }).then(
4371
+ client[kInternal4].httpClient.createComment({
4372
+ roomId,
4373
+ threadId,
4374
+ commentId,
4375
+ body,
4376
+ metadata,
4377
+ attachmentIds
4378
+ }).then(
4254
4379
  (newComment) => {
4255
4380
  store.createComment(newComment, optimisticId);
4256
4381
  },
@@ -4261,7 +4386,8 @@ function useCreateRoomComment(roomId) {
4261
4386
  roomId,
4262
4387
  threadId,
4263
4388
  commentId,
4264
- body
4389
+ body,
4390
+ metadata
4265
4391
  },
4266
4392
  err
4267
4393
  )
@@ -4277,7 +4403,13 @@ function useEditComment() {
4277
4403
  function useEditRoomComment(roomId) {
4278
4404
  const client = useClient();
4279
4405
  return useCallback3(
4280
- ({ threadId, commentId, body, attachments }) => {
4406
+ ({
4407
+ threadId,
4408
+ commentId,
4409
+ body,
4410
+ attachments,
4411
+ metadata
4412
+ }) => {
4281
4413
  const editedAt = /* @__PURE__ */ new Date();
4282
4414
  const { store, onMutationFailure } = getRoomExtrasForClient(client);
4283
4415
  const existing = store.outputs.threads.get().getEvenIfDeleted(threadId);
@@ -4296,23 +4428,42 @@ function useEditRoomComment(roomId) {
4296
4428
  );
4297
4429
  return;
4298
4430
  }
4431
+ const updatedMetadata = metadata !== void 0 ? {
4432
+ ...comment.metadata,
4433
+ ...metadata
4434
+ } : comment.metadata;
4299
4435
  const optimisticId = store.optimisticUpdates.add({
4300
4436
  type: "edit-comment",
4301
4437
  comment: {
4302
4438
  ...comment,
4303
4439
  editedAt,
4304
4440
  body,
4305
- attachments: attachments ?? []
4441
+ attachments: attachments ?? [],
4442
+ metadata: updatedMetadata
4306
4443
  }
4307
4444
  });
4308
4445
  const attachmentIds = attachments?.map((attachment) => attachment.id);
4309
- client[kInternal4].httpClient.editComment({ roomId, threadId, commentId, body, attachmentIds }).then(
4446
+ client[kInternal4].httpClient.editComment({
4447
+ roomId,
4448
+ threadId,
4449
+ commentId,
4450
+ body,
4451
+ attachmentIds,
4452
+ metadata
4453
+ }).then(
4310
4454
  (editedComment) => {
4311
4455
  store.editComment(threadId, optimisticId, editedComment);
4312
4456
  },
4313
4457
  (err) => onMutationFailure(
4314
4458
  optimisticId,
4315
- { type: "EDIT_COMMENT_ERROR", roomId, threadId, commentId, body },
4459
+ {
4460
+ type: "EDIT_COMMENT_ERROR",
4461
+ roomId,
4462
+ threadId,
4463
+ commentId,
4464
+ body,
4465
+ metadata: updatedMetadata
4466
+ },
4316
4467
  err
4317
4468
  )
4318
4469
  );
@@ -4937,6 +5088,9 @@ var _useMutation = useMutation;
4937
5088
  var _useCreateThread = useCreateThread;
4938
5089
  var _useDeleteThread = useDeleteThread;
4939
5090
  var _useEditThreadMetadata = useEditThreadMetadata;
5091
+ var _useCreateComment = useCreateComment;
5092
+ var _useEditComment = useEditComment;
5093
+ var _useEditCommentMetadata = useEditCommentMetadata;
4940
5094
  var _useEventListener = useEventListener;
4941
5095
  var _useMyPresence = useMyPresence;
4942
5096
  var _useOthersMapped = useOthersMapped;
@@ -5031,9 +5185,7 @@ export {
5031
5185
  useCreateRoomThread,
5032
5186
  useDeleteRoomThread,
5033
5187
  useEditRoomThreadMetadata,
5034
- useCreateComment,
5035
5188
  useCreateRoomComment,
5036
- useEditComment,
5037
5189
  useEditRoomComment,
5038
5190
  useDeleteComment,
5039
5191
  useDeleteRoomComment,
@@ -5068,6 +5220,9 @@ export {
5068
5220
  _useCreateThread,
5069
5221
  _useDeleteThread,
5070
5222
  _useEditThreadMetadata,
5223
+ _useCreateComment,
5224
+ _useEditComment,
5225
+ _useEditCommentMetadata,
5071
5226
  _useEventListener,
5072
5227
  _useMyPresence,
5073
5228
  _useOthersMapped,
@@ -5090,4 +5245,4 @@ export {
5090
5245
  _useStorageRoot,
5091
5246
  _useUpdateMyPresence
5092
5247
  };
5093
- //# sourceMappingURL=chunk-CCOIV25T.js.map
5248
+ //# sourceMappingURL=chunk-ERRJHA6O.js.map