43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
'use client'
|
|
|
|
import { useCallback, useEffect, useState } from 'react';
|
|
import { useLocalStorage } from '../../hooks/useLocalStorage';
|
|
import { AUTH_TOKEN_KEY } from '../../constants/common';
|
|
import { Room } from '../../types/rooms';
|
|
import { getRoomDetails } from '../rooms';
|
|
|
|
export const useRoomDetails = (locale: string, roomId: number) => {
|
|
const [jwt] = useLocalStorage(AUTH_TOKEN_KEY, '');
|
|
const [room, setRoom] = useState<Room>();
|
|
const [errorData, setErrorData] = useState<any>();
|
|
const [loading, setLoading] = useState<boolean>(false);
|
|
|
|
const fetchData = useCallback(() => {
|
|
setLoading(true);
|
|
setErrorData(undefined);
|
|
setRoom(undefined);
|
|
|
|
getRoomDetails(locale, jwt, roomId)
|
|
.then((room) => {
|
|
setRoom(room);
|
|
})
|
|
.catch((err) => {
|
|
setErrorData(err);
|
|
})
|
|
.finally(() => {
|
|
setLoading(false);
|
|
})
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
fetchData();
|
|
}, []);
|
|
|
|
return {
|
|
fetchData,
|
|
loading,
|
|
room,
|
|
errorData
|
|
};
|
|
};
|