@liveblocks/react 3.21.0-private1 → 3.21.0-private2

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.
@@ -3678,6 +3678,9 @@ function getRoomExtrasForClient(client) {
3678
3678
  }
3679
3679
  return extras;
3680
3680
  }
3681
+ function getThreadVisibility(store, threadId) {
3682
+ return _optionalChain([store, 'access', _60 => _60.outputs, 'access', _61 => _61.threads, 'access', _62 => _62.get, 'call', _63 => _63(), 'access', _64 => _64.getEvenIfDeleted, 'call', _65 => _65(threadId), 'optionalAccess', _66 => _66.visibility]);
3683
+ }
3681
3684
  function makeRoomExtrasForClient(client) {
3682
3685
  const store = getUmbrellaStoreForClient(client);
3683
3686
  function onMutationFailure(optimisticId, context, innerError) {
@@ -3686,8 +3689,8 @@ function makeRoomExtrasForClient(client) {
3686
3689
  if (innerError.status === 403) {
3687
3690
  const detailedMessage = [
3688
3691
  innerError.message,
3689
- _optionalChain([innerError, 'access', _60 => _60.details, 'optionalAccess', _61 => _61.suggestion]),
3690
- _optionalChain([innerError, 'access', _62 => _62.details, 'optionalAccess', _63 => _63.docs])
3692
+ _optionalChain([innerError, 'access', _67 => _67.details, 'optionalAccess', _68 => _68.suggestion]),
3693
+ _optionalChain([innerError, 'access', _69 => _69.details, 'optionalAccess', _70 => _70.docs])
3691
3694
  ].filter(Boolean).join("\n");
3692
3695
  _core.console.error(detailedMessage);
3693
3696
  }
@@ -3909,7 +3912,7 @@ function RoomProviderInner(props) {
3909
3912
  }
3910
3913
  function useRoom_withRoomContext(RoomContext, options) {
3911
3914
  const room = useRoomOrNull(RoomContext);
3912
- if (room === null && !_optionalChain([options, 'optionalAccess', _64 => _64.allowOutsideRoom])) {
3915
+ if (room === null && !_optionalChain([options, 'optionalAccess', _71 => _71.allowOutsideRoom])) {
3913
3916
  throw new Error("RoomProvider is missing from the React tree.");
3914
3917
  }
3915
3918
  return room;
@@ -4470,7 +4473,7 @@ function useSearchComments_withRoomContext(RoomContext, options) {
4470
4473
  const room = useRoom_withRoomContext(RoomContext);
4471
4474
  const queryKey = _core.stableStringify.call(void 0, [room.id, options.query]);
4472
4475
  _react.useEffect.call(void 0, () => {
4473
- const currentRequestId = (_nullishCoalesce(_optionalChain([currentRequestInfo, 'access', _65 => _65.current, 'optionalAccess', _66 => _66.id]), () => ( 0))) + 1;
4476
+ const currentRequestId = (_nullishCoalesce(_optionalChain([currentRequestInfo, 'access', _72 => _72.current, 'optionalAccess', _73 => _73.id]), () => ( 0))) + 1;
4474
4477
  const controller = new AbortController();
4475
4478
  currentRequestInfo.current = { id: currentRequestId, controller };
4476
4479
  setResult((result2) => {
@@ -4487,12 +4490,12 @@ function useSearchComments_withRoomContext(RoomContext, options) {
4487
4490
  { signal: controller.signal }
4488
4491
  ).then(({ data }) => {
4489
4492
  if (controller.signal.aborted) return;
4490
- if (_optionalChain([currentRequestInfo, 'access', _67 => _67.current, 'optionalAccess', _68 => _68.id]) !== currentRequestId) return;
4493
+ if (_optionalChain([currentRequestInfo, 'access', _74 => _74.current, 'optionalAccess', _75 => _75.id]) !== currentRequestId) return;
4491
4494
  setResult({ isLoading: false, results: data });
4492
4495
  currentRequestInfo.current = null;
4493
4496
  }).catch((err) => {
4494
4497
  if (controller.signal.aborted) return;
4495
- if (_optionalChain([currentRequestInfo, 'access', _69 => _69.current, 'optionalAccess', _70 => _70.id]) !== currentRequestId) return;
4498
+ if (_optionalChain([currentRequestInfo, 'access', _76 => _76.current, 'optionalAccess', _77 => _77.id]) !== currentRequestId) return;
4496
4499
  setResult({ isLoading: false, error: err });
4497
4500
  currentRequestInfo.current = null;
4498
4501
  });
@@ -4561,7 +4564,7 @@ function useCreateRoomThread(roomId) {
4561
4564
  thread: newThread,
4562
4565
  roomId
4563
4566
  });
4564
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _71 => _71.map, 'call', _72 => _72((attachment) => attachment.id)]);
4567
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _78 => _78.map, 'call', _79 => _79((attachment) => attachment.id)]);
4565
4568
  client[_core.kInternal].httpClient.createThread({
4566
4569
  roomId,
4567
4570
  threadId,
@@ -4608,7 +4611,7 @@ function useDeleteRoomThread(roomId) {
4608
4611
  const { store, onMutationFailure } = getRoomExtrasForClient(client);
4609
4612
  const userId = getCurrentUserId(client);
4610
4613
  const existing = store.outputs.threads.get().get(threadId);
4611
- if (_optionalChain([existing, 'optionalAccess', _73 => _73.comments, 'optionalAccess', _74 => _74[0], 'optionalAccess', _75 => _75.userId]) !== userId) {
4614
+ if (_optionalChain([existing, 'optionalAccess', _80 => _80.comments, 'optionalAccess', _81 => _81[0], 'optionalAccess', _82 => _82.userId]) !== userId) {
4612
4615
  throw new Error("Only the thread creator can delete the thread");
4613
4616
  }
4614
4617
  const optimisticId = store.optimisticUpdates.add({
@@ -4617,7 +4620,11 @@ function useDeleteRoomThread(roomId) {
4617
4620
  threadId,
4618
4621
  deletedAt: /* @__PURE__ */ new Date()
4619
4622
  });
4620
- client[_core.kInternal].httpClient.deleteThread({ roomId, threadId }).then(
4623
+ client[_core.kInternal].httpClient.deleteThread({
4624
+ roomId,
4625
+ threadId,
4626
+ visibility: existing.visibility
4627
+ }).then(
4621
4628
  () => {
4622
4629
  store.deleteThread(threadId, optimisticId);
4623
4630
  },
@@ -4654,7 +4661,12 @@ function useEditRoomThreadMetadata(roomId) {
4654
4661
  threadId,
4655
4662
  updatedAt
4656
4663
  });
4657
- client[_core.kInternal].httpClient.editThreadMetadata({ roomId, threadId, metadata }).then(
4664
+ client[_core.kInternal].httpClient.editThreadMetadata({
4665
+ roomId,
4666
+ threadId,
4667
+ metadata,
4668
+ visibility: getThreadVisibility(store, threadId)
4669
+ }).then(
4658
4670
  (metadata2) => (
4659
4671
  // Replace the optimistic update by the real thing
4660
4672
  store.patchThread(threadId, optimisticId, { metadata: metadata2 }, updatedAt)
@@ -4701,7 +4713,13 @@ function useEditRoomCommentMetadata(roomId) {
4701
4713
  metadata,
4702
4714
  updatedAt
4703
4715
  });
4704
- client[_core.kInternal].httpClient.editCommentMetadata({ roomId, threadId, commentId, metadata }).then(
4716
+ client[_core.kInternal].httpClient.editCommentMetadata({
4717
+ roomId,
4718
+ threadId,
4719
+ commentId,
4720
+ metadata,
4721
+ visibility: getThreadVisibility(store, threadId)
4722
+ }).then(
4705
4723
  (updatedMetadata) => (
4706
4724
  // Replace the optimistic update by the real thing
4707
4725
  store.editCommentMetadata(
@@ -4760,14 +4778,15 @@ function useCreateRoomComment(roomId) {
4760
4778
  type: "create-comment",
4761
4779
  comment
4762
4780
  });
4763
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _76 => _76.map, 'call', _77 => _77((attachment) => attachment.id)]);
4781
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _83 => _83.map, 'call', _84 => _84((attachment) => attachment.id)]);
4764
4782
  client[_core.kInternal].httpClient.createComment({
4765
4783
  roomId,
4766
4784
  threadId,
4767
4785
  commentId,
4768
4786
  body,
4769
4787
  metadata,
4770
- attachmentIds
4788
+ attachmentIds,
4789
+ visibility: getThreadVisibility(store, threadId)
4771
4790
  }).then(
4772
4791
  (newComment) => {
4773
4792
  store.createComment(newComment, optimisticId);
@@ -4838,14 +4857,15 @@ function useEditRoomComment(roomId) {
4838
4857
  metadata: updatedMetadata
4839
4858
  }
4840
4859
  });
4841
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _78 => _78.map, 'call', _79 => _79((attachment) => attachment.id)]);
4860
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _85 => _85.map, 'call', _86 => _86((attachment) => attachment.id)]);
4842
4861
  client[_core.kInternal].httpClient.editComment({
4843
4862
  roomId,
4844
4863
  threadId,
4845
4864
  commentId,
4846
4865
  body,
4847
4866
  attachmentIds,
4848
- metadata
4867
+ metadata,
4868
+ visibility: existing.visibility
4849
4869
  }).then(
4850
4870
  (editedComment) => {
4851
4871
  store.editComment(threadId, optimisticId, editedComment);
@@ -4886,7 +4906,12 @@ function useDeleteRoomComment(roomId) {
4886
4906
  deletedAt,
4887
4907
  roomId
4888
4908
  });
4889
- client[_core.kInternal].httpClient.deleteComment({ roomId, threadId, commentId }).then(
4909
+ client[_core.kInternal].httpClient.deleteComment({
4910
+ roomId,
4911
+ threadId,
4912
+ commentId,
4913
+ visibility: getThreadVisibility(store, threadId)
4914
+ }).then(
4890
4915
  () => {
4891
4916
  store.deleteComment(threadId, optimisticId, commentId, deletedAt);
4892
4917
  },
@@ -4923,7 +4948,13 @@ function useAddRoomCommentReaction(roomId) {
4923
4948
  createdAt
4924
4949
  }
4925
4950
  });
4926
- client[_core.kInternal].httpClient.addReaction({ roomId, threadId, commentId, emoji }).then(
4951
+ client[_core.kInternal].httpClient.addReaction({
4952
+ roomId,
4953
+ threadId,
4954
+ commentId,
4955
+ emoji,
4956
+ visibility: getThreadVisibility(store, threadId)
4957
+ }).then(
4927
4958
  (addedReaction) => {
4928
4959
  store.addReaction(
4929
4960
  threadId,
@@ -4970,7 +5001,13 @@ function useRemoveRoomCommentReaction(roomId) {
4970
5001
  userId,
4971
5002
  removedAt
4972
5003
  });
4973
- client[_core.kInternal].httpClient.removeReaction({ roomId, threadId, commentId, emoji }).then(
5004
+ client[_core.kInternal].httpClient.removeReaction({
5005
+ roomId,
5006
+ threadId,
5007
+ commentId,
5008
+ emoji,
5009
+ visibility: getThreadVisibility(store, threadId)
5010
+ }).then(
4974
5011
  () => {
4975
5012
  store.removeReaction(
4976
5013
  threadId,
@@ -5066,7 +5103,11 @@ function useMarkRoomThreadAsResolved(roomId) {
5066
5103
  threadId,
5067
5104
  updatedAt
5068
5105
  });
5069
- client[_core.kInternal].httpClient.markThreadAsResolved({ roomId, threadId }).then(
5106
+ client[_core.kInternal].httpClient.markThreadAsResolved({
5107
+ roomId,
5108
+ threadId,
5109
+ visibility: getThreadVisibility(store, threadId)
5110
+ }).then(
5070
5111
  () => {
5071
5112
  store.patchThread(
5072
5113
  threadId,
@@ -5102,7 +5143,11 @@ function useMarkRoomThreadAsUnresolved(roomId) {
5102
5143
  threadId,
5103
5144
  updatedAt
5104
5145
  });
5105
- client[_core.kInternal].httpClient.markThreadAsUnresolved({ roomId, threadId }).then(
5146
+ client[_core.kInternal].httpClient.markThreadAsUnresolved({
5147
+ roomId,
5148
+ threadId,
5149
+ visibility: getThreadVisibility(store, threadId)
5150
+ }).then(
5106
5151
  () => {
5107
5152
  store.patchThread(
5108
5153
  threadId,
@@ -5224,7 +5269,7 @@ function useRoomThreadSubscription(roomId, threadId) {
5224
5269
  }
5225
5270
  return {
5226
5271
  status: "subscribed",
5227
- unreadSince: _nullishCoalesce(_optionalChain([notification, 'optionalAccess', _80 => _80.readAt]), () => ( null)),
5272
+ unreadSince: _nullishCoalesce(_optionalChain([notification, 'optionalAccess', _87 => _87.readAt]), () => ( null)),
5228
5273
  subscribe,
5229
5274
  unsubscribe
5230
5275
  };
@@ -5513,7 +5558,7 @@ function useThreadsSuspense(options = {}) {
5513
5558
  return useThreadsSuspense_withRoomContext(GlobalRoomContext, options);
5514
5559
  }
5515
5560
  function selectorFor_useAttachmentUrl(state) {
5516
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _81 => _81.isLoading])) {
5561
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _88 => _88.isLoading])) {
5517
5562
  return _nullishCoalesce(state, () => ( { isLoading: true }));
5518
5563
  }
5519
5564
  if (state.error) {
@@ -5587,7 +5632,7 @@ function useAttachmentUrlSuspense(attachmentId) {
5587
5632
  function useRoomPermissions(roomId) {
5588
5633
  const client = useClient();
5589
5634
  const store = getRoomExtrasForClient(client).store;
5590
- return _optionalChain([useSignal, 'call', _82 => _82(store.permissionHints.getPermissionForRoom\u03A3(roomId)), 'optionalAccess', _83 => _83.permissions]);
5635
+ return _optionalChain([useSignal, 'call', _89 => _89(store.permissionHints.getPermissionForRoom\u03A3(roomId)), 'optionalAccess', _90 => _90.permissions]);
5591
5636
  }
5592
5637
  function useHasPermissionAccess(roomId, resource, requiredAccess) {
5593
5638
  const permissions = useRoomPermissions(roomId);
@@ -5609,13 +5654,15 @@ function useSelfAccessFallback(roomId, resource, requiredAccess) {
5609
5654
  [room, roomId]
5610
5655
  );
5611
5656
  const getSnapshot = _react.useCallback.call(void 0, () => {
5612
- const self = _optionalChain([room, 'optionalAccess', _84 => _84.id]) === roomId ? room.getSelf() : null;
5613
5657
  const isCommentsResource = resource === "comments" || resource === "comments:public" || resource === "comments:private";
5614
- if (isCommentsResource && requiredAccess === "write") {
5615
- return _nullishCoalesce(_optionalChain([self, 'optionalAccess', _85 => _85.canComment]), () => ( true));
5658
+ if (_optionalChain([room, 'optionalAccess', _91 => _91.id]) === roomId) {
5659
+ const permissionMatrix = room[_core.kInternal].getPermissionMatrix();
5660
+ if (permissionMatrix !== void 0) {
5661
+ return _core.hasPermissionAccess.call(void 0, permissionMatrix, resource, requiredAccess);
5662
+ }
5616
5663
  }
5617
- if (resource === "storage" && requiredAccess === "write") {
5618
- return _nullishCoalesce(_optionalChain([self, 'optionalAccess', _86 => _86.canWrite]), () => ( true));
5664
+ if (requiredAccess === "write" && (isCommentsResource || resource === "storage")) {
5665
+ return true;
5619
5666
  }
5620
5667
  return false;
5621
5668
  }, [resource, requiredAccess, room, roomId]);
@@ -6234,4 +6281,4 @@ var _useUpdateMyPresence = useUpdateMyPresence;
6234
6281
 
6235
6282
 
6236
6283
  exports.ClientContext = ClientContext; exports.useClientOrNull = useClientOrNull; exports.useClient = useClient; exports.GlobalRoomContext = GlobalRoomContext; exports.useLatest = useLatest; exports.useInitial = useInitial; exports.RegisterAiKnowledge = RegisterAiKnowledge; exports.RegisterAiTool = RegisterAiTool; exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector; exports.useSignal = useSignal; exports.getUmbrellaStoreForClient = getUmbrellaStoreForClient; exports.useCreateAiChat = useCreateAiChat; exports.useDeleteAiChat = useDeleteAiChat; exports.useAiChatStatus = useAiChatStatus; exports.useSendAiMessage = useSendAiMessage; exports.LiveblocksProvider = LiveblocksProvider; exports.createLiveblocksContext = createLiveblocksContext; exports.useInboxNotifications = useInboxNotifications; exports.useInboxNotificationsSuspense = useInboxNotificationsSuspense; exports.useMarkAllInboxNotificationsAsRead = useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = useMarkInboxNotificationAsRead; exports.useDeleteAllInboxNotifications = useDeleteAllInboxNotifications; exports.useDeleteInboxNotification = useDeleteInboxNotification; exports.useUnreadInboxNotificationsCount = useUnreadInboxNotificationsCount; exports.useUnreadInboxNotificationsCountSuspense = useUnreadInboxNotificationsCountSuspense; exports.useNotificationSettings = useNotificationSettings; exports.useNotificationSettingsSuspense = useNotificationSettingsSuspense; exports.useUpdateNotificationSettings = useUpdateNotificationSettings; exports.useRoomInfo = useRoomInfo; exports.useRoomInfoSuspense = useRoomInfoSuspense; exports.useGroupInfo = useGroupInfo; exports.useGroupInfoSuspense = useGroupInfoSuspense; exports._useInboxNotificationThread = _useInboxNotificationThread; exports._useUser = _useUser; exports._useUserSuspense = _useUserSuspense; exports._useUserThreads_experimental = _useUserThreads_experimental; exports._useUserThreadsSuspense_experimental = _useUserThreadsSuspense_experimental; exports._useAiChats = _useAiChats; exports._useAiChatsSuspense = _useAiChatsSuspense; exports._useAiChat = _useAiChat; exports._useAiChatSuspense = _useAiChatSuspense; exports._useAiChatMessages = _useAiChatMessages; exports._useAiChatMessagesSuspense = _useAiChatMessagesSuspense; exports._useUrlMetadata = _useUrlMetadata; exports._useUrlMetadataSuspense = _useUrlMetadataSuspense; exports.useSyncStatus = useSyncStatus; exports.useErrorListener = useErrorListener; exports.useStatus = useStatus; exports.useReportTextEditor = useReportTextEditor; exports.useYjsProvider = useYjsProvider; exports.useCreateTextMention = useCreateTextMention; exports.useDeleteTextMention = useDeleteTextMention; exports.useResolveMentionSuggestions = useResolveMentionSuggestions; exports.useMentionSuggestionsCache = useMentionSuggestionsCache; exports.useLostConnectionListener = useLostConnectionListener; exports.useHistory = useHistory; exports.useUndo = useUndo; exports.useRedo = useRedo; exports.useCanUndo = useCanUndo; exports.useCanRedo = useCanRedo; exports.useOthersConnectionIds = useOthersConnectionIds; exports.useCreateFeed = useCreateFeed; exports.useDeleteFeed = useDeleteFeed; exports.useUpdateFeedMetadata = useUpdateFeedMetadata; exports.useCreateFeedMessage = useCreateFeedMessage; exports.useDeleteFeedMessage = useDeleteFeedMessage; exports.useUpdateFeedMessage = useUpdateFeedMessage; exports.useCreateRoomThread = useCreateRoomThread; exports.useDeleteRoomThread = useDeleteRoomThread; exports.useEditRoomThreadMetadata = useEditRoomThreadMetadata; exports.useCreateRoomComment = useCreateRoomComment; exports.useEditRoomComment = useEditRoomComment; exports.useDeleteComment = useDeleteComment; exports.useDeleteRoomComment = useDeleteRoomComment; exports.useAddRoomCommentReaction = useAddRoomCommentReaction; exports.useRemoveReaction = useRemoveReaction; exports.useRemoveRoomCommentReaction = useRemoveRoomCommentReaction; exports.useMarkRoomThreadAsRead = useMarkRoomThreadAsRead; exports.useMarkThreadAsRead = useMarkThreadAsRead; exports.useMarkThreadAsResolved = useMarkThreadAsResolved; exports.useMarkRoomThreadAsResolved = useMarkRoomThreadAsResolved; exports.useMarkThreadAsUnresolved = useMarkThreadAsUnresolved; exports.useMarkRoomThreadAsUnresolved = useMarkRoomThreadAsUnresolved; exports.useSubscribeToThread = useSubscribeToThread; exports.useUnsubscribeFromThread = useUnsubscribeFromThread; exports.useThreadSubscription = useThreadSubscription; exports.useRoomThreadSubscription = useRoomThreadSubscription; exports.useHistoryVersionData = useHistoryVersionData; exports.useUpdateRoomSubscriptionSettings = useUpdateRoomSubscriptionSettings; exports.useSuspendUntilPresenceReady = useSuspendUntilPresenceReady; exports.useOthersConnectionIdsSuspense = useOthersConnectionIdsSuspense; exports.useSuspendUntilStorageReady = useSuspendUntilStorageReady; exports.useAttachmentUrl = useAttachmentUrl; exports.useRoomAttachmentUrl = useRoomAttachmentUrl; exports.useAttachmentUrlSuspense = useAttachmentUrlSuspense; exports.useRoomPermissions = useRoomPermissions; exports.useHasPermissionAccess = useHasPermissionAccess; exports.createRoomContext = createRoomContext; exports._RoomProvider = _RoomProvider; exports._useBroadcastEvent = _useBroadcastEvent; exports._useOthersListener = _useOthersListener; exports._useRoom = _useRoom; exports._useIsInsideRoom = _useIsInsideRoom; exports._useAddReaction = _useAddReaction; exports._useMutation = _useMutation; exports._useCreateThread = _useCreateThread; exports._useDeleteThread = _useDeleteThread; exports._useEditThreadMetadata = _useEditThreadMetadata; exports._useCreateComment = _useCreateComment; exports._useEditComment = _useEditComment; exports._useEditCommentMetadata = _useEditCommentMetadata; exports._useEventListener = _useEventListener; exports._useMyPresence = _useMyPresence; exports._useOthersMapped = _useOthersMapped; exports._useOthersMappedSuspense = _useOthersMappedSuspense; exports._useThreads = _useThreads; exports._useFeeds = _useFeeds; exports._useFeedMessages = _useFeedMessages; exports._useFeedsSuspense = _useFeedsSuspense; exports._useFeedMessagesSuspense = _useFeedMessagesSuspense; exports._useSearchComments = _useSearchComments; exports._useThreadsSuspense = _useThreadsSuspense; exports._useRoomSubscriptionSettings = _useRoomSubscriptionSettings; exports._useRoomSubscriptionSettingsSuspense = _useRoomSubscriptionSettingsSuspense; exports._useHistoryVersions = _useHistoryVersions; exports._useHistoryVersionsSuspense = _useHistoryVersionsSuspense; exports._useOther = _useOther; exports._useOthers = _useOthers; exports._useOtherSuspense = _useOtherSuspense; exports._useOthersSuspense = _useOthersSuspense; exports._useStorage = _useStorage; exports._useStorageSuspense = _useStorageSuspense; exports._useSelf = _useSelf; exports._useSelfSuspense = _useSelfSuspense; exports._useStorageRoot = _useStorageRoot; exports._useUpdateMyPresence = _useUpdateMyPresence;
6237
- //# sourceMappingURL=chunk-2KKRVZI5.cjs.map
6284
+ //# sourceMappingURL=chunk-K73KKSIG.cjs.map