feat: gate guest mode warning on server version >= 0.5.22
chore: bump version to 0.9.94
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "vocechat-web",
|
"name": "vocechat-web",
|
||||||
"version": "0.9.93",
|
"version": "0.9.94",
|
||||||
"homepage": "https://voce.chat",
|
"homepage": "https://voce.chat",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@metamask/onboarding": "^1.0.1",
|
"@metamask/onboarding": "^1.0.1",
|
||||||
|
|||||||
@@ -21,6 +21,15 @@ import { shallowEqual } from "react-redux";
|
|||||||
|
|
||||||
const GUEST_WARNING_DISMISSED_KEY = "vocechat_public_channel_guest_warning_dismissed";
|
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 {
|
interface GuestModeWarningProps {
|
||||||
onDisableGuest: () => void;
|
onDisableGuest: () => void;
|
||||||
onSwitchPrivate: () => void;
|
onSwitchPrivate: () => void;
|
||||||
@@ -68,6 +77,7 @@ const ChannelModal: FC<Props> = ({ personal = false, closeModal }) => {
|
|||||||
const [sendMessage] = useSendChannelMsgMutation();
|
const [sendMessage] = useSendChannelMsgMutation();
|
||||||
const channelData = useAppSelector((store) => store.channels.byId, shallowEqual);
|
const channelData = useAppSelector((store) => store.channels.byId, shallowEqual);
|
||||||
const loginUser = useAppSelector((store) => store.authData.user, shallowEqual);
|
const loginUser = useAppSelector((store) => store.authData.user, shallowEqual);
|
||||||
|
const serverVersion = useAppSelector((store) => store.server.version);
|
||||||
const [data, setData] = useState<CreateChannelDTO>({
|
const [data, setData] = useState<CreateChannelDTO>({
|
||||||
name: "",
|
name: "",
|
||||||
description: "",
|
description: "",
|
||||||
@@ -106,7 +116,8 @@ const ChannelModal: FC<Props> = ({ personal = false, closeModal }) => {
|
|||||||
}
|
}
|
||||||
const guestEnabled = (loginConfig as LoginConfig | undefined)?.guest ?? false;
|
const guestEnabled = (loginConfig as LoginConfig | undefined)?.guest ?? false;
|
||||||
const warningDismissed = localStorage.getItem(GUEST_WARNING_DISMISSED_KEY) === "1";
|
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);
|
setShowGuestWarning(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user