Skip to content

Commit 20ec777

Browse files
authored
Merge pull request #24 from oslabs-beta/rose
Add socket emitters
2 parents 96df861 + 0a5b757 commit 20ec777

File tree

16 files changed

+362
-66
lines changed

16 files changed

+362
-66
lines changed

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

Lines changed: 13 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,16 @@ 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+
context: contextInput,
70+
component: componentInput,
71+
id: 'FAKE_ID',
72+
contextParam: contextParam
73+
});
74+
}
75+
6376
renderComponentTable(componentInput);
6477
};
6578

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/StateManagement/CreateTab/components/StatePropsPanel.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@ import TableStateProps from './TableStateProps';
1616
import TableParentProps from './TableParentProps';
1717
import TablePassedInProps from './TablePassedInProps';
1818
import { RootState } from '../../../../redux/store';
19+
import { emitEvent } from '../../../../helperFunctions/socket';
1920

2021
const StatePropsPanel = ({ isThemeLight, data }): JSX.Element => {
2122
const state = useSelector((store: RootState) => store.appState);
2223
const contextParam = useSelector((store: RootState) => store.contextSlice);
24+
const roomCode = useSelector((store: RootState) => store.roomSlice.roomCode);
2325

2426
const dispatch = useDispatch();
2527
const classes = useStyles();
@@ -159,6 +161,15 @@ const StatePropsPanel = ({ isThemeLight, data }): JSX.Element => {
159161
contextParam: contextParam
160162
})
161163
);
164+
165+
if (roomCode) {
166+
emitEvent('addStateAction', roomCode, {
167+
newState: newState,
168+
setNewState: setNewState,
169+
contextParam: contextParam
170+
});
171+
}
172+
162173
setRows1([...rows1, newState]);
163174
setErrorStatus(false);
164175
clearForm();

app/src/components/StateManagement/CreateTab/components/TableParentProps.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ import makeStyles from '@mui/styles/makeStyles';
66
import AddIcon from '@mui/icons-material/Add';
77
import { addPassedInProps } from '../../../../redux/reducers/slice/appStateSlice';
88
import { RootState } from '../../../../redux/store';
9+
import { emitEvent } from '../../../../helperFunctions/socket';
910

1011
const TableParentProps = (props) => {
1112
const state = useSelector((store: RootState) => store.appState);
1213
const contextParam = useSelector((store: RootState) => store.contextSlice);
14+
const roomCode = useSelector((store: RootState) => store.roomSlice.roomCode);
1315

1416
const dispatch = useDispatch();
1517
const classes = useStyles();
@@ -76,6 +78,15 @@ const TableParentProps = (props) => {
7678
contextParam: contextParam
7779
})
7880
);
81+
82+
if (roomCode) {
83+
emitEvent('addPassedInPropsAction', roomCode, {
84+
passedInProps: parentComponentProps,
85+
rowId: rowId,
86+
parentComponent: parentComponent,
87+
contextParam: contextParam
88+
});
89+
}
7990
};
8091

