feat: toast in md input mode

This commit is contained in:
Tristan Yang
2023-03-01 09:51:39 +08:00
parent e34b9e9ab0
commit 080e922272
2 changed files with 17 additions and 3 deletions
+13 -3
View File
@@ -2,6 +2,7 @@ import { useState, useRef, useEffect, FC, ReactElement } from "react";
import { useDrop } from "react-dnd";
import { NativeTypes } from "react-dnd-html5-backend";
import clsx from "clsx";
import { toast } from "react-hot-toast";
import ImagePreviewModal from "../../../common/component/ImagePreviewModal";
import Send from "../../../common/component/Send";
@@ -12,6 +13,7 @@ import LoginTip from "./LoginTip";
import useLicense from "../../../common/hook/useLicense";
import LicenseUpgradeTip from "./LicenseOutdatedTip";
import DnDTip from "./DnDTip";
import IconWarning from '../../../assets/icons/warning.svg';
interface Props {
readonly?: boolean;
@@ -39,8 +41,9 @@ const Layout: FC<Props> = ({
const { addStageFile } = useUploadFile({ context, id: to });
const messagesContainer = useRef<HTMLDivElement>(null);
const [previewImage, setPreviewImage] = useState(null);
const { selects, channelsData, usersData } = useAppSelector((store) => {
const { selects, channelsData, usersData, inputMode } = useAppSelector((store) => {
return {
inputMode: store.ui.inputMode,
selects: store.ui.selectMessages[`${context}_${to}`],
channelsData: store.channels.byId,
usersData: store.users.byId
@@ -50,6 +53,13 @@ const Layout: FC<Props> = ({
() => ({
accept: [NativeTypes.FILE],
drop({ files }) {
// console.log("iii", inputMode);
if (inputMode !== "text") {
toast("DnD not allowed in this input mode", {
icon: <IconWarning className="w-5 h-5" />,
});
return;
};
if (files.length) {
const filesData = files.map((file) => {
const { size, type, name } = file;
@@ -63,7 +73,7 @@ const Layout: FC<Props> = ({
isActive: monitor.canDrop() && monitor.isOver()
})
}),
[context, to]
[context, to, inputMode]
);
useEffect(() => {
@@ -132,7 +142,7 @@ const Layout: FC<Props> = ({
</main>
{aside && <div className={clsx("z-50 p-3 absolute right-0 top-0 translate-x-full flex-col hidden md:flex")}>{aside}</div>}
{users && <div className="hidden md:block">{users}</div>}
{!readonly && isActive && (
{!readonly && inputMode == "text" && isActive && (
<DnDTip context={context} name={name} />
)}
</section>