Rename Members -> Users (#13262)

This commit is contained in:
Tom Moor
2026-08-02 14:46:20 -04:00
committed by GitHub
parent 7992179978
commit d6d11171c3
9 changed files with 33 additions and 26 deletions
+5 -5
View File
@@ -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,
+1 -1
View File
@@ -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: {
+7 -1
View File
@@ -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. Its
@@ -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);
+4 -4
View File
@@ -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);
}
@@ -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();
+2 -2
View File
@@ -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();
});
+1 -1
View File
@@ -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);
+5 -4
View File
@@ -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. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent 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. Its possible that there are other users who have access through {{signinMethods}} but havent signed in yet.": "Everyone that has signed into {{appName}} is listed here. Its possible that there are other users who have access through {{signinMethods}} but havent 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}}.",