8192
useEffect(() => {

app/src/components/StateManagement/CreateTab/components/TablePassedInProps.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ import { useDispatch, useSelector } from 'react-redux';
77
import { deletePassedInProps } from '../../../../redux/reducers/slice/appStateSlice';
88
import { RootState } from '../../../../redux/store';
99
import { ColumnTab } from '../../../../interfaces/Interfaces';
10+
import { emitEvent } from '../../../../helperFunctions/socket';
1011

1112
const TablePassedInProps = (props) => {
1213
const state = useSelector((store: RootState) => store.appState);
1314
const contextParam = useSelector((store: RootState) => store.contextSlice);
15+
const roomCode = useSelector((store: RootState) => store.roomSlice.roomCode);
1416

1517
const dispatch = useDispatch();
1618
const classes = useStyles();
@@ -75,6 +77,13 @@ const TablePassedInProps = (props) => {
7577
// remove the state that the button is clicked
7678
// send a dispatch to rerender the table
7779
dispatch(deletePassedInProps({ rowId: rowId, contextParam: contextParam }));
80+
81+
if (roomCode) {
82+
emitEvent('deletePassedInPropsAction', roomCode, {
83+
rowId: rowId,
84+
contextParam: contextParam
85+
});
86+
}
7887
};
7988

8089
useEffect(() => {

app/src/components/StateManagement/CreateTab/components/TableStateProps.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@ import { useDispatch, useSelector } from 'react-redux';
88
import { deleteState } from '../../../../redux/reducers/slice/appStateSlice';
99
import { RootState } from '../../../../redux/store';
1010
import { ColumnTab } from '../../../../interfaces/Interfaces';
11+
import { emitEvent } from '../../../../helperFunctions/socket';
12+
1113
// updates state mgmt boxes and data grid
1214
const TableStateProps = (props) => {
1315
const state = useSelector((store: RootState) => store.appState);
1416
const contextParam = useSelector((store: RootState) => store.contextSlice);
17+
const roomCode = useSelector((store: RootState) => store.roomSlice.roomCode);
1518

1619
const dispatch = useDispatch();
1720
const classes = useStyles();
@@ -84,6 +87,14 @@ const TableStateProps = (props) => {
8487
contextParam: contextParam
8588
})
8689
);
90+
91+
if (roomCode) {
92+
emitEvent('deleteStateAction', roomCode, {
93+
stateProps: filtered,
94+
rowId: selectedId,
95+
contextParam: contextParam
96+
});
97+
}
8798
};
8899

89100
useEffect(() => {

app/src/components/left/HTMLPanel.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { addElement } from '../../redux/reducers/slice/appStateSlice';
88
import makeStyles from '@mui/styles/makeStyles';
99
import MuiAlert, { AlertProps } from '@mui/material/Alert';
1010
import Snackbar from '@mui/material/Snackbar';
11+
import { emitEvent } from '../../helperFunctions/socket';
1112

1213
/*
1314
DESCRIPTION: This is the bottom half of the left panel, starting from the 'HTML
@@ -32,6 +33,8 @@ const HTMLPanel = (props): JSX.Element => {
3233
const [errorStatus, setErrorStatus] = useState(false);
3334
const [alertOpen, setAlertOpen] = React.useState<boolean>(false);
3435
const state = useSelector((store: RootState) => store.appState);
36+
const roomCode = useSelector((store: RootState) => store.roomSlice.roomCode);
37+
3538
const dispatch = useDispatch();
3639
let startingID = 0;
3740
state.HTMLTypes.forEach((element) => {
@@ -106,6 +109,11 @@ const HTMLPanel = (props): JSX.Element => {
106109
};
107110

108111
dispatch(addElement(newElement));
112+
113+
if (roomCode) {
114+
emitEvent('addElementAction', roomCode, newElement);
115+
}
116+
109117
setCurrentID(currentID + 1);
110118
setTag('');
111119
setName('');

app/src/components/left/RoomsContainer.tsx

Lines changed: 116 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,20 @@ import {
2020
updateUseContext,
2121
updateCss,
2222
updateAttributes,
23-
updateEvents
23+
updateEvents,
24+
addComponent,
25+
addElement,
26+
addState,
27+
deleteState,
28+
addPassedInProps,
29+
deletePassedInProps,
30+
deleteElement
2431
} from '../../redux/reducers/slice/appStateSlice';
32+
import {
33+
addContext,
34+
deleteContext,
35+
addContextValues
36+
} from '../../redux/reducers/slice/contextReducer';
2537
import {
2638
setRoomCode,
2739
setUserName,
@@ -38,6 +50,12 @@ import {
3850
getSocket,
3951
disconnectSocket
4052
} from '../../helperFunctions/socket';
53+
import {
54+
AddContextPayload,
55+
AddContextValuesPayload,
56+
DeleteContextPayload,
57+
addComponentToContext
58+
} from '../../../src/redux/reducers/slice/contextReducer';
4159
import Canvas from '../components/main/Canvas';
4260

4361
// // for websockets
@@ -125,12 +143,37 @@ const RoomsContainer = () => {
125143
//write out emitters for reach function inside of CusomizationPanel HandleSave//no need to pull the function into RoomsContainer
126144
socket.on('update data from server', (updateData: BottomPanelObj) => {
127145
console.log('update data received from server', updateData);
128-
store.dispatch(updateStateUsed({stateUsedObj: updateData.stateUsedObj, contextParam: updateData.contextParam}));
129-
store.dispatch(updateUseContext({useContextObj: updateData.useContextObj, contextParam: updateData.contextParam}));
130-
store.dispatch(updateCss({style: updateData.style, contextParam: updateData.contextParam}));
131-
store.dispatch(updateAttributes({attributes: updateData.attributes, contextParam: updateData.contextParam}));
132-
store.dispatch(updateEvents({events: updateData.events, contextParam: updateData.contextParam}));
133-
});
146+
store.dispatch(
147+
updateStateUsed({
148+
stateUsedObj: updateData.stateUsedObj,
149+
contextParam: updateData.contextParam
150+
})
151+
);
152+
store.dispatch(
153+
updateUseContext({
154+
useContextObj: updateData.useContextObj,
155+
contextParam: updateData.contextParam
156+
})
157+
);
158+
store.dispatch(
159+
updateCss({
160+
style: updateData.style,
161+
contextParam: updateData.contextParam
162+
})
163+
);
164+
store.dispatch(
165+
updateAttributes({
166+
attributes: updateData.attributes,
167+
contextParam: updateData.contextParam
168+
})
169+
);
170+
store.dispatch(
171+
updateEvents({
172+
events: updateData.events,
173+
contextParam: updateData.contextParam
174+
})
175+
);
176+
});
134177

135178
socket.on(
136179
'item position data from server',
@@ -142,6 +185,72 @@ const RoomsContainer = () => {
142185
store.dispatch(changePosition(itemPositionData));
143186
}
144187
);
188+
189+
socket.on('new component data from server', (newComponent: object) => {
190+
store.dispatch(addComponent(newComponent));
191+
});
192+
193+
socket.on('new element data from server', (newElement: object) => {
194+
store.dispatch(addElement(newElement));
195+
});
196+
197+
socket.on(
198+
'new component state data from server',
199+
(componentState: object) => {
200+
store.dispatch(addState(componentState));
201+
}
202+
);
203+
204+
socket.on(
205+
'delete component state data from server',
206+
(componentStateDelete: object) => {
207+
store.dispatch(deleteState(componentStateDelete));
208+
}
209+
);
210+
211+
socket.on(
212+
'new PassedInProps data from server',
213+
(passedInProps: object) => {
214+
store.dispatch(addPassedInProps(passedInProps));
215+
}
216+
);
217+
218+
socket.on(
219+
'PassedInProps delete data from server',
220+
(passedInProps: object) => {
221+
store.dispatch(deletePassedInProps(passedInProps));
222+
}
223+
);
224+
225+
socket.on('new context from server', (context: AddContextPayload) => {
226+
store.dispatch(addContext(context));
227+
});
228+
229+
socket.on(
230+
'new context value from server',
231+
(contextVal: AddContextValuesPayload) => {
232+
store.dispatch(addContextValues(contextVal));
233+
}
234+
);
235+
236+
socket.on(
237+
'delete context data from server',
238+
(context: DeleteContextPayload) => {
239+
store.dispatch(deleteContext(context));
240+
}
241+
);
242+
243+
socket.on('assign context data from server', (data) => {
244+
store.dispatch(
245+
addComponentToContext({
246+
context: data.context,
247+
component: data.component
248+
})
249+
);
250+
store.dispatch(
251+
deleteElement({ id: 'FAKE_ID', contextParam: data.contextParam })
252+
);
253+
});
145254
}
146255
}
147256

0 commit comments

Comments
 (0)