incomplete, not sure of priority of this
This commit is contained in:
@@ -264,6 +264,39 @@ export default function InitializeWs(io: any) {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// TODO: not complete
|
||||||
|
socket.on(ServerRequestChannels.GOING_INTO_FLOW_STATE, () => {
|
||||||
|
// change user object to persist this state
|
||||||
|
|
||||||
|
// get all of the connectedLine rooms of this person, and tell them that user is going into flow state
|
||||||
|
|
||||||
|
for (const roomName of socket.rooms) {
|
||||||
|
if (roomName !== socket.id) {
|
||||||
|
const lineId = roomName.split(":")[1];
|
||||||
|
if (roomName.includes("connectedLine")) {
|
||||||
|
// get fresh list of tuned in folks without me
|
||||||
|
const clientUserIdsInRoom = [
|
||||||
|
...(io.sockets.adapter.rooms.get(roomName) ?? []),
|
||||||
|
]
|
||||||
|
.filter((mappedSocketId) => mappedSocketId !== socket.id)
|
||||||
|
.map(
|
||||||
|
(otherUserSocketId: string) =>
|
||||||
|
socketIdsToUserIds[otherUserSocketId]
|
||||||
|
);
|
||||||
|
|
||||||
|
// io.in(roomName).emit(
|
||||||
|
// ServerResponseChannels.SOMEONE_GOING_INTO_FLOW_STATE,
|
||||||
|
// new SomeoneGoingIntoFlowState(
|
||||||
|
|
||||||
|
// userInfo.userId
|
||||||
|
|
||||||
|
// )
|
||||||
|
// );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// tell all connected people that I am disconnecting
|
// tell all connected people that I am disconnecting
|
||||||
// tell tuned in folks that I am leaving the room
|
// tell tuned in folks that I am leaving the room
|
||||||
// tell the tuned in folks the new list of
|
// tell the tuned in folks the new list of
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ export enum ServerRequestChannels {
|
|||||||
|
|
||||||
RTC_CALL_REQUEST = "RTC_CALL_PREFIX",
|
RTC_CALL_REQUEST = "RTC_CALL_PREFIX",
|
||||||
RTC_ANSWER_REQUEST = "RTC_ANSWER_REQUEST_PREFIX",
|
RTC_ANSWER_REQUEST = "RTC_ANSWER_REQUEST_PREFIX",
|
||||||
|
|
||||||
|
GOING_INTO_FLOW_STATE = "GOING_INTO_FLOW_STATE",
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum ServerResponseChannels {
|
export enum ServerResponseChannels {
|
||||||
@@ -59,6 +61,8 @@ export enum ServerResponseChannels {
|
|||||||
// sending to the correct room of tunedin folks AND also making sure it's the right event handler in the right handler for this component
|
// sending to the correct room of tunedin folks AND also making sure it's the right event handler in the right handler for this component
|
||||||
RTC_NEW_USER_JOINED_RESPONSE_PREFIX = "RTC_NEW_USER_JOINED_RESPONSE_PREFIX",
|
RTC_NEW_USER_JOINED_RESPONSE_PREFIX = "RTC_NEW_USER_JOINED_RESPONSE_PREFIX",
|
||||||
RTC_RECEIVING_ANSWER_RESPONSE_PREFIX = "RTC_RECEIVING_ANSWER_RESPONSE_PREFIX",
|
RTC_RECEIVING_ANSWER_RESPONSE_PREFIX = "RTC_RECEIVING_ANSWER_RESPONSE_PREFIX",
|
||||||
|
|
||||||
|
SOMEONE_GOING_INTO_FLOW_STATE = "SOMEONE_GOING_INTO_FLOW_STATE",
|
||||||
}
|
}
|
||||||
|
|
||||||
export default SocketChannels;
|
export default SocketChannels;
|
||||||
@@ -138,3 +142,7 @@ export class RtcAnswerRequest {
|
|||||||
export class RtcReceiveAnswerResponse {
|
export class RtcReceiveAnswerResponse {
|
||||||
constructor(public answererUserId: string, public simplePeerSignal: any) {}
|
constructor(public answererUserId: string, public simplePeerSignal: any) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class FlowStateRequest {
|
||||||
|
constructor() {}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { $jwtToken, $selectedLineId } from "./recoil";
|
import { $desktopMode, $jwtToken, $selectedLineId } from "./recoil";
|
||||||
import {
|
import {
|
||||||
ConnectToLineRequest,
|
ConnectToLineRequest,
|
||||||
ServerRequestChannels,
|
ServerRequestChannels,
|
||||||
@@ -388,12 +388,29 @@ export function LineDataProvider({ children }) {
|
|||||||
// persistent store of lines
|
// persistent store of lines
|
||||||
// ?just do simple synchronous axios/fetch in useEffect and manage isLoading ourselves?
|
// ?just do simple synchronous axios/fetch in useEffect and manage isLoading ourselves?
|
||||||
const { data: basicUserLinesData } = useUserLines();
|
const { data: basicUserLinesData } = useUserLines();
|
||||||
|
const desktopMode = useRecoilValue($desktopMode);
|
||||||
|
|
||||||
// ! passing in the same data of the query passes reference so changes that happen in socketHandler impact react query cache
|
// ! passing in the same data of the query passes reference so changes that happen in socketHandler impact react query cache
|
||||||
const { linesMap, ...handlers } = useSocketHandler(
|
const { linesMap, ...handlers } = useSocketHandler(
|
||||||
basicUserLinesData?.data?.masterLines
|
basicUserLinesData?.data?.masterLines
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// if we go into flow state
|
||||||
|
// emit flow state message to all of my rooms
|
||||||
|
// persist it in my user object
|
||||||
|
// and then disconnect
|
||||||
|
useEffect(() => {
|
||||||
|
return () => {
|
||||||
|
if (desktopMode === "flowState" && $ws) {
|
||||||
|
console.log(
|
||||||
|
"SOCKETS | telling all of my connected rooms that I am unplugging"
|
||||||
|
);
|
||||||
|
|
||||||
|
$ws.emit(ServerRequestChannels.GOING_INTO_FLOW_STATE);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}, [desktopMode, $ws]);
|
||||||
|
|
||||||
// avoid children rendering if they don't have the ws to make individual calls with
|
// avoid children rendering if they don't have the ws to make individual calls with
|
||||||
if (!$ws) {
|
if (!$ws) {
|
||||||
return <span>attempting to connect you for the here and now...</span>;
|
return <span>attempting to connect you for the here and now...</span>;
|
||||||
|
|||||||
Reference in New Issue
Block a user