mirror of
https://github.com/outline/outline.git
synced 2026-08-03 13:27:25 +03:00
Rename Members -> Users (#13262)
This commit is contained in:
@@ -40,7 +40,7 @@ const Features = lazy(() => import("~/scenes/Settings/Features"));
|
||||
const Groups = lazy(() => import("~/scenes/Settings/Groups"));
|
||||
const Import = lazy(() => import("~/scenes/Settings/Import"));
|
||||
const Integrations = lazy(() => import("~/scenes/Settings/Integrations"));
|
||||
const Members = lazy(() => import("~/scenes/Settings/Members"));
|
||||
const Users = lazy(() => import("~/scenes/Settings/Users"));
|
||||
const Notifications = lazy(() => import("~/scenes/Settings/Notifications"));
|
||||
const Preferences = lazy(() => import("~/scenes/Settings/Preferences"));
|
||||
const Profile = lazy(() => import("~/scenes/Settings/Profile"));
|
||||
@@ -154,10 +154,10 @@ const useSettingsConfig = () => {
|
||||
icon: SparklesIcon,
|
||||
},
|
||||
{
|
||||
name: t("Members"),
|
||||
path: settingsPath("members"),
|
||||
component: Members.Component,
|
||||
preload: Members.preload,
|
||||
name: t("Users"),
|
||||
path: settingsPath("users"),
|
||||
component: Users.Component,
|
||||
preload: Users.preload,
|
||||
enabled: can.listUsers,
|
||||
group: t("Workspace"),
|
||||
icon: UserIcon,
|
||||
|
||||
@@ -276,7 +276,7 @@ class Notification extends Model {
|
||||
: this.document?.path;
|
||||
}
|
||||
case NotificationEventType.InviteAccepted: {
|
||||
return settingsPath("members");
|
||||
return settingsPath("users");
|
||||
}
|
||||
case NotificationEventType.Onboarding:
|
||||
case NotificationEventType.Features: {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Switch } from "react-router-dom";
|
||||
import { Redirect, Switch } from "react-router-dom";
|
||||
import Error404 from "~/scenes/Errors/Error404";
|
||||
import { createLazyComponent as lazy } from "~/components/LazyLoad";
|
||||
import Route from "~/components/ProfiledRoute";
|
||||
@@ -26,6 +26,12 @@ function SettingsRoutes() {
|
||||
component={config.component}
|
||||
/>
|
||||
))}
|
||||
{/* Members was renamed to Users, redirect for backwards compatibility */}
|
||||
<Redirect
|
||||
exact
|
||||
from={settingsPath("members")}
|
||||
to={settingsPath("users")}
|
||||
/>
|
||||
{/* TODO: Refactor these exceptions into config? */}
|
||||
<Route
|
||||
exact
|
||||
|
||||
@@ -23,13 +23,13 @@ import useQuery from "~/hooks/useQuery";
|
||||
import useStores from "~/hooks/useStores";
|
||||
import { useTableRequest } from "~/hooks/useTableRequest";
|
||||
import { ExportCSV } from "./components/ExportCSV";
|
||||
import { MembersTable } from "./components/MembersTable";
|
||||
import { UsersTable } from "./components/UsersTable";
|
||||
import { StickyFilters } from "./components/StickyFilters";
|
||||
import UserRoleFilter from "./components/UserRoleFilter";
|
||||
import UserStatusFilter from "./components/UserStatusFilter";
|
||||
import { HStack } from "~/components/primitives/HStack";
|
||||
|
||||
function Members() {
|
||||
function Users() {
|
||||
const appName = env.APP_NAME;
|
||||
const location = useLocation();
|
||||
const history = useHistory();
|
||||
@@ -106,7 +106,7 @@ function Members() {
|
||||
|
||||
useEffect(() => {
|
||||
if (error) {
|
||||
toast.error(t("Could not load members"));
|
||||
toast.error(t("Could not load users"));
|
||||
}
|
||||
}, [t, error]);
|
||||
|
||||
@@ -117,7 +117,7 @@ function Members() {
|
||||
|
||||
return (
|
||||
<Scene
|
||||
title={t("Members")}
|
||||
title={t("Users")}
|
||||
icon={<UserIcon />}
|
||||
actions={
|
||||
<>
|
||||
@@ -139,7 +139,7 @@ function Members() {
|
||||
}
|
||||
wide
|
||||
>
|
||||
<Heading>{t("Members")}</Heading>
|
||||
<Heading>{t("Users")}</Heading>
|
||||
<Text as="p" type="secondary">
|
||||
<Trans>
|
||||
Everyone that has signed into {{ appName }} is listed here. It’s
|
||||
@@ -167,7 +167,7 @@ function Members() {
|
||||
<ExportCSV reqParams={reqParams} />
|
||||
</StickyFilters>
|
||||
<ConditionalFade animate={!data}>
|
||||
<MembersTable
|
||||
<UsersTable
|
||||
data={data ?? []}
|
||||
sort={sort}
|
||||
canManage={can.update}
|
||||
@@ -228,4 +228,4 @@ const LargeUserRoleFilter = styled(UserRoleFilter)`
|
||||
height: 32px;
|
||||
`;
|
||||
|
||||
export default observer(Members);
|
||||
export default observer(Users);
|
||||
@@ -20,7 +20,7 @@ type Props = {
|
||||
};
|
||||
|
||||
/**
|
||||
* A button that exports all members to a CSV file.
|
||||
* A button that exports all users to a CSV file.
|
||||
*/
|
||||
export function ExportCSV({ reqParams }: Props) {
|
||||
const { t } = useTranslation();
|
||||
@@ -60,10 +60,10 @@ export function ExportCSV({ reqParams }: Props) {
|
||||
const csv = CSVHelper.convertToCSV(csvData, headers);
|
||||
|
||||
// Trigger download
|
||||
download(csv, "members.csv", "text/csv");
|
||||
toast.success(t("Members exported successfully"));
|
||||
download(csv, "users.csv", "text/csv");
|
||||
toast.success(t("Users exported successfully"));
|
||||
} catch {
|
||||
toast.error(t("Failed to export members"));
|
||||
toast.error(t("Failed to export users"));
|
||||
} finally {
|
||||
setIsExporting(false);
|
||||
}
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ const UserRowContextMenu = observer(function UserRowContextMenu({
|
||||
);
|
||||
});
|
||||
|
||||
export function MembersTable({ canManage, ...rest }: Props) {
|
||||
export function UsersTable({ canManage, ...rest }: Props) {
|
||||
const { t } = useTranslation();
|
||||
const currentUser = useCurrentUser();
|
||||
const isMobile = useMobile();
|
||||
@@ -108,9 +108,9 @@ describe("split view navigation", () => {
|
||||
it("closes the split view when navigating to a non-splitable route", () => {
|
||||
navigate("/doc/my-doc?split=%2Fdoc%2Fother-doc");
|
||||
|
||||
history.push("/settings/members");
|
||||
history.push("/settings/users");
|
||||
|
||||
expect(history.location.pathname).toEqual("/settings/members");
|
||||
expect(history.location.pathname).toEqual("/settings/users");
|
||||
expect(getSplitPath(history.location.search)).toBeUndefined();
|
||||
});
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ describe("isSplittablePath", () => {
|
||||
it("rejects routes that render their own chrome", () => {
|
||||
expect(isSplittablePath("/")).toBe(false);
|
||||
expect(isSplittablePath("/settings")).toBe(false);
|
||||
expect(isSplittablePath("/settings/members")).toBe(false);
|
||||
expect(isSplittablePath("/settings/users")).toBe(false);
|
||||
expect(isSplittablePath("/s/abc123")).toBe(false);
|
||||
expect(isSplittablePath("/logout")).toBe(false);
|
||||
expect(isSplittablePath("/oauth/authorize")).toBe(false);
|
||||
|
||||
@@ -746,6 +746,7 @@
|
||||
"Authentication": "Authentication",
|
||||
"Security": "Security",
|
||||
"AI": "AI",
|
||||
"Users": "Users",
|
||||
"API Keys": "API Keys",
|
||||
"Applications": "Applications",
|
||||
"Shared Links": "Shared Links",
|
||||
@@ -1228,8 +1229,8 @@
|
||||
"Start import": "Start import",
|
||||
"Added by": "Added by",
|
||||
"Date added": "Date added",
|
||||
"Members exported successfully": "Members exported successfully",
|
||||
"Failed to export members": "Failed to export members",
|
||||
"Users exported successfully": "Users exported successfully",
|
||||
"Failed to export users": "Failed to export users",
|
||||
"Download CSV": "Download CSV",
|
||||
"Processing": "Processing",
|
||||
"Completed": "Completed",
|
||||
@@ -1360,8 +1361,6 @@
|
||||
"Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.": "Quickly transfer your existing documents, pages, and files from other tools and services into {{appName}}. You can also drag and drop any HTML, Markdown, and text documents directly into Collections in the app.",
|
||||
"Recent imports": "Recent imports",
|
||||
"Configure a variety of integrations with third-party services.": "Configure a variety of integrations with third-party services.",
|
||||
"Could not load members": "Could not load members",
|
||||
"Everyone that has signed into {{appName}} is listed here. It’s possible that there are other users who have access through {{signinMethods}} but haven’t signed in yet.": "Everyone that has signed into {{appName}} is listed here. It’s possible that there are other users who have access through {{signinMethods}} but haven’t signed in yet.",
|
||||
"Receive a notification whenever a new document is published": "Receive a notification whenever a new document is published",
|
||||
"Document updated": "Document updated",
|
||||
"Receive a notification when a document you are subscribed to is edited": "Receive a notification when a document you are subscribed to is edited",
|
||||
@@ -1453,6 +1452,8 @@
|
||||
"Could not load templates": "Could not load templates",
|
||||
"Templates help your team create consistent and accurate documentation.": "Templates help your team create consistent and accurate documentation.",
|
||||
"No templates have been created yet": "No templates have been created yet",
|
||||
"Could not load users": "Could not load users",
|
||||
"Everyone that has signed into {{appName}} is listed here. It’s possible that there are other users who have access through {{signinMethods}} but haven’t signed in yet.": "Everyone that has signed into {{appName}} is listed here. It’s possible that there are other users who have access through {{signinMethods}} but haven’t signed in yet.",
|
||||
"{{ teamName }} is using {{ appName }} to share documents, please login to continue.": "{{ teamName }} is using {{ appName }} to share documents, please login to continue.",
|
||||
"A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.": "A confirmation code has been sent to your email address, please enter the code below to permanently destroy this workspace.",
|
||||
"Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.": "Deleting the <1>{{workspaceName}}</1> workspace will destroy all collections, documents, users, and associated data. You will be immediately logged out of {{appName}}.",
|
||||
|
||||
Reference in New Issue
Block a user