feat: platform util

This commit is contained in:
Tristan Yang
2023-07-18 14:01:38 +08:00
parent 2d99413a3c
commit 201bd349f2
3 changed files with 22 additions and 6 deletions
+3 -1
View File
@@ -18,6 +18,7 @@ import LicenseUpgradeTip from "./LicenseOutdatedTip";
import LoginTip from "./LoginTip";
import Operations from "./Operations";
import VirtualMessageFeed from "./VirtualMessageFeed";
import { platform } from "@/utils";
interface Props {
readonly?: boolean;
@@ -125,7 +126,8 @@ const Layout: FC<Props> = ({
{aside && (
<div
className={clsx(
"flex z-50 p-3 absolute right-0 top-14 md:right-0 md:top-0 md:translate-x-full flex-col"
"flex z-50 p-3 absolute right-0 md:translate-x-full flex-col",
platform().isWindows ? "top-14 md:top-5" : "top-14 md:top-0"
)}
>
{aside}
+8 -5
View File
@@ -7,6 +7,7 @@ import SettingBlock from "@/components/SettingBlock";
import StyledButton from "@/components/styled/Button";
import AutoDeleteFiles from "./AutoDeleteFiles";
import ClearConfirmModal from "./ClearConfirmModal";
import ServerVersionChecker from "@/components/ServerVersionChecker";
export type VisibleModalType = "chat" | "files";
export default function DataManagement() {
@@ -22,11 +23,13 @@ export default function DataManagement() {
return (
<div className="relative w-full md:w-[512px] flex flex-col gap-6">
{/* 清除服务器聊天消息 */}
<SettingBlock title={t("data.clear_msgs.title")} desc={t("data.clear_msgs.desc")}>
<StyledButton onClick={handleModalVisible.bind(null, "chat")} className="danger">
{t("data.clear_msgs.btn")}
</StyledButton>
</SettingBlock>
<ServerVersionChecker version="0.3.12">
<SettingBlock title={t("data.clear_msgs.title")} desc={t("data.clear_msgs.desc")}>
<StyledButton onClick={handleModalVisible.bind(null, "chat")} className="danger">
{t("data.clear_msgs.btn")}
</StyledButton>
</SettingBlock>
</ServerVersionChecker>
{/* 清除服务器文件 */}
<SettingBlock title={t("data.clear_files.title")} desc={t("data.clear_files.desc")}>
+11
View File
@@ -384,6 +384,17 @@ export const isDarkMode = () => {
const isLightMode = localStorage.theme === "light";
return isDarkMode || (!isLightMode && window.matchMedia("(prefers-color-scheme: dark)").matches);
};
export const platform = () => {
const ua = navigator.userAgent.toLowerCase();
const isMac = ua.indexOf("darwin") != -1;
const isWindows = ua.indexOf("win32") != -1;
const isLinux = ua.indexOf("linux") != -1;
return {
isMac,
isWindows,
isLinux
};
};
export const fromNowTime = (ts?: number) => {
if (!ts) return null;