Commit ac386c21 authored by Steven's avatar Steven

fix: workspace setting keys

parent c133f552
...@@ -69,6 +69,18 @@ message WorkspaceSetting { ...@@ -69,6 +69,18 @@ message WorkspaceSetting {
WorkspaceStorageSetting storage_setting = 3; WorkspaceStorageSetting storage_setting = 3;
WorkspaceMemoRelatedSetting memo_related_setting = 4; WorkspaceMemoRelatedSetting memo_related_setting = 4;
} }
enum Key {
KEY_UNSPECIFIED = 0;
// BASIC is the key for basic settings.
BASIC = 1;
// GENERAL is the key for general settings.
GENERAL = 2;
// STORAGE is the key for storage settings.
STORAGE = 3;
// MEMO_RELATED is the key for memo related settings.
MEMO_RELATED = 4;
}
} }
message WorkspaceGeneralSetting { message WorkspaceGeneralSetting {
......
This diff is collapsed.
...@@ -9,8 +9,7 @@ import { Input } from "@/components/ui/input"; ...@@ -9,8 +9,7 @@ import { Input } from "@/components/ui/input";
import { Switch } from "@/components/ui/switch"; import { Switch } from "@/components/ui/switch";
import { workspaceStore } from "@/store"; import { workspaceStore } from "@/store";
import { workspaceSettingNamePrefix } from "@/store/common"; import { workspaceSettingNamePrefix } from "@/store/common";
import { WorkspaceMemoRelatedSetting } from "@/types/proto/api/v1/workspace_service"; import { WorkspaceMemoRelatedSetting, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { useTranslate } from "@/utils/i18n"; import { useTranslate } from "@/utils/i18n";
const MemoRelatedSettings = observer(() => { const MemoRelatedSettings = observer(() => {
...@@ -54,7 +53,7 @@ const MemoRelatedSettings = observer(() => { ...@@ -54,7 +53,7 @@ const MemoRelatedSettings = observer(() => {
try { try {
await workspaceStore.upsertWorkspaceSetting({ await workspaceStore.upsertWorkspaceSetting({
name: `${workspaceSettingNamePrefix}${WorkspaceSettingKey.MEMO_RELATED}`, name: `${workspaceSettingNamePrefix}${WorkspaceSetting_Key.MEMO_RELATED}`,
memoRelatedSetting, memoRelatedSetting,
}); });
setOriginalSetting(memoRelatedSetting); setOriginalSetting(memoRelatedSetting);
......
...@@ -14,24 +14,24 @@ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/comp ...@@ -14,24 +14,24 @@ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/comp
import { workspaceStore } from "@/store"; import { workspaceStore } from "@/store";
import { workspaceSettingNamePrefix } from "@/store/common"; import { workspaceSettingNamePrefix } from "@/store/common";
import { import {
WorkspaceSetting_Key,
WorkspaceStorageSetting, WorkspaceStorageSetting,
WorkspaceStorageSetting_S3Config, WorkspaceStorageSetting_S3Config,
WorkspaceStorageSetting_StorageType, WorkspaceStorageSetting_StorageType,
} from "@/types/proto/api/v1/workspace_service"; } from "@/types/proto/api/v1/workspace_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { useTranslate } from "@/utils/i18n"; import { useTranslate } from "@/utils/i18n";
const StorageSection = observer(() => { const StorageSection = observer(() => {
const t = useTranslate(); const t = useTranslate();
const [workspaceStorageSetting, setWorkspaceStorageSetting] = useState<WorkspaceStorageSetting>( const [workspaceStorageSetting, setWorkspaceStorageSetting] = useState<WorkspaceStorageSetting>(
WorkspaceStorageSetting.fromPartial(workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.STORAGE)?.storageSetting || {}), WorkspaceStorageSetting.fromPartial(workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)?.storageSetting || {}),
); );
useEffect(() => { useEffect(() => {
setWorkspaceStorageSetting( setWorkspaceStorageSetting(
WorkspaceStorageSetting.fromPartial(workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.STORAGE)?.storageSetting || {}), WorkspaceStorageSetting.fromPartial(workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)?.storageSetting || {}),
); );
}, [workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.STORAGE)]); }, [workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)]);
const allowSaveStorageSetting = useMemo(() => { const allowSaveStorageSetting = useMemo(() => {
if (workspaceStorageSetting.uploadSizeLimitMb <= 0) { if (workspaceStorageSetting.uploadSizeLimitMb <= 0) {
...@@ -39,7 +39,7 @@ const StorageSection = observer(() => { ...@@ -39,7 +39,7 @@ const StorageSection = observer(() => {
} }
const origin = WorkspaceStorageSetting.fromPartial( const origin = WorkspaceStorageSetting.fromPartial(
workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.STORAGE)?.storageSetting || {}, workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.STORAGE)?.storageSetting || {},
); );
if (workspaceStorageSetting.storageType === WorkspaceStorageSetting_StorageType.LOCAL) { if (workspaceStorageSetting.storageType === WorkspaceStorageSetting_StorageType.LOCAL) {
if (workspaceStorageSetting.filepathTemplate.length === 0) { if (workspaceStorageSetting.filepathTemplate.length === 0) {
...@@ -126,7 +126,7 @@ const StorageSection = observer(() => { ...@@ -126,7 +126,7 @@ const StorageSection = observer(() => {
const saveWorkspaceStorageSetting = async () => { const saveWorkspaceStorageSetting = async () => {
await workspaceStore.upsertWorkspaceSetting({ await workspaceStore.upsertWorkspaceSetting({
name: `${workspaceSettingNamePrefix}${WorkspaceSettingKey.STORAGE}`, name: `${workspaceSettingNamePrefix}${WorkspaceSetting_Key.STORAGE}`,
storageSetting: workspaceStorageSetting, storageSetting: workspaceStorageSetting,
}); });
toast.success("Updated"); toast.success("Updated");
......
...@@ -14,8 +14,7 @@ import useDialog from "@/hooks/useDialog"; ...@@ -14,8 +14,7 @@ import useDialog from "@/hooks/useDialog";
import { workspaceStore } from "@/store"; import { workspaceStore } from "@/store";
import { workspaceSettingNamePrefix } from "@/store/common"; import { workspaceSettingNamePrefix } from "@/store/common";
import { IdentityProvider } from "@/types/proto/api/v1/idp_service"; import { IdentityProvider } from "@/types/proto/api/v1/idp_service";
import { WorkspaceGeneralSetting } from "@/types/proto/api/v1/workspace_service"; import { WorkspaceGeneralSetting, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { useTranslate } from "@/utils/i18n"; import { useTranslate } from "@/utils/i18n";
import ThemeSelector from "../ThemeSelector"; import ThemeSelector from "../ThemeSelector";
import UpdateCustomizedProfileDialog from "../UpdateCustomizedProfileDialog"; import UpdateCustomizedProfileDialog from "../UpdateCustomizedProfileDialog";
...@@ -24,14 +23,14 @@ const WorkspaceSection = observer(() => { ...@@ -24,14 +23,14 @@ const WorkspaceSection = observer(() => {
const t = useTranslate(); const t = useTranslate();
const customizeDialog = useDialog(); const customizeDialog = useDialog();
const originalSetting = WorkspaceGeneralSetting.fromPartial( const originalSetting = WorkspaceGeneralSetting.fromPartial(
workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.GENERAL)?.generalSetting || {}, workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.GENERAL)?.generalSetting || {},
); );
const [workspaceGeneralSetting, setWorkspaceGeneralSetting] = useState<WorkspaceGeneralSetting>(originalSetting); const [workspaceGeneralSetting, setWorkspaceGeneralSetting] = useState<WorkspaceGeneralSetting>(originalSetting);
const [identityProviderList, setIdentityProviderList] = useState<IdentityProvider[]>([]); const [identityProviderList, setIdentityProviderList] = useState<IdentityProvider[]>([]);
useEffect(() => { useEffect(() => {
setWorkspaceGeneralSetting({ ...workspaceGeneralSetting, customProfile: originalSetting.customProfile }); setWorkspaceGeneralSetting({ ...workspaceGeneralSetting, customProfile: originalSetting.customProfile });
}, [workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.GENERAL)]); }, [workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.GENERAL)]);
const handleUpdateCustomizedProfileButtonClick = () => { const handleUpdateCustomizedProfileButtonClick = () => {
customizeDialog.open(); customizeDialog.open();
...@@ -49,7 +48,7 @@ const WorkspaceSection = observer(() => { ...@@ -49,7 +48,7 @@ const WorkspaceSection = observer(() => {
const handleSaveGeneralSetting = async () => { const handleSaveGeneralSetting = async () => {
try { try {
await workspaceStore.upsertWorkspaceSetting({ await workspaceStore.upsertWorkspaceSetting({
name: `${workspaceSettingNamePrefix}${WorkspaceSettingKey.GENERAL}`, name: `${workspaceSettingNamePrefix}${WorkspaceSetting_Key.GENERAL}`,
generalSetting: workspaceGeneralSetting, generalSetting: workspaceGeneralSetting,
}); });
} catch (error: any) { } catch (error: any) {
......
...@@ -7,8 +7,7 @@ import { Label } from "@/components/ui/label"; ...@@ -7,8 +7,7 @@ import { Label } from "@/components/ui/label";
import { Textarea } from "@/components/ui/textarea"; import { Textarea } from "@/components/ui/textarea";
import { workspaceStore } from "@/store"; import { workspaceStore } from "@/store";
import { workspaceSettingNamePrefix } from "@/store/common"; import { workspaceSettingNamePrefix } from "@/store/common";
import { WorkspaceCustomProfile } from "@/types/proto/api/v1/workspace_service"; import { WorkspaceCustomProfile, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { useTranslate } from "@/utils/i18n"; import { useTranslate } from "@/utils/i18n";
import AppearanceSelect from "./AppearanceSelect"; import AppearanceSelect from "./AppearanceSelect";
import LocaleSelect from "./LocaleSelect"; import LocaleSelect from "./LocaleSelect";
...@@ -88,7 +87,7 @@ function UpdateCustomizedProfileDialog({ open, onOpenChange, onSuccess }: Props) ...@@ -88,7 +87,7 @@ function UpdateCustomizedProfileDialog({ open, onOpenChange, onSuccess }: Props)
setIsLoading(true); setIsLoading(true);
try { try {
await workspaceStore.upsertWorkspaceSetting({ await workspaceStore.upsertWorkspaceSetting({
name: `${workspaceSettingNamePrefix}${WorkspaceSettingKey.GENERAL}`, name: `${workspaceSettingNamePrefix}${WorkspaceSetting_Key.GENERAL}`,
generalSetting: { generalSetting: {
...workspaceGeneralSetting, ...workspaceGeneralSetting,
customProfile: customProfile, customProfile: customProfile,
......
...@@ -8,7 +8,7 @@ import { viewStore, userStore, workspaceStore } from "@/store"; ...@@ -8,7 +8,7 @@ import { viewStore, userStore, workspaceStore } from "@/store";
import memoFilterStore from "@/store/memoFilter"; import memoFilterStore from "@/store/memoFilter";
import { State } from "@/types/proto/api/v1/common"; import { State } from "@/types/proto/api/v1/common";
import { Memo } from "@/types/proto/api/v1/memo_service"; import { Memo } from "@/types/proto/api/v1/memo_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting"; import { WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service";
// Helper function to extract shortcut ID from resource name // Helper function to extract shortcut ID from resource name
// Format: users/{user}/shortcuts/{shortcut} // Format: users/{user}/shortcuts/{shortcut}
...@@ -40,7 +40,7 @@ const Home = observer(() => { ...@@ -40,7 +40,7 @@ const Home = observer(() => {
} else if (filter.factor === "property.hasCode") { } else if (filter.factor === "property.hasCode") {
conditions.push(`has_code`); conditions.push(`has_code`);
} else if (filter.factor === "displayTime") { } else if (filter.factor === "displayTime") {
const displayWithUpdateTime = workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.MEMO_RELATED).memoRelatedSetting const displayWithUpdateTime = workspaceStore.getWorkspaceSettingByKey(WorkspaceSetting_Key.MEMO_RELATED).memoRelatedSetting
?.displayWithUpdateTime; ?.displayWithUpdateTime;
const factor = displayWithUpdateTime ? "updated_ts" : "created_ts"; const factor = displayWithUpdateTime ? "updated_ts" : "created_ts";
const filterDate = new Date(filter.value); const filterDate = new Date(filter.value);
......
...@@ -16,7 +16,7 @@ import useCurrentUser from "@/hooks/useCurrentUser"; ...@@ -16,7 +16,7 @@ import useCurrentUser from "@/hooks/useCurrentUser";
import useResponsiveWidth from "@/hooks/useResponsiveWidth"; import useResponsiveWidth from "@/hooks/useResponsiveWidth";
import { workspaceStore } from "@/store"; import { workspaceStore } from "@/store";
import { User_Role } from "@/types/proto/api/v1/user_service"; import { User_Role } from "@/types/proto/api/v1/user_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting"; import { WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service";
import { useTranslate } from "@/utils/i18n"; import { useTranslate } from "@/utils/i18n";
type SettingSection = "my-account" | "preference" | "member" | "system" | "memo-related" | "storage" | "sso"; type SettingSection = "my-account" | "preference" | "member" | "system" | "memo-related" | "storage" | "sso";
...@@ -73,7 +73,7 @@ const Setting = observer(() => { ...@@ -73,7 +73,7 @@ const Setting = observer(() => {
// Initial fetch for workspace settings. // Initial fetch for workspace settings.
(async () => { (async () => {
[WorkspaceSettingKey.MEMO_RELATED, WorkspaceSettingKey.STORAGE].forEach(async (key) => { [WorkspaceSetting_Key.MEMO_RELATED, WorkspaceSetting_Key.STORAGE].forEach(async (key) => {
await workspaceStore.fetchWorkspaceSetting(key); await workspaceStore.fetchWorkspaceSetting(key);
}); });
})(); })();
......
import { uniqBy } from "lodash-es"; import { uniqBy } from "lodash-es";
import { makeAutoObservable } from "mobx"; import { makeAutoObservable } from "mobx";
import { workspaceServiceClient } from "@/grpcweb"; import { workspaceServiceClient } from "@/grpcweb";
import { WorkspaceProfile } from "@/types/proto/api/v1/workspace_service"; import { WorkspaceProfile, WorkspaceSetting_Key } from "@/types/proto/api/v1/workspace_service";
import { WorkspaceGeneralSetting, WorkspaceMemoRelatedSetting, WorkspaceSetting } from "@/types/proto/api/v1/workspace_service"; import { WorkspaceGeneralSetting, WorkspaceMemoRelatedSetting, WorkspaceSetting } from "@/types/proto/api/v1/workspace_service";
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting";
import { isValidateLocale } from "@/utils/i18n"; import { isValidateLocale } from "@/utils/i18n";
import { workspaceSettingNamePrefix } from "./common"; import { workspaceSettingNamePrefix } from "./common";
...@@ -15,14 +14,14 @@ class LocalState { ...@@ -15,14 +14,14 @@ class LocalState {
get generalSetting() { get generalSetting() {
return ( return (
this.settings.find((setting) => setting.name === `${workspaceSettingNamePrefix}${WorkspaceSettingKey.GENERAL}`)?.generalSetting || this.settings.find((setting) => setting.name === `${workspaceSettingNamePrefix}${WorkspaceSetting_Key.GENERAL}`)?.generalSetting ||
WorkspaceGeneralSetting.fromPartial({}) WorkspaceGeneralSetting.fromPartial({})
); );
} }
get memoRelatedSetting() { get memoRelatedSetting() {
return ( return (
this.settings.find((setting) => setting.name === `${workspaceSettingNamePrefix}${WorkspaceSettingKey.MEMO_RELATED}`) this.settings.find((setting) => setting.name === `${workspaceSettingNamePrefix}${WorkspaceSetting_Key.MEMO_RELATED}`)
?.memoRelatedSetting || WorkspaceMemoRelatedSetting.fromPartial({}) ?.memoRelatedSetting || WorkspaceMemoRelatedSetting.fromPartial({})
); );
} }
...@@ -49,7 +48,7 @@ class LocalState { ...@@ -49,7 +48,7 @@ class LocalState {
const workspaceStore = (() => { const workspaceStore = (() => {
const state = new LocalState(); const state = new LocalState();
const fetchWorkspaceSetting = async (settingKey: WorkspaceSettingKey) => { const fetchWorkspaceSetting = async (settingKey: WorkspaceSetting_Key) => {
const setting = await workspaceServiceClient.getWorkspaceSetting({ name: `${workspaceSettingNamePrefix}${settingKey}` }); const setting = await workspaceServiceClient.getWorkspaceSetting({ name: `${workspaceSettingNamePrefix}${settingKey}` });
state.setPartial({ state.setPartial({
settings: uniqBy([setting, ...state.settings], "name"), settings: uniqBy([setting, ...state.settings], "name"),
...@@ -63,7 +62,7 @@ const workspaceStore = (() => { ...@@ -63,7 +62,7 @@ const workspaceStore = (() => {
}); });
}; };
const getWorkspaceSettingByKey = (settingKey: WorkspaceSettingKey) => { const getWorkspaceSettingByKey = (settingKey: WorkspaceSetting_Key) => {
return ( return (
state.settings.find((setting) => setting.name === `${workspaceSettingNamePrefix}${settingKey}`) || WorkspaceSetting.fromPartial({}) state.settings.find((setting) => setting.name === `${workspaceSettingNamePrefix}${settingKey}`) || WorkspaceSetting.fromPartial({})
); );
...@@ -80,7 +79,7 @@ const workspaceStore = (() => { ...@@ -80,7 +79,7 @@ const workspaceStore = (() => {
export const initialWorkspaceStore = async () => { export const initialWorkspaceStore = async () => {
const workspaceProfile = await workspaceServiceClient.getWorkspaceProfile({}); const workspaceProfile = await workspaceServiceClient.getWorkspaceProfile({});
// Prepare workspace settings. // Prepare workspace settings.
for (const key of [WorkspaceSettingKey.GENERAL, WorkspaceSettingKey.MEMO_RELATED]) { for (const key of [WorkspaceSetting_Key.GENERAL, WorkspaceSetting_Key.MEMO_RELATED]) {
await workspaceStore.fetchWorkspaceSetting(key); await workspaceStore.fetchWorkspaceSetting(key);
} }
......
...@@ -41,6 +41,61 @@ export interface WorkspaceSetting { ...@@ -41,6 +41,61 @@ export interface WorkspaceSetting {
memoRelatedSetting?: WorkspaceMemoRelatedSetting | undefined; memoRelatedSetting?: WorkspaceMemoRelatedSetting | undefined;
} }
export enum WorkspaceSetting_Key {
KEY_UNSPECIFIED = "KEY_UNSPECIFIED",
/** BASIC - BASIC is the key for basic settings. */
BASIC = "BASIC",
/** GENERAL - GENERAL is the key for general settings. */
GENERAL = "GENERAL",
/** STORAGE - STORAGE is the key for storage settings. */
STORAGE = "STORAGE",
/** MEMO_RELATED - MEMO_RELATED is the key for memo related settings. */
MEMO_RELATED = "MEMO_RELATED",
UNRECOGNIZED = "UNRECOGNIZED",
}
export function workspaceSetting_KeyFromJSON(object: any): WorkspaceSetting_Key {
switch (object) {
case 0:
case "KEY_UNSPECIFIED":
return WorkspaceSetting_Key.KEY_UNSPECIFIED;
case 1:
case "BASIC":
return WorkspaceSetting_Key.BASIC;
case 2:
case "GENERAL":
return WorkspaceSetting_Key.GENERAL;
case 3:
case "STORAGE":
return WorkspaceSetting_Key.STORAGE;
case 4:
case "MEMO_RELATED":
return WorkspaceSetting_Key.MEMO_RELATED;
case -1:
case "UNRECOGNIZED":
default:
return WorkspaceSetting_Key.UNRECOGNIZED;
}
}
export function workspaceSetting_KeyToNumber(object: WorkspaceSetting_Key): number {
switch (object) {
case WorkspaceSetting_Key.KEY_UNSPECIFIED:
return 0;
case WorkspaceSetting_Key.BASIC:
return 1;
case WorkspaceSetting_Key.GENERAL:
return 2;
case WorkspaceSetting_Key.STORAGE:
return 3;
case WorkspaceSetting_Key.MEMO_RELATED:
return 4;
case WorkspaceSetting_Key.UNRECOGNIZED:
default:
return -1;
}
}
export interface WorkspaceGeneralSetting { export interface WorkspaceGeneralSetting {
/** /**
* theme is the name of the selected theme. * theme is the name of the selected theme.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment