refactor: add typescript support to project

This commit is contained in:
HD
2022-06-21 15:08:35 +08:00
parent 88ec2b742a
commit bd799ebea8
259 changed files with 1042 additions and 458 deletions
@@ -1,4 +1,3 @@
// import React from 'react'
import Tippy from "@tippyjs/react";
import { useDispatch, useSelector } from "react-redux";
import { useNavigate, useLocation, useMatch } from "react-router-dom";
@@ -30,9 +29,11 @@ export default function SessionContextMenu({
channelMuted: context == "channel" ? store.footprint.muteChannels[id] : false
};
});
const handleChannelSetting = () => {
navigateTo(`/setting/channel/${id}?f=${pathname}`);
};
const handleReadAll = () => {
// console.log("last mid", mids, lastMid);
if (mid) {
@@ -41,16 +42,19 @@ export default function SessionContextMenu({
updateReadIndex(param);
}
};
const handleRemoveSession = () => {
dispatch(removeUserSession(id));
if (pathMatched) {
navigateTo("/chat");
}
};
const handleChannelMute = () => {
const data = channelMuted ? { remove_groups: [id] } : { add_groups: [{ gid: id }] };
muteChannel(data);
};
const items =
context == "user"
? [
@@ -13,7 +13,10 @@ import IconLock from "../../../assets/icons/lock.svg";
import useContextMenu from "../../../common/hook/useContextMenu";
import { useNavigate, NavLink } from "react-router-dom";
import useUploadFile from "../../../common/hook/useUploadFile";
// todo: move to root file
dayjs.extend(relativeTime);
export default function Session({
type = "user",
id,
@@ -23,6 +26,7 @@ export default function Session({
}) {
const navigate = useNavigate();
const { addStageFile } = useUploadFile({ context: type, id });
const [{ isActive }, drop] = useDrop(
() => ({
accept: [NativeTypes.FILE],
@@ -44,6 +48,7 @@ export default function Session({
}),
[type, id]
);
const { visible: contextMenuVisible, handleContextMenuEvent, hideContextMenu } = useContextMenu();
const [data, setData] = useState(null);
const { messageData, contactData, channelData, readIndex, loginUid, mids, muted } = useSelector(
@@ -60,10 +65,12 @@ export default function Session({
};
}
);
const handleImageError = (evt) => {
evt.target.classList.add("channel_default");
evt.target.src = iconChannel;
};
useEffect(() => {
const tmp = type == "user" ? contactData[id] : channelData[id];
if (!tmp) return;
@@ -81,6 +88,7 @@ export default function Session({
messageData,
loginUid
});
return (
<li className="session">
<ContextMenu
@@ -1,15 +1,16 @@
import { useState, useEffect } from "react";
import { useSelector } from "react-redux";
import Styled from "./styled";
import Session from "./Session";
import DeleteChannelConfirmModal from "../../settingChannel/DeleteConfirmModal";
import InviteModal from "../../../common/component/InviteModal";
import { useAppSelector } from "../../../app/store";
export default function SessionList({ tempSession = null }) {
const [deleteId, setDeleteId] = useState(null);
const [inviteChannelId, setInviteChannelId] = useState(null);
const [sessions, setSessions] = useState([]);
const { channelIDs, DMs, readChannels, readUsers, channelMessage, userMessage, loginUid } =
useSelector((store) => {
useAppSelector((store) => {
return {
loginUid: store.authData.uid,
channelIDs: store.channels.ids,
@@ -20,6 +21,7 @@ export default function SessionList({ tempSession = null }) {
readUsers: store.footprint.readUsers
};
});
useEffect(() => {
const cSessions = channelIDs.map((id) => {
const mids = channelMessage[id];
@@ -51,6 +53,7 @@ export default function SessionList({ tempSession = null }) {
userMessage,
tempSession
]);
return (
<>
<Styled>