From fec64393c622f7bc4c8640fbacad72eeb63f41b0 Mon Sep 17 00:00:00 2001 From: haorwen Date: Sat, 27 Jun 2026 00:08:08 +0800 Subject: [PATCH] feat: gate guest mode warning on server version >= 0.5.22 chore: bump version to 0.9.94 --- package.json | 2 +- src/components/ChannelModal/index.tsx | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a2eed7e2..817a8b5c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vocechat-web", - "version": "0.9.93", + "version": "0.9.94", "homepage": "https://voce.chat", "dependencies": { "@metamask/onboarding": "^1.0.1", diff --git a/src/components/ChannelModal/index.tsx b/src/components/ChannelModal/index.tsx index 839eaffb..bb61d3aa 100644 --- a/src/components/ChannelModal/index.tsx +++ b/src/components/ChannelModal/index.tsx @@ -21,6 +21,15 @@ import { shallowEqual } from "react-redux"; const GUEST_WARNING_DISMISSED_KEY = "vocechat_public_channel_guest_warning_dismissed"; +const semverGte = (version: string, min: string): boolean => { + const parse = (v: string) => v.split(".").map(Number); + const [va, vb, vc] = parse(version); + const [ma, mb, mc] = parse(min); + if (va !== ma) return va > ma; + if (vb !== mb) return vb > mb; + return vc >= mc; +}; + interface GuestModeWarningProps { onDisableGuest: () => void; onSwitchPrivate: () => void; @@ -68,6 +77,7 @@ const ChannelModal: FC = ({ personal = false, closeModal }) => { const [sendMessage] = useSendChannelMsgMutation(); const channelData = useAppSelector((store) => store.channels.byId, shallowEqual); const loginUser = useAppSelector((store) => store.authData.user, shallowEqual); + const serverVersion = useAppSelector((store) => store.server.version); const [data, setData] = useState({ name: "", description: "", @@ -106,7 +116,8 @@ const ChannelModal: FC = ({ personal = false, closeModal }) => { } const guestEnabled = (loginConfig as LoginConfig | undefined)?.guest ?? false; const warningDismissed = localStorage.getItem(GUEST_WARNING_DISMISSED_KEY) === "1"; - if (data.is_public && loginUser?.is_admin && guestEnabled && !warningDismissed) { + const versionSupported = serverVersion ? semverGte(serverVersion, "0.5.22") : false; + if (data.is_public && loginUser?.is_admin && guestEnabled && !warningDismissed && versionSupported) { setShowGuestWarning(true); return; }