refactor: update visibilities

This commit is contained in:
Steven
2024-08-31 22:04:24 +08:00
parent 8511c09c63
commit b74e4f90c1
43 changed files with 693 additions and 775 deletions

View File

@ -8,7 +8,6 @@ import { useCollectionStore, useShortcutStore, useWorkspaceStore } from "@/store
import { Collection } from "@/types/proto/api/v1/collection_service";
import { Visibility } from "@/types/proto/api/v1/common";
import { Shortcut } from "@/types/proto/api/v1/shortcut_service";
import { convertVisibilityFromPb } from "@/utils/visibility";
import Icon from "./Icon";
import ShortcutView from "./ShortcutView";
@ -213,13 +212,12 @@ const CreateCollectionDrawer: React.FC<Props> = (props: Props) => {
<span className="mb-2">Visibility</span>
<div className="w-full flex flex-row justify-start items-center text-base">
<RadioGroup orientation="horizontal" value={state.collectionCreate.visibility} onChange={handleVisibilityInputChange}>
<Radio value={Visibility.PRIVATE} label={t(`shortcut.visibility.private.self`)} />
<Radio value={Visibility.WORKSPACE} label={t(`shortcut.visibility.workspace.self`)} />
<Radio value={Visibility.PUBLIC} label={t(`shortcut.visibility.public.self`)} />
</RadioGroup>
</div>
<p className="mt-3 text-sm text-gray-500 w-full bg-gray-100 border border-gray-200 dark:bg-zinc-800 dark:border-zinc-700 dark:text-gray-400 px-2 py-1 rounded-md">
{t(`shortcut.visibility.${convertVisibilityFromPb(state.collectionCreate.visibility).toLowerCase()}.description`)}
{t(`shortcut.visibility.${state.collectionCreate.visibility.toLowerCase()}.description`)}
</p>
</div>
<div className="w-full flex flex-col justify-start items-start mb-3">

View File

@ -21,7 +21,6 @@ import { useShortcutStore, useWorkspaceStore } from "@/stores";
import { getShortcutUpdateMask } from "@/stores/shortcut";
import { Visibility } from "@/types/proto/api/v1/common";
import { Shortcut } from "@/types/proto/api/v1/shortcut_service";
import { convertVisibilityFromPb } from "@/utils/visibility";
import Icon from "./Icon";
interface Props {
@ -295,13 +294,12 @@ const CreateShortcutDrawer: React.FC<Props> = (props: Props) => {
<span className="mb-2">Visibility</span>
<div className="w-full flex flex-row justify-start items-center text-base">
<RadioGroup orientation="horizontal" value={state.shortcutCreate.visibility} onChange={handleVisibilityInputChange}>
<Radio value={Visibility.PRIVATE} label={t(`shortcut.visibility.private.self`)} />
<Radio value={Visibility.WORKSPACE} label={t(`shortcut.visibility.workspace.self`)} />
<Radio value={Visibility.PUBLIC} label={t(`shortcut.visibility.public.self`)} />
</RadioGroup>
</div>
<p className="mt-3 text-sm text-gray-500 w-full bg-gray-100 border border-gray-200 dark:bg-zinc-800 dark:border-zinc-700 dark:text-gray-400 px-2 py-1 rounded-md">
{t(`shortcut.visibility.${convertVisibilityFromPb(state.shortcutCreate.visibility).toLowerCase()}.description`)}
{t(`shortcut.visibility.${state.shortcutCreate.visibility.toLowerCase()}.description`)}
</p>
</div>
<Divider className="text-gray-500">More</Divider>

View File

@ -1,6 +1,5 @@
import { useTranslation } from "react-i18next";
import { useViewStore } from "@/stores";
import { convertVisibilityFromPb } from "@/utils/visibility";
import Icon from "./Icon";
import VisibilityIcon from "./VisibilityIcon";
@ -33,7 +32,7 @@ const FilterView = () => {
onClick={() => viewStore.setFilter({ visibility: undefined })}
>
<VisibilityIcon className="w-4 h-auto mr-1" visibility={filter.visibility} />
{t(`shortcut.visibility.${convertVisibilityFromPb(filter.visibility).toLowerCase()}.self`)}
{t(`shortcut.visibility.${filter.visibility.toLowerCase()}.self`)}
<Icon.X className="w-4 h-auto ml-1" />
</button>
)}

View File

@ -8,7 +8,6 @@ import { Link } from "react-router-dom";
import { absolutifyLink } from "@/helpers/utils";
import { useUserStore, useViewStore } from "@/stores";
import { Shortcut } from "@/types/proto/api/v1/shortcut_service";
import { convertVisibilityFromPb } from "@/utils/visibility";
import Icon from "./Icon";
import LinkFavicon from "./LinkFavicon";
import ShortcutActionsDropdown from "./ShortcutActionsDropdown";
@ -117,18 +116,13 @@ const ShortcutCard = (props: Props) => {
alt={creator.nickname.toUpperCase()}
></Avatar>
</Tooltip>
<Tooltip
title={t(`shortcut.visibility.${convertVisibilityFromPb(shortcut.visibility).toLowerCase()}.description`)}
variant="solid"
placement="top"
arrow
>
<Tooltip title={t(`shortcut.visibility.${shortcut.visibility.toLowerCase()}.description`)} variant="solid" placement="top" arrow>
<div
className="w-auto leading-5 flex flex-row justify-start items-center flex-nowrap whitespace-nowrap cursor-pointer text-gray-400 text-sm"
onClick={() => viewStore.setFilter({ visibility: shortcut.visibility })}
>
<VisibilityIcon className="w-4 h-auto mr-1 opacity-70" visibility={shortcut.visibility} />
{t(`shortcut.visibility.${convertVisibilityFromPb(shortcut.visibility).toLowerCase()}.self`)}
{t(`shortcut.visibility.${shortcut.visibility.toLowerCase()}.self`)}
</div>
</Tooltip>
<Tooltip title="View count" variant="solid" placement="top" arrow>

View File

@ -8,9 +8,7 @@ interface Props {
const VisibilityIcon = (props: Props) => {
const { visibility, className } = props;
if (visibility === Visibility.PRIVATE) {
return <Icon.Lock className={className || ""} />;
} else if (visibility === Visibility.WORKSPACE) {
if (visibility === Visibility.WORKSPACE) {
return <Icon.Building2 className={className || ""} />;
} else if (visibility === Visibility.PUBLIC) {
return <Icon.Globe2 className={className || ""} />;

View File

@ -135,7 +135,6 @@ const WorkspaceGeneralSettingSection = () => {
defaultValue={getDefaultVisibility(workspaceSetting.defaultVisibility)}
onChange={(_, value) => handleDefaultVisibilityChange(value as Visibility)}
>
<Option value={Visibility.PRIVATE}>{t(`shortcut.visibility.private.self`)}</Option>
<Option value={Visibility.WORKSPACE}>{t(`shortcut.visibility.workspace.self`)}</Option>
<Option value={Visibility.PUBLIC}>{t(`shortcut.visibility.public.self`)}</Option>
</Select>

View File

@ -7,7 +7,6 @@ import CreateUserDialog from "@/components/CreateUserDialog";
import Icon from "@/components/Icon";
import { useUserStore } from "@/stores";
import { User } from "@/types/proto/api/v1/user_service";
import { convertRoleFromPb } from "@/utils/user";
const WorkspaceMembersSection = () => {
const { t } = useTranslation();
@ -83,7 +82,7 @@ const WorkspaceMembersSection = () => {
<tr key={user.email}>
<td className="whitespace-nowrap py-2 pl-4 pr-3 text-sm text-gray-900 dark:text-gray-500">{user.nickname}</td>
<td className="whitespace-nowrap px-3 py-2 text-sm text-gray-500">{user.email}</td>
<td className="whitespace-nowrap px-3 py-2 text-sm text-gray-500">{convertRoleFromPb(user.role)}</td>
<td className="whitespace-nowrap px-3 py-2 text-sm text-gray-500">{user.role}</td>
<td className="relative whitespace-nowrap py-2 pl-3 pr-4 text-right text-sm">
<IconButton
size="sm"

View File

@ -19,7 +19,6 @@ import useNavigateTo from "@/hooks/useNavigateTo";
import { useUserStore, useShortcutStore } from "@/stores";
import { Shortcut } from "@/types/proto/api/v1/shortcut_service";
import { Role } from "@/types/proto/api/v1/user_service";
import { convertVisibilityFromPb } from "@/utils/visibility";
interface State {
showEditDrawer: boolean;
@ -169,15 +168,10 @@ const ShortcutDetail = () => {
<span className="max-w-[4rem] sm:max-w-[6rem] truncate">{creator.nickname}</span>
</div>
</Tooltip>
<Tooltip
title={t(`shortcut.visibility.${convertVisibilityFromPb(shortcut.visibility).toLowerCase()}.description`)}
variant="solid"
placement="top"
arrow
>
<Tooltip title={t(`shortcut.visibility.${shortcut.visibility.toLowerCase()}.description`)} variant="solid" placement="top" arrow>
<div className="w-auto px-2 leading-6 flex flex-row justify-start items-center border rounded-full text-gray-500 text-sm dark:border-zinc-800">
<VisibilityIcon className="w-4 h-auto mr-1" visibility={shortcut.visibility} />
{t(`shortcut.visibility.${convertVisibilityFromPb(shortcut.visibility).toLowerCase()}.self`)}
{t(`shortcut.visibility.${shortcut.visibility.toLowerCase()}.self`)}
</div>
</Tooltip>
<Tooltip title="View count" variant="solid" placement="top" arrow>

View File

@ -1,11 +0,0 @@
import { Role } from "@/types/proto/api/v1/user_service";
export const convertRoleFromPb = (role: Role): string => {
if (role === Role.ADMIN) {
return "Admin";
} else if (role === Role.USER) {
return "User";
} else {
return "Unknown";
}
};

View File

@ -1,13 +0,0 @@
import { Visibility } from "@/types/proto/api/v1/common";
export const convertVisibilityFromPb = (visibility: Visibility): string => {
if (visibility === Visibility.PRIVATE) {
return "PRIVATE";
} else if (visibility === Visibility.WORKSPACE) {
return "WORKSPACE";
} else if (visibility === Visibility.PUBLIC) {
return "PUBLIC";
} else {
return "PRIVATE";
}
};