jotai & allchat
This commit is contained in:
parent
cf1c7625be
commit
5fbba6cb98
16 changed files with 172 additions and 37 deletions
27
frontend/src/hooks/useAllChat.tsx
Normal file
27
frontend/src/hooks/useAllChat.tsx
Normal file
|
@ -0,0 +1,27 @@
|
|||
import { atom, useAtom } from "jotai";
|
||||
import { atomWithReducer, useReducerAtom } from 'jotai/utils'
|
||||
import { User } from "../background/types/roomData";
|
||||
|
||||
interface ChatMessage {
|
||||
content: string
|
||||
sender: User
|
||||
|
||||
}
|
||||
|
||||
export const allChatMessagesAtom = atomWithReducer([], (list: ChatMessage[], item: ChatMessage) => list.concat(item))
|
||||
|
||||
|
||||
const useAllChat = () => {
|
||||
const [chatMessages, addChatMessage] = useAtom(allChatMessagesAtom)
|
||||
|
||||
|
||||
return { chatMesages: chatMessages, addChatMessage }
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
export default useAllChat
|
||||
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
import { useEffect } from "react";
|
||||
import { UserInfo } from "../components/jitsi/types";
|
||||
import useAllChat from "./useAllChat";
|
||||
import useRoomData from "./useRoomData";
|
||||
import useWebSocketConnection from "./useWebSocketConnection";
|
||||
|
||||
|
@ -10,12 +11,15 @@ function useBackendData(userInfo: UserInfo) {
|
|||
|
||||
const { roomData, setRoomData } = useRoomData();
|
||||
|
||||
const { chatMesages, addChatMessage } = useAllChat()
|
||||
|
||||
useEffect(() => {
|
||||
onMessage((messageString) => {
|
||||
console.log("[Rooms] message from ws", messageString);
|
||||
const messageObject = JSON.parse(messageString);
|
||||
|
||||
!!messageObject.roomsData && setRoomData(messageObject);
|
||||
!!messageObject.content && addChatMessage(messageObject);
|
||||
return disconnect;
|
||||
});
|
||||
}, [onMessage, setRoomData, disconnect]);
|
||||
|
|
7
frontend/src/hooks/useMeetingStarted.ts
Normal file
7
frontend/src/hooks/useMeetingStarted.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
import { atom, useAtom } from "jotai";
|
||||
|
||||
const meetingStarted = atom(false)
|
||||
|
||||
const useMeetingStarted = () => useAtom(meetingStarted);
|
||||
|
||||
export default useMeetingStarted
|
|
@ -1,7 +1,10 @@
|
|||
import { atom, useAtom } from "jotai";
|
||||
import { useCallback, useState } from "react";
|
||||
|
||||
const roomNameAtom = atom(getRoomNameFromUrl())
|
||||
|
||||
function useRoomName() {
|
||||
const [roomName, setRoomName] = useState(() => getRoomNameFromUrl());
|
||||
const [roomName, setRoomName] = useAtom(roomNameAtom)
|
||||
|
||||
const updateRoomName = useCallback(
|
||||
(newName: string) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue