mirror of
https://github.com/aykhans/slash-e.git
synced 2025-07-04 04:23:16 +00:00
refactor: update visibilities
This commit is contained in:
@ -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">
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
)}
|
||||
|
@ -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>
|
||||
|
@ -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 || ""} />;
|
||||
|
@ -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>
|
||||
|
@ -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"
|
||||
|
@ -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>
|
||||
|
@ -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";
|
||||
}
|
||||
};
|
@ -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";
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user