mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-09-19 07:20:21 +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> {
|
async getCurrentRoom(): Promise<CollabRoom | null> {
|
||||||
const rooms = await this.loadRooms();
|
const rooms = await this.loadRooms();
|
||||||
if (rooms.length === 0) {
|
if (rooms.length === 0) {
|
||||||
|
@@ -75,23 +75,12 @@ const ActiveRoomDialog = ({
|
|||||||
const [isRoomOwner, setIsRoomOwner] = useState(false);
|
const [isRoomOwner, setIsRoomOwner] = useState(false);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
roomManager
|
roomManager
|
||||||
.getCurrentRoom()
|
.isRoomOwnedByUser(activeRoomLink)
|
||||||
.then((room) => {
|
.then((isOwned) => {
|
||||||
if (room) {
|
setIsRoomOwner(isOwned);
|
||||||
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);
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.error("Error getting current room:", error);
|
console.warn("Failed to check room ownership:", error);
|
||||||
setIsRoomOwner(false);
|
setIsRoomOwner(false);
|
||||||
});
|
});
|
||||||
}, [activeRoomLink]);
|
}, [activeRoomLink]);
|
||||||
|
Reference in New Issue
Block a user