@liveblocks/react 3.20.0-exp6 → 3.20.0-perm2
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 +9 -7
- package/dist/_private.cjs.map +1 -1
- package/dist/_private.d.cts +2 -2
- package/dist/_private.d.ts +2 -2
- package/dist/_private.js +3 -1
- package/dist/_private.js.map +1 -1
- package/dist/{chunk-PZI34A3N.cjs → chunk-77SEZCTH.cjs} +2 -2
- package/dist/{chunk-PZI34A3N.cjs.map → chunk-77SEZCTH.cjs.map} +1 -1
- package/dist/{chunk-K7TLHUJM.cjs → chunk-RBYVZVTC.cjs} +65 -14
- package/dist/chunk-RBYVZVTC.cjs.map +1 -0
- package/dist/{chunk-DJOWOQLG.js → chunk-RSAVNVBA.js} +64 -13
- package/dist/chunk-RSAVNVBA.js.map +1 -0
- package/dist/{chunk-N7G7AN3F.js → chunk-YFHPKFRB.js} +2 -2
- package/dist/index.cjs +4 -4
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/{room-DG1r0yeF.d.cts → room-wt-tS2Ug.d.cts} +13 -5
- package/dist/{room-DG1r0yeF.d.ts → room-wt-tS2Ug.d.ts} +13 -5
- package/dist/suspense.cjs +4 -4
- package/dist/suspense.d.cts +1 -1
- package/dist/suspense.d.ts +1 -1
- package/dist/suspense.js +2 -2
- package/package.json +3 -3
- package/dist/chunk-DJOWOQLG.js.map +0 -1
- package/dist/chunk-K7TLHUJM.cjs.map +0 -1
- /package/dist/{chunk-N7G7AN3F.js.map → chunk-YFHPKFRB.js.map} +0 -0
|
@@ -292,6 +292,7 @@ import {
|
|
|
292
292
|
nanoid as nanoid2,
|
|
293
293
|
nn,
|
|
294
294
|
patchNotificationSettings,
|
|
295
|
+
permissionCapabilitiesFromScopes,
|
|
295
296
|
shallow,
|
|
296
297
|
shallow2,
|
|
297
298
|
Signal,
|
|
@@ -860,17 +861,21 @@ function createStore_forUrlsMetadata() {
|
|
|
860
861
|
}
|
|
861
862
|
function createStore_forPermissionHints() {
|
|
862
863
|
const permissionsByRoomId = new DefaultMap(
|
|
863
|
-
() => new Signal(
|
|
864
|
+
() => new Signal(void 0)
|
|
864
865
|
);
|
|
865
|
-
function update(newHints) {
|
|
866
|
+
function update(newHints, requestedAt, roomIds) {
|
|
866
867
|
batch2(() => {
|
|
867
|
-
|
|
868
|
+
const updatedRoomIds = roomIds === void 0 ? Object.keys(newHints) : /* @__PURE__ */ new Set([...roomIds, ...Object.keys(newHints)]);
|
|
869
|
+
for (const roomId of updatedRoomIds) {
|
|
868
870
|
const signal = permissionsByRoomId.getOrCreate(roomId);
|
|
869
|
-
const
|
|
870
|
-
|
|
871
|
-
|
|
871
|
+
const existingHint = signal.get();
|
|
872
|
+
if (existingHint !== void 0 && existingHint.requestedAt > requestedAt) {
|
|
873
|
+
continue;
|
|
872
874
|
}
|
|
873
|
-
signal.set(
|
|
875
|
+
signal.set({
|
|
876
|
+
requestedAt,
|
|
877
|
+
permissions: permissionCapabilitiesFromScopes(newHints[roomId] ?? [])
|
|
878
|
+
});
|
|
874
879
|
}
|
|
875
880
|
});
|
|
876
881
|
}
|
|
@@ -1133,7 +1138,10 @@ var UmbrellaStore = class {
|
|
|
1133
1138
|
result.inboxNotifications,
|
|
1134
1139
|
result.subscriptions
|
|
1135
1140
|
);
|
|
1136
|
-
this.permissionHints.update(
|
|
1141
|
+
this.permissionHints.update(
|
|
1142
|
+
result.permissionHints,
|
|
1143
|
+
result.requestedAt
|
|
1144
|
+
);
|
|
1137
1145
|
if (this.#userThreadsLastRequestedAt === null) {
|
|
1138
1146
|
this.#userThreadsLastRequestedAt = result.requestedAt;
|
|
1139
1147
|
}
|
|
@@ -1179,7 +1187,11 @@ var UmbrellaStore = class {
|
|
|
1179
1187
|
result.inboxNotifications,
|
|
1180
1188
|
result.subscriptions
|
|
1181
1189
|
);
|
|
1182
|
-
this.permissionHints.update(
|
|
1190
|
+
this.permissionHints.update(
|
|
1191
|
+
result.permissionHints,
|
|
1192
|
+
result.requestedAt,
|
|
1193
|
+
[roomId]
|
|
1194
|
+
);
|
|
1183
1195
|
const lastRequestedAt = this.#roomThreadsLastRequestedAtByRoom.get(roomId);
|
|
1184
1196
|
if (lastRequestedAt === void 0 || lastRequestedAt > result.requestedAt) {
|
|
1185
1197
|
this.#roomThreadsLastRequestedAtByRoom.set(
|
|
@@ -1821,7 +1833,9 @@ var UmbrellaStore = class {
|
|
|
1821
1833
|
updates.inboxNotifications.deleted,
|
|
1822
1834
|
updates.subscriptions.deleted
|
|
1823
1835
|
);
|
|
1824
|
-
this.permissionHints.update(updates.permissionHints
|
|
1836
|
+
this.permissionHints.update(updates.permissionHints, updates.requestedAt, [
|
|
1837
|
+
roomId
|
|
1838
|
+
]);
|
|
1825
1839
|
if (lastRequestedAt < updates.requestedAt) {
|
|
1826
1840
|
this.#roomThreadsLastRequestedAtByRoom.set(roomId, updates.requestedAt);
|
|
1827
1841
|
}
|
|
@@ -1846,7 +1860,7 @@ var UmbrellaStore = class {
|
|
|
1846
1860
|
result.inboxNotifications.deleted,
|
|
1847
1861
|
result.subscriptions.deleted
|
|
1848
1862
|
);
|
|
1849
|
-
this.permissionHints.update(result.permissionHints);
|
|
1863
|
+
this.permissionHints.update(result.permissionHints, result.requestedAt);
|
|
1850
1864
|
}
|
|
1851
1865
|
async fetchRoomVersionsDeltaUpdate(roomId, signal) {
|
|
1852
1866
|
const lastRequestedAt = this.#roomVersionsLastRequestedAtByRoom.get(roomId);
|
|
@@ -3560,6 +3574,7 @@ import {
|
|
|
3560
3574
|
DefaultMap as DefaultMap3,
|
|
3561
3575
|
errorIf,
|
|
3562
3576
|
getSubscriptionKey as getSubscriptionKey3,
|
|
3577
|
+
hasPermissionCapabilityAccess,
|
|
3563
3578
|
HttpError as HttpError2,
|
|
3564
3579
|
kInternal as kInternal4,
|
|
3565
3580
|
makePoller as makePoller2,
|
|
@@ -5572,7 +5587,42 @@ function useAttachmentUrlSuspense(attachmentId) {
|
|
|
5572
5587
|
function useRoomPermissions(roomId) {
|
|
5573
5588
|
const client = useClient();
|
|
5574
5589
|
const store = getRoomExtrasForClient(client).store;
|
|
5575
|
-
return useSignal(store.permissionHints.getPermissionForRoom\u03A3(roomId));
|
|
5590
|
+
return useSignal(store.permissionHints.getPermissionForRoom\u03A3(roomId))?.permissions;
|
|
5591
|
+
}
|
|
5592
|
+
function useHasPermissionCapability(roomId, resource, requiredAccess) {
|
|
5593
|
+
const permissions = useRoomPermissions(roomId);
|
|
5594
|
+
const fallback = useSelfPermissionCapabilityFallback(
|
|
5595
|
+
roomId,
|
|
5596
|
+
resource,
|
|
5597
|
+
requiredAccess
|
|
5598
|
+
);
|
|
5599
|
+
return permissions !== void 0 ? hasPermissionCapabilityAccess(permissions, resource, requiredAccess) : fallback;
|
|
5600
|
+
}
|
|
5601
|
+
function useSelfPermissionCapabilityFallback(roomId, resource, requiredAccess) {
|
|
5602
|
+
const room = useRoom_withRoomContext(GlobalRoomContext, {
|
|
5603
|
+
allowOutsideRoom: true
|
|
5604
|
+
});
|
|
5605
|
+
const subscribe = useCallback3(
|
|
5606
|
+
(callback) => {
|
|
5607
|
+
if (room === null || room.id !== roomId) {
|
|
5608
|
+
return () => {
|
|
5609
|
+
};
|
|
5610
|
+
}
|
|
5611
|
+
return room.events.self.subscribe(callback);
|
|
5612
|
+
},
|
|
5613
|
+
[room, roomId]
|
|
5614
|
+
);
|
|
5615
|
+
const getSnapshot = useCallback3(() => {
|
|
5616
|
+
const self = room?.id === roomId ? room.getSelf() : null;
|
|
5617
|
+
if (resource === "comments" && requiredAccess === "write") {
|
|
5618
|
+
return self?.canComment ?? true;
|
|
5619
|
+
}
|
|
5620
|
+
if (resource === "storage" && requiredAccess === "write") {
|
|
5621
|
+
return self?.canWrite ?? true;
|
|
5622
|
+
}
|
|
5623
|
+
return false;
|
|
5624
|
+
}, [resource, requiredAccess, room, roomId]);
|
|
5625
|
+
return useSyncExternalStore3(subscribe, getSnapshot, getSnapshot);
|
|
5576
5626
|
}
|
|
5577
5627
|
function createRoomContext(client) {
|
|
5578
5628
|
const BoundRoomContext = createContext2(null);
|
|
@@ -6146,6 +6196,7 @@ export {
|
|
|
6146
6196
|
useRoomAttachmentUrl,
|
|
6147
6197
|
useAttachmentUrlSuspense,
|
|
6148
6198
|
useRoomPermissions,
|
|
6199
|
+
useHasPermissionCapability,
|
|
6149
6200
|
createRoomContext,
|
|
6150
6201
|
_RoomProvider,
|
|
6151
6202
|
_useBroadcastEvent,
|
|
@@ -6186,4 +6237,4 @@ export {
|
|
|
6186
6237
|
_useStorageRoot,
|
|
6187
6238
|
_useUpdateMyPresence
|
|
6188
6239
|
};
|
|
6189
|
-
//# sourceMappingURL=chunk-
|
|
6240
|
+
//# sourceMappingURL=chunk-RSAVNVBA.js.map
|