mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-09-18 23:10:16 +02:00
add room owner check to room manager
This commit is contained in:
@@ -176,6 +176,24 @@ class RoomManager {
|
||||
}
|
||||
}
|
||||
|
||||
async isRoomOwnedByUser(url: string): Promise<boolean> {
|
||||
try {
|
||||
const rooms = await this.loadRooms();
|
||||
const _url = new URL(url);
|
||||
const match = _url.hash.match(/room=([^,]+),([^&]+)/);
|
||||
|
||||
if (!match) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const [, roomId] = match;
|
||||
return rooms.some((room) => room.roomId === roomId);
|
||||
} catch (error) {
|
||||
console.warn("Failed to check room ownership:", error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
async getCurrentRoom(): Promise<CollabRoom | null> {
|
||||
const rooms = await this.loadRooms();
|
||||
if (rooms.length === 0) {
|
||||
|
@@ -75,23 +75,12 @@ const ActiveRoomDialog = ({
|
||||
const [isRoomOwner, setIsRoomOwner] = useState(false);
|
||||
useEffect(() => {
|
||||
roomManager
|
||||
.getCurrentRoom()
|
||||
.then((room) => {
|
||||
if (room) {
|
||||
const _room = new URL(activeRoomLink);
|
||||
const match = _room.hash.match(/room=([^,]+),([^&]+)/);
|
||||
if (match) {
|
||||
const [, roomId] = match;
|
||||
setIsRoomOwner(roomId === room.roomId);
|
||||
} else {
|
||||
setIsRoomOwner(false);
|
||||
}
|
||||
} else {
|
||||
setIsRoomOwner(false);
|
||||
}
|
||||
.isRoomOwnedByUser(activeRoomLink)
|
||||
.then((isOwned) => {
|
||||
setIsRoomOwner(isOwned);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error("Error getting current room:", error);
|
||||
console.warn("Failed to check room ownership:", error);
|
||||
setIsRoomOwner(false);
|
||||
});
|
||||
}, [activeRoomLink]);
|
||||
|
Reference in New Issue
Block a user