refactor: remove server version checker
This commit is contained in:
@@ -10,7 +10,6 @@ import ChannelIcon from "./ChannelIcon";
|
|||||||
import ChannelModal from "./ChannelModal";
|
import ChannelModal from "./ChannelModal";
|
||||||
import InviteModal from "./InviteModal";
|
import InviteModal from "./InviteModal";
|
||||||
import SearchUser from "./SearchUser";
|
import SearchUser from "./SearchUser";
|
||||||
import ServerVersionChecker from "./ServerVersionChecker";
|
|
||||||
import UsersModal from "./UsersModal";
|
import UsersModal from "./UsersModal";
|
||||||
|
|
||||||
export default function AddEntriesMenu() {
|
export default function AddEntriesMenu() {
|
||||||
@@ -79,12 +78,10 @@ export default function AddEntriesMenu() {
|
|||||||
<IconInvite className={iconClass} />
|
<IconInvite className={iconClass} />
|
||||||
{t("action.invite_people")}
|
{t("action.invite_people")}
|
||||||
</li>
|
</li>
|
||||||
<ServerVersionChecker version="0.3.7" empty={true}>
|
<li className={itemClass} onClick={toggleSearchModalVisible}>
|
||||||
<li className={itemClass} onClick={toggleSearchModalVisible}>
|
<IconSearch className={iconClass} />
|
||||||
<IconSearch className={iconClass} />
|
{t("action.search_people")}
|
||||||
{t("action.search_people")}
|
</li>
|
||||||
</li>
|
|
||||||
</ServerVersionChecker>
|
|
||||||
</ul>
|
</ul>
|
||||||
{channelModalVisible && <ChannelModal personal={isPrivate} closeModal={handleCloseModal} />}
|
{channelModalVisible && <ChannelModal personal={isPrivate} closeModal={handleCloseModal} />}
|
||||||
{usersModalVisible && <UsersModal closeModal={toggleUsersModalVisible} />}
|
{usersModalVisible && <UsersModal closeModal={toggleUsersModalVisible} />}
|
||||||
|
|||||||
+7
-13
@@ -10,7 +10,6 @@ import {
|
|||||||
} from "@/app/services/server";
|
} from "@/app/services/server";
|
||||||
import { useLazyGetContactsQuery, useLazyGetUsersQuery } from "@/app/services/user";
|
import { useLazyGetContactsQuery, useLazyGetUsersQuery } from "@/app/services/user";
|
||||||
import { useAppSelector } from "@/app/store";
|
import { useAppSelector } from "@/app/store";
|
||||||
import { compareVersion } from "../utils";
|
|
||||||
import useLicense from "./useLicense";
|
import useLicense from "./useLicense";
|
||||||
import useStreaming from "./useStreaming";
|
import useStreaming from "./useStreaming";
|
||||||
|
|
||||||
@@ -28,7 +27,8 @@ export default function usePreload() {
|
|||||||
isGuest,
|
isGuest,
|
||||||
expireTime = +new Date(),
|
expireTime = +new Date(),
|
||||||
channelMessageData,
|
channelMessageData,
|
||||||
channelIds
|
channelIds,
|
||||||
|
enableContacts
|
||||||
} = useAppSelector((store) => {
|
} = useAppSelector((store) => {
|
||||||
return {
|
return {
|
||||||
channelIds: store.channels.ids,
|
channelIds: store.channels.ids,
|
||||||
@@ -36,7 +36,8 @@ export default function usePreload() {
|
|||||||
loginUid: store.authData.user?.uid,
|
loginUid: store.authData.user?.uid,
|
||||||
isGuest: store.authData.guest,
|
isGuest: store.authData.guest,
|
||||||
token: store.authData.token,
|
token: store.authData.token,
|
||||||
expireTime: store.authData.expireTime
|
expireTime: store.authData.expireTime,
|
||||||
|
enableContacts: store.server.contact_verification_enable
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
const { setStreamingReady } = useStreaming();
|
const { setStreamingReady } = useStreaming();
|
||||||
@@ -95,17 +96,11 @@ export default function usePreload() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (rehydrated && serverVersion) {
|
if (rehydrated && serverVersion) {
|
||||||
getUsers().then(() => {
|
getUsers().then(() => {
|
||||||
if (compareVersion(serverVersion, "0.3.7") >= 0 && !isGuest) {
|
getContacts();
|
||||||
// 根据版本号判断是否需要初始化contact
|
|
||||||
getContacts();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
getServer();
|
getServer();
|
||||||
getFavorites();
|
getFavorites();
|
||||||
if (compareVersion(serverVersion, "0.3.4") >= 0) {
|
getSystemCommon();
|
||||||
// 根据版本号判断是否需要调用system common api
|
|
||||||
getSystemCommon();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, [rehydrated, serverVersion, isGuest]);
|
}, [rehydrated, serverVersion, isGuest]);
|
||||||
const tokenAlmostExpire = dayjs().isAfter(new Date(expireTime - 20 * 1000));
|
const tokenAlmostExpire = dayjs().isAfter(new Date(expireTime - 20 * 1000));
|
||||||
@@ -115,7 +110,6 @@ export default function usePreload() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setStreamingReady(canStreaming);
|
setStreamingReady(canStreaming);
|
||||||
}, [canStreaming]);
|
}, [canStreaming]);
|
||||||
const enableContact = serverVersion ? compareVersion(serverVersion, "0.3.7") >= 0 : false;
|
|
||||||
return {
|
return {
|
||||||
loading:
|
loading:
|
||||||
usersLoading ||
|
usersLoading ||
|
||||||
@@ -127,7 +121,7 @@ export default function usePreload() {
|
|||||||
error: usersError && serverError && favoritesError,
|
error: usersError && serverError && favoritesError,
|
||||||
success: usersSuccess && serverSuccess && favoritesSuccess && serverVersionSuccess,
|
success: usersSuccess && serverSuccess && favoritesSuccess && serverVersionSuccess,
|
||||||
data: {
|
data: {
|
||||||
users: enableContact ? contacts : users,
|
users: enableContacts ? contacts : users,
|
||||||
server,
|
server,
|
||||||
favorites
|
favorites
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import { updateRememberedNavs } from "@/app/slices/ui";
|
|||||||
import { useAppSelector } from "@/app/store";
|
import { useAppSelector } from "@/app/store";
|
||||||
import ChannelIcon from "@/components/ChannelIcon";
|
import ChannelIcon from "@/components/ChannelIcon";
|
||||||
import GoBackNav from "@/components/GoBackNav";
|
import GoBackNav from "@/components/GoBackNav";
|
||||||
import ServerVersionChecker from "@/components/ServerVersionChecker";
|
|
||||||
import Tooltip from "@/components/Tooltip";
|
import Tooltip from "@/components/Tooltip";
|
||||||
import IconFav from "@/assets/icons/bookmark.svg";
|
import IconFav from "@/assets/icons/bookmark.svg";
|
||||||
import IconPeople from "@/assets/icons/people.svg";
|
import IconPeople from "@/assets/icons/people.svg";
|
||||||
@@ -93,9 +92,7 @@ function ChannelChat({ cid = 0, dropFiles = [] }: Props) {
|
|||||||
</li>
|
</li>
|
||||||
</Tippy>
|
</Tippy>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<ServerVersionChecker version="0.3.5" empty={true}>
|
<VoiceChat context={`channel`} id={cid} />
|
||||||
<VoiceChat context={`channel`} id={cid} />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
<Tooltip tip={t("fav")} placement="left">
|
<Tooltip tip={t("fav")} placement="left">
|
||||||
<Tippy
|
<Tippy
|
||||||
placement="left-start"
|
placement="left-start"
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import Tippy from "@tippyjs/react";
|
|||||||
|
|
||||||
import { useAppSelector } from "@/app/store";
|
import { useAppSelector } from "@/app/store";
|
||||||
import GoBackNav from "@/components/GoBackNav";
|
import GoBackNav from "@/components/GoBackNav";
|
||||||
import ServerVersionChecker from "@/components/ServerVersionChecker";
|
|
||||||
import Tooltip from "@/components/Tooltip";
|
import Tooltip from "@/components/Tooltip";
|
||||||
import User from "@/components/User";
|
import User from "@/components/User";
|
||||||
import FavIcon from "@/assets/icons/bookmark.svg";
|
import FavIcon from "@/assets/icons/bookmark.svg";
|
||||||
@@ -37,9 +36,7 @@ const DMChat: FC<Props> = ({ uid = 0, dropFiles }) => {
|
|||||||
dropFiles={dropFiles}
|
dropFiles={dropFiles}
|
||||||
aside={
|
aside={
|
||||||
<ul className="flex flex-col gap-6">
|
<ul className="flex flex-col gap-6">
|
||||||
<ServerVersionChecker version="0.3.7" empty={true}>
|
<VoiceChat context={`dm`} id={uid} />
|
||||||
<VoiceChat context={`dm`} id={uid} />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
<Tooltip tip="Saved Items" placement="left">
|
<Tooltip tip="Saved Items" placement="left">
|
||||||
<Tippy
|
<Tippy
|
||||||
placement="left-start"
|
placement="left-start"
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import { useAppSelector } from "@/app/store";
|
|||||||
import { ChatContext } from "@/types/common";
|
import { ChatContext } from "@/types/common";
|
||||||
import ContextMenu, { Item } from "@/components/ContextMenu";
|
import ContextMenu, { Item } from "@/components/ContextMenu";
|
||||||
import useUserOperation from "@/hooks/useUserOperation";
|
import useUserOperation from "@/hooks/useUserOperation";
|
||||||
import { compareVersion } from "@/utils";
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
context: ChatContext;
|
context: ChatContext;
|
||||||
@@ -52,9 +51,8 @@ const SessionContextMenu: FC<Props> = ({
|
|||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const navigateTo = useNavigate();
|
const navigateTo = useNavigate();
|
||||||
const { pathname } = useLocation();
|
const { pathname } = useLocation();
|
||||||
const { channelMuted, serverVersion } = useAppSelector((store) => {
|
const { channelMuted } = useAppSelector((store) => {
|
||||||
return {
|
return {
|
||||||
serverVersion: store.server.version,
|
|
||||||
channelMuted: context == "channel" ? store.footprint.muteChannels[id] : false
|
channelMuted: context == "channel" ? store.footprint.muteChannels[id] : false
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@@ -95,11 +93,10 @@ const SessionContextMenu: FC<Props> = ({
|
|||||||
};
|
};
|
||||||
const pinTxt = t(pinned ? "unpin_chat" : "pin_chat", { ns: "chat" });
|
const pinTxt = t(pinned ? "unpin_chat" : "pin_chat", { ns: "chat" });
|
||||||
|
|
||||||
const pinVisible = compareVersion(serverVersion, "0.3.7") >= 0;
|
|
||||||
const items =
|
const items =
|
||||||
context == "dm"
|
context == "dm"
|
||||||
? [
|
? [
|
||||||
pinVisible && {
|
{
|
||||||
title: pinTxt,
|
title: pinTxt,
|
||||||
handler: handlePinChat
|
handler: handlePinChat
|
||||||
},
|
},
|
||||||
@@ -122,7 +119,7 @@ const SessionContextMenu: FC<Props> = ({
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
: [
|
: [
|
||||||
pinVisible && {
|
{
|
||||||
title: pinTxt,
|
title: pinTxt,
|
||||||
handler: handlePinChat
|
handler: handlePinChat
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import Loading from "@/components/Loading";
|
|||||||
import Manifest from "@/components/Manifest";
|
import Manifest from "@/components/Manifest";
|
||||||
import Notification from "@/components/Notification";
|
import Notification from "@/components/Notification";
|
||||||
import ReLoginModal from "@/components/ReLoginModal";
|
import ReLoginModal from "@/components/ReLoginModal";
|
||||||
import ServerVersionChecker from "@/components/ServerVersionChecker";
|
|
||||||
import Tooltip from "@/components/Tooltip";
|
import Tooltip from "@/components/Tooltip";
|
||||||
import UnreadTabTip from "@/components/UnreadTabTip";
|
import UnreadTabTip from "@/components/UnreadTabTip";
|
||||||
import Voice from "@/components/Voice";
|
import Voice from "@/components/Voice";
|
||||||
@@ -68,11 +67,7 @@ function HomePage() {
|
|||||||
<>
|
<>
|
||||||
{roleChanged && <ReLoginModal />}
|
{roleChanged && <ReLoginModal />}
|
||||||
{!guest && <UnreadTabTip />}
|
{!guest && <UnreadTabTip />}
|
||||||
{!guest && (
|
{!guest && <Voice />}
|
||||||
<ServerVersionChecker empty={true} version="0.3.5">
|
|
||||||
<Voice />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
)}
|
|
||||||
<Manifest />
|
<Manifest />
|
||||||
{!guest && <Notification />}
|
{!guest && <Notification />}
|
||||||
<div className={`vocechat-container flex w-screen h-screen bg-gray-200 dark:bg-gray-900`}>
|
<div className={`vocechat-container flex w-screen h-screen bg-gray-200 dark:bg-gray-900`}>
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { useWizard } from "react-use-wizard";
|
import { useWizard } from "react-use-wizard";
|
||||||
|
|
||||||
import ServerVersionChecker from "@/components/ServerVersionChecker";
|
|
||||||
import StyledButton from "@/components/styled/Button";
|
import StyledButton from "@/components/styled/Button";
|
||||||
import StyledInput from "@/components/styled/Input";
|
import StyledInput from "@/components/styled/Input";
|
||||||
import useInviteLink from "@/hooks/useInviteLink";
|
import useInviteLink from "@/hooks/useInviteLink";
|
||||||
@@ -35,9 +34,7 @@ export default function InviteLink() {
|
|||||||
<StyledButton className="w-32 h-11 mt-6" onClick={nextStep}>
|
<StyledButton className="w-32 h-11 mt-6" onClick={nextStep}>
|
||||||
{t("done")}
|
{t("done")}
|
||||||
</StyledButton>
|
</StyledButton>
|
||||||
<ServerVersionChecker version="0.3.3" empty={true}>
|
<UpdateFrontendURL refreshInviteLink={generateNewLink} />
|
||||||
<UpdateFrontendURL refreshInviteLink={generateNewLink} />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { useTranslation } from "react-i18next";
|
|||||||
|
|
||||||
import { useAppSelector } from "@/app/store";
|
import { useAppSelector } from "@/app/store";
|
||||||
import { LoginConfig, WhoCanSignUp } from "@/types/server";
|
import { LoginConfig, WhoCanSignUp } from "@/types/server";
|
||||||
import ServerVersionChecker from "@/components/ServerVersionChecker";
|
|
||||||
import StyledRadio from "@/components/styled/Radio";
|
import StyledRadio from "@/components/styled/Radio";
|
||||||
import useConfig from "@/hooks/useConfig";
|
import useConfig from "@/hooks/useConfig";
|
||||||
import ChatLayout from "./ChatLayout";
|
import ChatLayout from "./ChatLayout";
|
||||||
@@ -37,9 +36,7 @@ export default function Overview() {
|
|||||||
<div className="relative w-full md:w-[512px] flex flex-col gap-6">
|
<div className="relative w-full md:w-[512px] flex flex-col gap-6">
|
||||||
<Server />
|
<Server />
|
||||||
{/* 设置前端url */}
|
{/* 设置前端url */}
|
||||||
<ServerVersionChecker version="0.3.3" empty={true}>
|
<FrontendURL />
|
||||||
<FrontendURL />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
{isAdmin && (
|
{isAdmin && (
|
||||||
<>
|
<>
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
@@ -68,17 +65,11 @@ export default function Overview() {
|
|||||||
/>
|
/>
|
||||||
</SettingBlock>
|
</SettingBlock>
|
||||||
{/* 是否显示在线提示 */}
|
{/* 是否显示在线提示 */}
|
||||||
<ServerVersionChecker version="0.3.4" empty={true}>
|
<OnlineStatus />
|
||||||
<OnlineStatus />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
{/* 会话布局 */}
|
{/* 会话布局 */}
|
||||||
<ServerVersionChecker version="0.3.7" empty={true}>
|
<ChatLayout />
|
||||||
<ChatLayout />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
{/* 联系人验证模式 */}
|
{/* 联系人验证模式 */}
|
||||||
<ServerVersionChecker version="0.3.7" empty={true}>
|
<ContactVerification />
|
||||||
<ContactVerification />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import { useTranslation } from "react-i18next";
|
|||||||
|
|
||||||
import { useAppSelector } from "@/app/store";
|
import { useAppSelector } from "@/app/store";
|
||||||
import ManageMembers from "@/components/ManageMembers";
|
import ManageMembers from "@/components/ManageMembers";
|
||||||
import ServerVersionChecker from "@/components/ServerVersionChecker";
|
|
||||||
import Version from "@/components/Version";
|
import Version from "@/components/Version";
|
||||||
import APIConfig from "./APIConfig";
|
import APIConfig from "./APIConfig";
|
||||||
import APIDocument from "./APIDocument";
|
import APIDocument from "./APIDocument";
|
||||||
@@ -40,11 +39,7 @@ const navs = [
|
|||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
name: "bot",
|
name: "bot",
|
||||||
component: (
|
component: <BotConfig />,
|
||||||
<ServerVersionChecker version="0.3.2">
|
|
||||||
<BotConfig />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
),
|
|
||||||
admin: true
|
admin: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -53,11 +48,7 @@ const navs = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "agora",
|
name: "agora",
|
||||||
component: (
|
component: <ConfigAgora />
|
||||||
<ServerVersionChecker version="0.3.5">
|
|
||||||
<ConfigAgora />
|
|
||||||
</ServerVersionChecker>
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "smtp",
|
name: "smtp",
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import Tippy from "@tippyjs/react";
|
|||||||
import { useAppSelector } from "@/app/store";
|
import { useAppSelector } from "@/app/store";
|
||||||
import AddEntriesMenu from "@/components/AddEntriesMenu";
|
import AddEntriesMenu from "@/components/AddEntriesMenu";
|
||||||
import Tooltip from "@/components/Tooltip";
|
import Tooltip from "@/components/Tooltip";
|
||||||
import { compareVersion } from "@/utils";
|
|
||||||
import IconAdd from "@/assets/icons/add.svg";
|
import IconAdd from "@/assets/icons/add.svg";
|
||||||
import IconSearch from "@/assets/icons/search.svg";
|
import IconSearch from "@/assets/icons/search.svg";
|
||||||
|
|
||||||
@@ -15,12 +14,11 @@ type Props = {
|
|||||||
updateInput: (input: string) => void;
|
updateInput: (input: string) => void;
|
||||||
};
|
};
|
||||||
const Search: FC<Props> = ({ input, updateInput, openModal }) => {
|
const Search: FC<Props> = ({ input, updateInput, openModal }) => {
|
||||||
const serverVersion = useAppSelector((store) => store.server.version);
|
const enableContact = useAppSelector((store) => store.server.contact_verification_enable);
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const handleInput = (evt: ChangeEvent<HTMLInputElement>) => {
|
const handleInput = (evt: ChangeEvent<HTMLInputElement>) => {
|
||||||
updateInput(evt.target.value);
|
updateInput(evt.target.value);
|
||||||
};
|
};
|
||||||
const enableContact = compareVersion(serverVersion, "0.3.7") >= 0;
|
|
||||||
return (
|
return (
|
||||||
<div className="hidden md:flex relative min-h-[56px] px-2 py-3 items-center justify-between gap-2 shadow-[rgb(0_0_0_/_10%)_0px_1px_0px] dark:border-b-gray-500">
|
<div className="hidden md:flex relative min-h-[56px] px-2 py-3 items-center justify-between gap-2 shadow-[rgb(0_0_0_/_10%)_0px_1px_0px] dark:border-b-gray-500">
|
||||||
<div className="flex items-center gap-1">
|
<div className="flex items-center gap-1">
|
||||||
|
|||||||
Reference in New Issue
Block a user