From caf054bae73b7d8f1cda42864b28309393f3e5d8 Mon Sep 17 00:00:00 2001 From: boojack Date: Thu, 16 Feb 2023 21:21:39 +0800 Subject: [PATCH] chore: add beta badge to storage (#1099) * chore: add beta badge to storage * chore: update --- server/memo.go | 2 +- web/src/components/BetaBadge.tsx | 10 +++++++--- web/src/components/SettingDialog.tsx | 18 +++++++++++------- web/src/components/Settings/SystemSection.tsx | 7 ++++++- web/src/less/base-dialog.less | 2 +- web/src/less/beta-badge.less | 3 --- web/src/less/memo-editor.less | 2 +- web/src/store/module/global.ts | 3 +++ 8 files changed, 30 insertions(+), 17 deletions(-) delete mode 100644 web/src/less/beta-badge.less diff --git a/server/memo.go b/server/memo.go index 503afa0a..4daea4da 100644 --- a/server/memo.go +++ b/server/memo.go @@ -57,7 +57,7 @@ func (s *Server) registerMemoRoutes(g *echo.Group) { disablePublicMemosSystemSetting, err := s.Store.FindSystemSetting(ctx, &api.SystemSettingFind{ Name: api.SystemSettingDisablePublicMemosName, }) - if err != nil { + if err != nil && common.ErrorCode(err) != common.NotFound { return echo.NewHTTPError(http.StatusInternalServerError, "Failed to find system setting").SetInternal(err) } if disablePublicMemosSystemSetting != nil { diff --git a/web/src/components/BetaBadge.tsx b/web/src/components/BetaBadge.tsx index e9ebbd66..aebb7534 100644 --- a/web/src/components/BetaBadge.tsx +++ b/web/src/components/BetaBadge.tsx @@ -1,5 +1,3 @@ -import "../less/beta-badge.less"; - interface Props { className?: string; } @@ -7,7 +5,13 @@ interface Props { const BetaBadge: React.FC = (props: Props) => { const { className } = props; - return beta; + return ( + + Beta + + ); }; export default BetaBadge; diff --git a/web/src/components/SettingDialog.tsx b/web/src/components/SettingDialog.tsx index 8e351c64..98d53ed9 100644 --- a/web/src/components/SettingDialog.tsx +++ b/web/src/components/SettingDialog.tsx @@ -1,6 +1,6 @@ import { useState } from "react"; import { useTranslation } from "react-i18next"; -import { useUserStore } from "../store/module"; +import { useGlobalStore, useUserStore } from "../store/module"; import Icon from "./Icon"; import { generateDialog } from "./Dialog"; import MyAccountSection from "./Settings/MyAccountSection"; @@ -8,6 +8,7 @@ import PreferencesSection from "./Settings/PreferencesSection"; import MemberSection from "./Settings/MemberSection"; import SystemSection from "./Settings/SystemSection"; import StorageSection from "./Settings/StorageSection"; +import BetaBadge from "./BetaBadge"; import "../less/setting-dialog.less"; type Props = DialogProps; @@ -21,6 +22,7 @@ interface State { const SettingDialog: React.FC = (props: Props) => { const { destroy } = props; const { t } = useTranslation(); + const globalStore = useGlobalStore(); const userStore = useUserStore(); const user = userStore.state.user; const [state, setState] = useState({ @@ -70,12 +72,14 @@ const SettingDialog: React.FC = (props: Props) => { > 🛠️ {t("setting.system")} - handleSectionSelectorItemClick("storage")} - className={`section-item ${state.selectedSection === "storage" ? "selected" : ""}`} - > - 💾 {t("setting.storage")} - + {globalStore.isDev() && ( + handleSectionSelectorItemClick("storage")} + className={`section-item ${state.selectedSection === "storage" ? "selected" : ""}`} + > + 💾 {t("setting.storage")} + + )} ) : null} diff --git a/web/src/components/Settings/SystemSection.tsx b/web/src/components/Settings/SystemSection.tsx index 41921d02..be4a64ab 100644 --- a/web/src/components/Settings/SystemSection.tsx +++ b/web/src/components/Settings/SystemSection.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import { Button, Switch, Textarea } from "@mui/joy"; +import { Button, Divider, Switch, Textarea } from "@mui/joy"; import { useGlobalStore } from "../../store/module"; import * as api from "../../helpers/api"; import toastHelper from "../Toast"; @@ -157,6 +157,11 @@ const SystemSection = () => { {t("setting.system-section.disable-public-memos")} handleDisablePublicMemosChanged(event.target.checked)} /> +
+ Storage + handleDisablePublicMemosChanged(event.target.checked)} /> +
+
{t("setting.system-section.additional-style")} diff --git a/web/src/less/base-dialog.less b/web/src/less/base-dialog.less index 40b39154..4c1634be 100644 --- a/web/src/less/base-dialog.less +++ b/web/src/less/base-dialog.less @@ -1,5 +1,5 @@ .dialog-wrapper { - @apply fixed top-0 left-0 flex flex-col justify-start items-center w-full h-full pt-16 pb-8 px-4 z-100 overflow-x-hidden overflow-y-scroll bg-transparent transition-all hide-scrollbar; + @apply fixed top-0 left-0 flex flex-col justify-start items-center w-full h-full pt-16 pb-8 px-4 z-1000 overflow-x-hidden overflow-y-scroll bg-transparent transition-all hide-scrollbar; &.showup { background-color: rgba(0, 0, 0, 0.6); diff --git a/web/src/less/beta-badge.less b/web/src/less/beta-badge.less deleted file mode 100644 index 15cf2e59..00000000 --- a/web/src/less/beta-badge.less +++ /dev/null @@ -1,3 +0,0 @@ -.beta-badge { - @apply px-2 py-1 text-xs border rounded-full text-gray-500; -} diff --git a/web/src/less/memo-editor.less b/web/src/less/memo-editor.less index c700337f..bcabac54 100644 --- a/web/src/less/memo-editor.less +++ b/web/src/less/memo-editor.less @@ -52,7 +52,7 @@ @apply hidden flex-row justify-start items-start flex-wrap absolute top-6 left-0 mt-1 p-1 z-1 rounded w-52 h-auto max-h-48 overflow-y-auto font-mono shadow bg-zinc-200 dark:bg-zinc-600; > .item-container { - @apply w-auto max-w-full truncate text-black dark:text-gray-300 cursor-pointer rounded text-sm leading-6 px-2 truncate hover:bg-zinc-300 dark:hover:bg-zinc-700 shrink-0; + @apply w-auto max-w-full truncate text-black dark:text-gray-300 cursor-pointer rounded text-sm leading-6 px-2 hover:bg-zinc-300 dark:hover:bg-zinc-700 shrink-0; } > .tip-text { diff --git a/web/src/store/module/global.ts b/web/src/store/module/global.ts index f69ecc8c..458ec6ab 100644 --- a/web/src/store/module/global.ts +++ b/web/src/store/module/global.ts @@ -64,6 +64,9 @@ export const useGlobalStore = () => { getState: () => { return store.getState().global; }, + isDev: () => { + return state.systemStatus.profile.mode === "dev"; + }, fetchSystemStatus: async () => { const { data: systemStatus } = (await api.getSystemStatus()).data; store.dispatch(setGlobalState({ systemStatus: systemStatus }));