Skip to content

Commit 478e9fc

Browse files
authored
Merge pull request #20 from oslabs-beta/ts-conversion
ts conversion completed and optimization up to 70% of front end components
2 parents 1dca542 + 86ecefc commit 478e9fc

File tree

5 files changed

+42
-13
lines changed

5 files changed

+42
-13
lines changed

app/src/components/StateManagement/DisplayTab/Tree.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import cloneDeep from 'lodash/cloneDeep';
66
import useResizeObserver from './useResizeObserver';
77
import { useSelector } from 'react-redux';
88
import { ChildElement } from '../../../interfaces/Interfaces';
9-
import { RootState } from '../../../redux/store'
9+
import { RootState } from '../../../redux/store';
1010

1111
function usePrevious(value) {
1212
const ref = useRef();
@@ -18,8 +18,11 @@ function Tree({
1818
data, setCurrComponentState, setParentProps, setClickedComp,
1919
}) {
2020
const state = useSelector((store:RootState) => store.appState)
21-
const svgRef = useRef();
22-
const wrapperRef = useRef();
21+
// Provide types for the refs.
22+
// In this case HTMLDivElement for the wrapperRef and SVGSVGElement for the svgRef.
23+
// create mutable ref objects with initial values of null
24+
const svgRef = useRef<SVGSVGElement>(null);
25+
const wrapperRef = useRef<HTMLDivElement>(null);
2326
const xPosition = 50;
2427
const textAndBorderColor = '#bdbdbd';
2528
const dimensions = useResizeObserver(wrapperRef);
@@ -70,10 +73,8 @@ function Tree({
7073
// but use getBoundingClientRect on initial render
7174
// (dimensions are null for the first render)
7275

73-
// if (wrapperRef.current) {
7476
const { width, height } = dimensions || wrapperRef.current.getBoundingClientRect();
7577
// transform hierarchical data
76-
// }
7778

7879
let root;
7980
let rootName;

app/src/components/StateManagement/StateManagement.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import TabPanel from '@mui/lab/TabPanel';
88
import { useSelector } from 'react-redux';
99
import CreateContainer from './CreateTab/CreateContainer';
1010
import DisplayContainer from './DisplayTab/DisplayContainer';
11+
import { RootState } from '../../redux/store';
1112

1213
const useStyles = makeStyles({
1314
contextContainer: {
@@ -20,8 +21,8 @@ const useStyles = makeStyles({
2021

2122
const StateManager = (props): JSX.Element => {
2223

23-
const state = useSelector(store => store.appState)
24-
const isDarkMode = useSelector(state => state.darkMode.isDarkMode);
24+
const state = useSelector((store:RootState) => store.appState)
25+
const isDarkMode = useSelector((state:RootState) => state.darkMode.isDarkMode);
2526

2627
const { components } = state;
2728
const classes = useStyles();

app/src/components/top/NavBar.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
import React from 'react';
22
import Avatar from '@mui/material/Avatar';
3+
//commenting out the line below breaks the app
34
import logo from '../../public/icons/win/logo.png';
45
import NavbarDropDown from './NavBarButtons';
5-
import { useSelector } from 'react-redux'
6+
import { useSelector } from 'react-redux';
7+
import { RootState } from '../../redux/store';
8+
69

710
const NavBar = (props) => {
811

912
// for dropdown navbar
1013
const [dropMenu, setDropMenu] = React.useState(false);
11-
const isDarkMode = useSelector(state=>state.darkMode.isDarkMode)
14+
const isDarkMode = useSelector((state:RootState)=>state.darkMode.isDarkMode)
1215

1316
return (
1417
<nav className="main-navbar" style={isDarkMode ? {backgroundColor: '#013365'} : {backgroundColor: 'white'}}>

app/src/components/top/NavBarButtons.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { codePreviewCooperative } from '../../redux/reducers/slice/codePreviewSl
2929
import { cooperativeStyle } from '../../redux/reducers/slice/styleSlice';
3030
import config from '../../../../config';
3131
const { API_BASE_URL } = config;
32+
import { RootState } from '../../redux/store';
3233

3334
let socket;
3435

@@ -58,7 +59,7 @@ function initSocketConnection(roomCode) {
5859
// receiving the message from the back end
5960
socket.on('receive message', (event) => {
6061
// console.log('message from server: ', event);
61-
let currentStore = JSON.stringify(store.getState());
62+
let currentStore: any = JSON.stringify(store.getState());
6263
if (currentStore !== event) {
6364
currentStore = JSON.parse(currentStore);
6465
event = JSON.parse(event);
@@ -153,6 +154,7 @@ const StyledMenu = withStyles({
153154
vertical: 'top',
154155
horizontal: 'center'
155156
}}
157+
open={true}
156158
{...props}
157159
/>
158160
));
@@ -176,7 +178,7 @@ function navbarDropDown(props) {
176178
const [confirmRoom, setConfirmRoom] = React.useState('');
177179
const classes = useStyles();
178180

179-
const { isDarkMode, state, joinedRoom } = useSelector((store) => ({
181+
const { isDarkMode, state, joinedRoom } = useSelector((store: RootState) => ({
180182
isDarkMode: store.darkMode.isDarkMode,
181183
state: store.appState,
182184
joinedRoom: store.roomCodeSlice.roomCode
@@ -340,7 +342,7 @@ function navbarDropDown(props) {
340342
></input>
341343
<button onClick={() => joinRoom()}>Join Room</button>
342344
<p>In Room: {joinedRoom}</p>
343-
<LoginButton style={{ marginLeft: '10%' }} />
345+
<LoginButton/>
344346
<StyledMenu // Dropdown menu connected to Manage Project Button
345347
id="customized-menu"
346348
anchorEl={anchorEl}

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

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,32 @@
1-
import { createSlice } from '@reduxjs/toolkit';
1+
import { createSlice , PayloadAction } from '@reduxjs/toolkit';
2+
3+
// interface InititalState {
4+
// code: string;
5+
// input: string
6+
// }
27

38
const initialState = {
49
code: ``,
510
input: ``
611
};
712

13+
// interface Action {
14+
// payload: any,
15+
// type: string
16+
// }
17+
18+
// interface Reducers {
19+
// codePreviewSave: (state:InititalState, action:Action) => void;
20+
// codePreviewInput: (state:InititalState , action:Action) => void;
21+
// codePreviewCooperative: (state:InititalState , action:Action) => ObjectConstructor;
22+
// }
23+
24+
// interface CodePreviewSlice {
25+
// name: string;
26+
// initialState: InititalState;
27+
// reducers: Reducers;
28+
// }
29+
830
const codePreviewSlice = createSlice({
931
name: 'codePreview',
1032
initialState,

0 commit comments

Comments
 (0)