jitsi-roomsv2/frontend/src/hooks/useRoomName.ts

54 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-04-10 23:28:28 +02:00
import { atom, useAtom } from 'jotai'
import { useCallback, useState } from 'react'
2023-01-07 19:06:04 +01:00
2023-04-08 15:58:11 +02:00
const roomNameAtom = atom(getRoomNameFromUrl())
2023-01-07 19:06:04 +01:00
function useRoomName() {
2023-04-08 15:58:11 +02:00
const [roomName, setRoomName] = useAtom(roomNameAtom)
2023-01-07 19:06:04 +01:00
const updateRoomName = useCallback(
(newName: string) => {
2023-04-10 23:28:28 +02:00
setRoomName(newName)
console.log('[Rooms] update room name', newName)
2023-01-07 19:06:04 +01:00
},
[setRoomName]
2023-04-10 23:28:28 +02:00
)
2023-01-07 19:06:04 +01:00
2023-04-07 16:21:15 +02:00
const updateAndSubmitRoomName = useCallback(
(newName: string) => {
2023-04-10 23:28:28 +02:00
setRoomName(newName)
setRoomNameInUrl(newName)
setRoomNameInTitle(newName)
console.log('[Rooms] update and submit room name', newName)
2023-04-07 16:21:15 +02:00
},
[setRoomName]
)
2023-02-07 20:31:07 +01:00
const submitRoomName = useCallback(() => {
2023-04-10 23:28:28 +02:00
setRoomNameInUrl(roomName)
setRoomNameInTitle(roomName)
}, [roomName])
2023-01-07 19:06:04 +01:00
2023-04-10 23:28:28 +02:00
return { roomName, updateRoomName, updateAndSubmitRoomName, submitRoomName }
2023-01-07 19:06:04 +01:00
}
function getRoomNameFromUrl(): string {
2023-04-10 23:28:28 +02:00
const pathName = location.pathname
const roomName = pathName.substring(pathName.lastIndexOf('/'), pathName.length).replace('/', '')
console.log('[Rooms] Got roomName from url', roomName)
setRoomNameInTitle(roomName)
return roomName
2023-01-07 19:06:04 +01:00
}
function setRoomNameInUrl(roomName: string) {
2023-04-10 23:28:28 +02:00
history.pushState(history.state, '_', roomName)
2023-01-07 19:06:04 +01:00
}
function setRoomNameInTitle(roomName: string) {
2023-01-10 19:09:24 +01:00
if (!!roomName) {
2023-04-10 23:28:28 +02:00
document.title = roomName
2023-01-10 19:09:24 +01:00
}
2023-01-07 19:06:04 +01:00
}
2023-04-10 23:28:28 +02:00
export { useRoomName }