add room owner check to room manager

This commit is contained in:
Ryan Di
2025-06-02 13:38:39 +10:00
parent ed63af1ad8
commit f71c200106
2 changed files with 22 additions and 15 deletions

View File

@@ -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) {

View File

@@ -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]);