chore: handle redirect

pull/4411/head
Johnny 2 weeks ago
parent f5394a3e32
commit 5686fdfb0a

@ -3,8 +3,6 @@ import { useState } from "react";
import { markdownServiceClient } from "@/grpcweb";
import { workspaceStore } from "@/store/v2";
import { LinkMetadata } from "@/types/proto/api/v1/markdown_service";
import { WorkspaceMemoRelatedSetting } from "@/types/proto/api/v1/workspace_setting_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
interface Props {
url: string;
@ -21,9 +19,7 @@ const getFaviconWithGoogleS2 = (url: string) => {
};
const Link: React.FC<Props> = ({ text, url }: Props) => {
const workspaceMemoRelatedSetting =
workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.MEMO_RELATED).memoRelatedSetting ||
WorkspaceMemoRelatedSetting.fromPartial({});
const workspaceMemoRelatedSetting = workspaceStore.state.memoRelatedSetting;
const [initialized, setInitialized] = useState<boolean>(false);
const [showTooltip, setShowTooltip] = useState<boolean>(false);
const [linkMetadata, setLinkMetadata] = useState<LinkMetadata | undefined>();

@ -20,8 +20,6 @@ import { MemoRelation, MemoRelation_Type } from "@/types/proto/api/v1/memo_relat
import { Location, Memo, Visibility } from "@/types/proto/api/v1/memo_service";
import { Resource } from "@/types/proto/api/v1/resource_service";
import { UserSetting } from "@/types/proto/api/v1/user_service";
import { WorkspaceMemoRelatedSetting } from "@/types/proto/api/v1/workspace_setting_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { useTranslate } from "@/utils/i18n";
import { convertVisibilityFromString, convertVisibilityToString } from "@/utils/memo";
import VisibilityIcon from "../VisibilityIcon";
@ -87,9 +85,7 @@ const MemoEditor = observer((props: Props) => {
relation.memo?.name === memoName && relation.relatedMemo?.name !== memoName && relation.type === MemoRelation_Type.REFERENCE,
)
: state.relationList.filter((relation) => relation.type === MemoRelation_Type.REFERENCE);
const workspaceMemoRelatedSetting =
workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.MEMO_RELATED)?.memoRelatedSetting ||
WorkspaceMemoRelatedSetting.fromPartial({});
const workspaceMemoRelatedSetting = workspaceStore.state.memoRelatedSetting;
useEffect(() => {
editorRef.current?.setContent(contentCache || "");

@ -10,8 +10,6 @@ import { userStore, workspaceStore } from "@/store/v2";
import { State } from "@/types/proto/api/v1/common";
import { MemoRelation_Type } from "@/types/proto/api/v1/memo_relation_service";
import { Memo, Visibility } from "@/types/proto/api/v1/memo_service";
import { WorkspaceMemoRelatedSetting } from "@/types/proto/api/v1/workspace_setting_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { cn } from "@/utils";
import { useTranslate } from "@/utils/i18n";
import { convertVisibilityToString } from "@/utils/memo";
@ -50,9 +48,7 @@ const MemoView: React.FC<Props> = (props: Props) => {
const [showEditor, setShowEditor] = useState<boolean>(false);
const [creator, setCreator] = useState(userStore.getUserByName(memo.creator));
const memoContainerRef = useRef<HTMLDivElement>(null);
const workspaceMemoRelatedSetting =
workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.MEMO_RELATED).memoRelatedSetting ||
WorkspaceMemoRelatedSetting.fromPartial({});
const workspaceMemoRelatedSetting = workspaceStore.state.memoRelatedSetting;
const referencedMemos = memo.relations.filter((relation) => relation.type === MemoRelation_Type.REFERENCE);
const commentAmount = memo.relations.filter(
(relation) => relation.type === MemoRelation_Type.COMMENT && relation.relatedMemo?.name === memo.name,

@ -7,8 +7,6 @@ import useCurrentUser from "@/hooks/useCurrentUser";
import { useMemoStore } from "@/store/v1";
import { workspaceStore } from "@/store/v2";
import { Memo } from "@/types/proto/api/v1/memo_service";
import { WorkspaceMemoRelatedSetting } from "@/types/proto/api/v1/workspace_setting_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { cn } from "@/utils";
interface Props {
@ -22,9 +20,7 @@ const ReactionSelector = (props: Props) => {
const memoStore = useMemoStore();
const [open, setOpen] = useState(false);
const containerRef = useRef<HTMLDivElement>(null);
const workspaceMemoRelatedSetting =
workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.MEMO_RELATED)?.memoRelatedSetting ||
WorkspaceMemoRelatedSetting.fromPartial({});
const workspaceMemoRelatedSetting = workspaceStore.state.memoRelatedSetting;
useClickAway(containerRef, () => {
setOpen(false);

@ -12,9 +12,7 @@ import { useTranslate } from "@/utils/i18n";
const MemoRelatedSettings = () => {
const t = useTranslate();
const originalSetting = WorkspaceMemoRelatedSetting.fromPartial(
workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.MEMO_RELATED)?.memoRelatedSetting || {},
);
const originalSetting = workspaceStore.state.memoRelatedSetting;
const [memoRelatedSetting, setMemoRelatedSetting] = useState<WorkspaceMemoRelatedSetting>(originalSetting);
const [editingReaction, setEditingReaction] = useState<string>("");

@ -1,3 +1,4 @@
import { observer } from "mobx-react-lite";
import { Suspense, useEffect, useMemo, useState } from "react";
import { Outlet, useLocation, useSearchParams } from "react-router-dom";
import usePrevious from "react-use/lib/usePrevious";
@ -7,9 +8,10 @@ import useResponsiveWidth from "@/hooks/useResponsiveWidth";
import Loading from "@/pages/Loading";
import { Routes } from "@/router";
import { useMemoFilterStore } from "@/store/v1";
import { workspaceStore } from "@/store/v2";
import { cn } from "@/utils";
const RootLayout = () => {
const RootLayout = observer(() => {
const location = useLocation();
const [searchParams] = useSearchParams();
const { sm } = useResponsiveWidth();
@ -21,7 +23,11 @@ const RootLayout = () => {
useEffect(() => {
if (!currentUser) {
if (([Routes.ROOT, Routes.RESOURCES, Routes.INBOX, Routes.ARCHIVED, Routes.SETTING] as string[]).includes(location.pathname)) {
// If disallowPublicVisibility is enabled, redirect to the login page if the user is not logged in.
if (workspaceStore.state.memoRelatedSetting.disallowPublicVisibility) {
window.location.href = Routes.AUTH;
return;
} else if (([Routes.ROOT, Routes.RESOURCES, Routes.INBOX, Routes.ARCHIVED, Routes.SETTING] as string[]).includes(location.pathname)) {
window.location.href = Routes.EXPLORE;
return;
}
@ -59,6 +65,6 @@ const RootLayout = () => {
</div>
</div>
);
};
});
export default RootLayout;

@ -15,7 +15,6 @@ import { memoNamePrefix, useMemoStore } from "@/store/v1";
import { workspaceStore } from "@/store/v2";
import { MemoRelation_Type } from "@/types/proto/api/v1/memo_relation_service";
import { Memo } from "@/types/proto/api/v1/memo_service";
import { WorkspaceMemoRelatedSetting, WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { cn } from "@/utils";
import { useTranslate } from "@/utils/i18n";
@ -30,9 +29,7 @@ const MemoDetail = () => {
const uid = params.uid;
const memoName = `${memoNamePrefix}${uid}`;
const memo = memoStore.getMemoByName(memoName);
const workspaceMemoRelatedSetting = WorkspaceMemoRelatedSetting.fromPartial(
workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.MEMO_RELATED)?.memoRelatedSetting || {},
);
const workspaceMemoRelatedSetting = workspaceStore.state.memoRelatedSetting;
const [parentMemo, setParentMemo] = useState<Memo | undefined>(undefined);
const [showCommentEditor, setShowCommentEditor] = useState(false);
const commentRelations =

@ -2,7 +2,7 @@ import { uniqBy } from "lodash-es";
import { makeAutoObservable } from "mobx";
import { workspaceServiceClient, workspaceSettingServiceClient } from "@/grpcweb";
import { WorkspaceProfile } from "@/types/proto/api/v1/workspace_service";
import { WorkspaceGeneralSetting, WorkspaceSetting } from "@/types/proto/api/v1/workspace_setting_service";
import { WorkspaceGeneralSetting, WorkspaceMemoRelatedSetting, WorkspaceSetting } from "@/types/proto/api/v1/workspace_setting_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { isValidateLocale } from "@/utils/i18n";
import { workspaceSettingNamePrefix } from "../v1";
@ -20,6 +20,13 @@ class LocalState {
);
}
get memoRelatedSetting() {
return (
this.settings.find((setting) => setting.name === `${workspaceSettingNamePrefix}${WorkspaceSettingKey.MEMO_RELATED}`)
?.memoRelatedSetting || WorkspaceMemoRelatedSetting.fromPartial({})
);
}
constructor() {
makeAutoObservable(this);
}

Loading…
Cancel
Save