Browse Source

Fix TypeScript errors.

main
Titouan Rigoudy 4 years ago
parent
commit
36ab4e19f7
6 changed files with 30 additions and 40 deletions
  1. +12
    -6
      src/components/SearchableList.tsx
  2. +1
    -1
      src/modules/room/RoomDetails.tsx
  3. +0
    -23
      src/modules/room/RoomUserList.js
  4. +12
    -5
      src/modules/room/message.ts
  5. +1
    -1
      src/modules/room/slice.ts
  6. +4
    -4
      src/modules/user/slice.ts

+ 12
- 6
src/components/SearchableList.tsx View File

@ -1,4 +1,10 @@
import { Component, FC, ReactEventHandler, useState } from "react";
import {
ChangeEvent,
FC,
ReactElement,
ReactEventHandler,
useState,
} from "react";
interface ItemProps<Item> { interface ItemProps<Item> {
name: string; name: string;
@ -8,19 +14,19 @@ interface ItemProps<Item> {
interface ListProps<Item> { interface ListProps<Item> {
title: string; title: string;
onRefresh: ReactEventHandler; onRefresh: ReactEventHandler;
component: Component<ItemProps<Item>>;
component: FC<ItemProps<Item>>;
map: { [key: string]: Item }; map: { [key: string]: Item };
} }
const SearchableList: FC<ListProps<Item>> = ({
function SearchableList<Item>({
title, title,
onRefresh, onRefresh,
component, component,
map, map,
}) => {
}: ListProps<Item>): ReactElement {
const [filter, setFilter] = useState<string>(""); const [filter, setFilter] = useState<string>("");
const onChange: ReactEventHandler = (event) => {
const onChange = (event: ChangeEvent<HTMLInputElement>) => {
setFilter(event.target.value); setFilter(event.target.value);
}; };
@ -56,6 +62,6 @@ const SearchableList: FC<ListProps<Item>> = ({
<ul className="flex-1 flex flex-col min-h-0 overflow-auto">{children}</ul> <ul className="flex-1 flex flex-col min-h-0 overflow-auto">{children}</ul>
</div> </div>
); );
};
}
export default SearchableList; export default SearchableList;

+ 1
- 1
src/modules/room/RoomDetails.tsx View File

@ -1,6 +1,6 @@
import { FC } from "react"; import { FC } from "react";
import { RoomState, RoomMembership } from "modules/room/slice";
import { RoomState } from "modules/room/slice";
const Members: FC<Props> = ({ room }) => { const Members: FC<Props> = ({ room }) => {
const children = []; const children = [];


+ 0
- 23
src/modules/room/RoomUserList.js View File

@ -1,23 +0,0 @@
import { FC } from "react";
interface Props {
users: string[];
}
const RoomUserList: FC<Props> = ({ users }) => {
// Append all users
const children = [];
let i = 0;
for (const user of users) {
children.push(
<li key={i} className="room-user">
{user}
</li>
);
i++;
}
return <ul id="room-user-list">{children}</ul>;
};
export default RoomUserList;

+ 12
- 5
src/modules/room/message.ts View File

@ -1,6 +1,7 @@
import { AppDispatch } from "app/store"; import { AppDispatch } from "app/store";
import { import {
RoomMembership, RoomMembership,
RoomMessage,
RoomMessagePayload, RoomMessagePayload,
RoomState, RoomState,
roomGetAll, roomGetAll,
@ -10,7 +11,11 @@ import {
roomSetAll, roomSetAll,
roomSetState, roomSetState,
} from "modules/room/slice"; } from "modules/room/slice";
import { SocketMessage, SocketMessageMiddleware } from "modules/socket/message";
import {
SocketMessage,
SocketMessageMiddleware,
SocketMessageSender,
} from "modules/socket/message";
function convertMembership(membership: string): RoomMembership { function convertMembership(membership: string): RoomMembership {
switch (membership) { switch (membership) {
@ -22,6 +27,8 @@ function convertMembership(membership: string): RoomMembership {
return RoomMembership.Joined; return RoomMembership.Joined;
case "Leaving": case "Leaving":
return RoomMembership.Leaving; return RoomMembership.Leaving;
default:
throw new TypeError(`invalid membership string: ${membership}`);
} }
} }
@ -51,7 +58,7 @@ function convertRoomListEntry(name: string, room: any): RoomState {
}; };
} }
function handleRoomListResponse(dispatch: AppDispatch, response): void {
function handleRoomListResponse(dispatch: AppDispatch, response: any): void {
const { rooms } = response; const { rooms } = response;
if (rooms === undefined) { if (rooms === undefined) {
console.log("RoomListResponse has wrong shape:", response); console.log("RoomListResponse has wrong shape:", response);
@ -66,7 +73,7 @@ function handleRoomListResponse(dispatch: AppDispatch, response): void {
dispatch(roomSetAll(payload)); dispatch(roomSetAll(payload));
} }
function handleRoomMessageResponse(dispatch: AppDispatch, response): void {
function handleRoomMessageResponse(dispatch: AppDispatch, response: any): void {
dispatch( dispatch(
roomReceiveMessage({ roomReceiveMessage({
roomName: response.room_name, roomName: response.room_name,
@ -76,12 +83,12 @@ function handleRoomMessageResponse(dispatch: AppDispatch, response): void {
); );
} }
function handleRoomJoinResponse(dispatch: AppDispatch, response): void {
function handleRoomJoinResponse(dispatch: AppDispatch, response: any): void {
const room = convertRoomListEntry(response.room_name, response.room); const room = convertRoomListEntry(response.room_name, response.room);
dispatch(roomSetState(room)); dispatch(roomSetState(room));
} }
function handleRoomLeaveResponse(dispatch: AppDispatch, response): void {
function handleRoomLeaveResponse(dispatch: AppDispatch, response: any): void {
dispatch(roomSetMembership([response.room_name, RoomMembership.Left])); dispatch(roomSetMembership([response.room_name, RoomMembership.Left]));
} }


+ 1
- 1
src/modules/room/slice.ts View File

@ -97,7 +97,7 @@ export const roomSlice = createSlice({
room.messages.push({ userName, message }); room.messages.push({ userName, message });
}, },
roomSetAll: (state: RoomSliceState, action: PayloadAction<Room[]>) => {
roomSetAll: (state: RoomSliceState, action: PayloadAction<RoomState[]>) => {
state.rooms = {}; state.rooms = {};
for (const room of action.payload) { for (const room of action.payload) {
state.rooms[room.name] = room; state.rooms[room.name] = room;


+ 4
- 4
src/modules/user/slice.ts View File

@ -23,7 +23,7 @@ export interface UserMap {
[name: string]: UserState; [name: string]: UserState;
} }
export interface RoomSliceState {
export interface UserSliceState {
users: UserMap; users: UserMap;
} }
@ -39,17 +39,17 @@ const initialState: UserSliceState = {
numFiles: 3, numFiles: 3,
numFolders: 4, numFolders: 4,
numFreeSlots: 5, numFreeSlots: 5,
country: 6,
country: "US",
}, },
bob: { bob: {
name: "bob",
name: "karandeep",
status: UserStatus.Offline, status: UserStatus.Offline,
averageSpeed: 1, averageSpeed: 1,
numDownloads: 2, numDownloads: 2,
numFiles: 3, numFiles: 3,
numFolders: 4, numFolders: 4,
numFreeSlots: 5, numFreeSlots: 5,
country: 6,
country: "IN",
}, },
}, },
}; };


Loading…
Cancel
Save