Skip to content

Commit e746e9e

Browse files
committed
add websocket emitters for Context Manager
1 parent 126f805 commit e746e9e

File tree

5 files changed

+107
-10
lines changed

5 files changed

+107
-10
lines changed

app/src/components/ContextAPIManager/AssignTab/AssignContainer.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { addComponentToContext } from '../../../redux/reducers/slice/contextRedu
1111
import { useSelector, useDispatch } from 'react-redux';
1212
import { deleteElement } from '../../../redux/reducers/slice/appStateSlice';
1313
import { RootState } from '../../../redux/store';
14+
import { emitEvent } from '../../../../src/helperFunctions/socket';
1415

1516
const AssignContainer = () => {
1617
const dispatch = useDispatch();
@@ -23,6 +24,7 @@ const AssignContainer = () => {
2324
state: store.appState,
2425
contextParam: store.contextSlice
2526
}));
27+
const roomCode = useSelector((store: RootState) => store.roomSlice.roomCode);
2628

2729
//sets table data if it exists
2830
const renderTable = (targetContext) => {
@@ -52,6 +54,7 @@ const AssignContainer = () => {
5254
componentInput === null
5355
)
5456
return;
57+
5558
dispatch(
5659
addComponentToContext({
5760
context: contextInput,
@@ -60,6 +63,17 @@ const AssignContainer = () => {
6063
);
6164
//trigger generateCode(), update code preview tab
6265
dispatch(deleteElement({ id: 'FAKE_ID', contextParam: contextParam }));
66+
67+
if (roomCode) {
68+
emitEvent('assignContextActions', roomCode, [
69+
{
70+
context: contextInput,
71+
component: componentInput
72+
},
73+
{ id: 'FAKE_ID', contextParam: contextParam }
74+
]);
75+
}
76+
6377
renderComponentTable(componentInput);
6478
};
6579

app/src/components/ContextAPIManager/CreateTab/CreateContainer.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ import {
1212
} from '../../../redux/reducers/slice/contextReducer';
1313
import { useSelector, useDispatch } from 'react-redux';
1414
import { RootState } from '../../../redux/store';
15+
import { emitEvent } from '../../../../src/helperFunctions/socket';
1516

1617
const CreateContainer = () => {
1718
const state = useSelector((store: RootState) => store.contextSlice);
19+
const roomCode = useSelector((store: RootState) => store.roomSlice.roomCode);
20+
1821
const [contextInput, setContextInput] = React.useState('');
1922
const [currentContext, setCurrentContext] = React.useState('');
2023
const [errorMsg, setErrorMsg] = React.useState('');
@@ -49,6 +52,11 @@ const CreateContainer = () => {
4952
}
5053

5154
dispatch(addContext({ name: contextInput }));
55+
56+
if (roomCode) {
57+
emitEvent('addContextAction', roomCode, { name: contextInput });
58+
}
59+
5260
setContextInput('');
5361
};
5462

@@ -73,11 +81,24 @@ const CreateContainer = () => {
7381
//update data store when user add new key-value pair to context
7482
const handleClickInputData = (name, { inputKey, inputValue }) => {
7583
dispatch(addContextValues({ name, inputKey, inputValue }));
84+
85+
if (roomCode) {
86+
emitEvent('addContextValuesAction', roomCode, {
87+
name,
88+
inputKey,
89+
inputValue
90+
});
91+
}
7692
};
7793

7894
//update data store when user deletes context
7995
const handleDeleteContextClick = () => {
8096
dispatch(deleteContext({ name: currentContext }));
97+
98+
if (roomCode) {
99+
emitEvent('deleteContextAction', roomCode, { name: currentContext });
100+
}
101+
81102
setContextInput('');
82103
setCurrentContext('');
83104
};

app/src/components/left/RoomsContainer.tsx

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,14 @@ import {
2626
addState,
2727
deleteState,
2828
addPassedInProps,
29-
deletePassedInProps
29+
deletePassedInProps,
30+
deleteElement
3031
} from '../../redux/reducers/slice/appStateSlice';
32+
import {
33+
addContext,
34+
deleteContext,
35+
addContextValues
36+
} from '../../redux/reducers/slice/contextReducer';
3137
import {
3238
setRoomCode,
3339
setUserName,
@@ -44,6 +50,12 @@ import {
4450
getSocket,
4551
disconnectSocket
4652
} from '../../helperFunctions/socket';
53+
import {
54+
AddContextPayload,
55+
AddContextValuesPayload,
56+
DeleteContextPayload,
57+
addComponentToContext
58+
} from '../../../src/redux/reducers/slice/contextReducer';
4759

4860
// // for websockets
4961
// // Part - join room and room code functionality
@@ -203,13 +215,34 @@ const RoomsContainer = () => {
203215
);
204216

205217
socket.on(
206-
'new PassedInProps delete data from server',
218+
'PassedInProps delete data from server',
207219
(passedInProps: object) => {
208220
store.dispatch(deletePassedInProps(passedInProps));
209221
}
210222
);
211223

212-
//
224+
socket.on('new context from server', (context: AddContextPayload) => {
225+
store.dispatch(addContext(context));
226+
});
227+
228+
socket.on(
229+
'new context value from server',
230+
(contextVal: AddContextValuesPayload) => {
231+
store.dispatch(addContextValues(contextVal));
232+
}
233+
);
234+
235+
socket.on(
236+
'delete context data from server',
237+
(context: DeleteContextPayload) => {
238+
store.dispatch(deleteContext(context));
239+
}
240+
);
241+
242+
socket.on('assign context data from server', (data) => {
243+
store.dispatch(addComponentToContext(data[0]));
244+
store.dispatch(deleteElement(data[1]));
245+
});
213246
}
214247
}
215248

app/src/redux/reducers/slice/contextReducer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ interface Context {
99
components: string[];
1010
}
1111

12-
interface AddContextPayload {
12+
export interface AddContextPayload {
1313
name: string;
1414
}
1515

16-
interface AddContextValuesPayload {
16+
export interface AddContextValuesPayload {
1717
name: string;
1818
inputKey: string;
1919
inputValue: string;
2020
}
2121

22-
interface DeleteContextPayload {
22+
export interface DeleteContextPayload {
2323
name: string;
2424
}
2525

server/server.ts

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,14 +262,43 @@ io.on('connection', (client) => {
262262
if (roomCode) {
263263
client
264264
.to(roomCode)
265-
.emit(
266-
'new PassedInProps delete data from server',
267-
passedInPropsDelete
268-
);
265+
.emit('PassedInProps delete data from server', passedInPropsDelete);
266+
}
267+
}
268+
);
269+
270+
client.on('addContextAction', (roomCode: string, context: object) => {
271+
if (roomCode) {
272+
client.to(roomCode).emit('new context from server', context);
273+
}
274+
});
275+
276+
client.on(
277+
'addContextValuesAction',
278+
(roomCode: string, contextVal: object) => {
279+
if (roomCode) {
280+
client.to(roomCode).emit('new context value from server', contextVal);
269281
}
270282
}
271283
);
272284

285+
client.on(
286+
'deleteContextAction',
287+
(roomCode: string, contextDelete: object) => {
288+
if (roomCode) {
289+
client
290+
.to(roomCode)
291+
.emit('delete context data from server', contextDelete);
292+
}
293+
}
294+
);
295+
296+
client.on('assignContextActions', (roomCode: string, data: []) => {
297+
if (roomCode) {
298+
client.to(roomCode).emit('assign context data from server', data);
299+
}
300+
});
301+
273302
//remote cursor
274303
client.on('cursorData', (roomCode: string, remoteData: object) => {
275304
client.to(roomCode).emit('remote cursor data from server', remoteData);

0 commit comments

Comments
 (0)