Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions src/api/ess.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,38 @@ export const useEssVersion = (synapseRoot: string): null | SemVer => {
if (!data) return null;
return parseSemver(data.version);
};

const AdminbotResponse = v.object({
access_token: v.string(),
device_id: v.string(),
mxid: v.string(),
secure_passphrase: v.optional(v.string()),
ui_address: v.pipe(v.string(), v.url()),
});

export type AdminbotResponse = v.InferOutput<typeof AdminbotResponse>;

export const adminbotQuery = (synapseRoot: string) =>
queryOptions({
queryKey: ["ess", "adminbot", synapseRoot],
queryFn: async ({ client, signal }) => {
const adminbotUrl = new URL("/_synapse/ess/adminbot", synapseRoot);
const token = await accessToken(client, signal);
const response = await fetch(adminbotUrl, {
headers: {
Authorization: `Bearer ${token}`,
},
signal,
});

if (response.status === 404) {
return null;
}

ensureResponseOk(response);

const adminbotData = v.parse(AdminbotResponse, await response.json());

return adminbotData;
},
});
8 changes: 8 additions & 0 deletions src/components/logo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,14 @@ export const ElementLogo: React.FC<ElementLogoProps> = ({
);
};

export const ProBadge: React.FC = () => (
<div data-variant="pro">
<div className={styles["badge"]} aria-hidden="true">
<ProBadgeText />
</div>
</div>
);

/** The "PRO" text for the badge */
const ProBadgeText: React.FC<React.ComponentProps<"svg">> = (props) => (
<svg
Expand Down
30 changes: 30 additions & 0 deletions src/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,30 @@ export const actionClose = defineMessage({
description: "Label for a 'close' action/button",
});

export const actionConfigure = defineMessage({
id: "action.configure",
defaultMessage: "Configure",
description: "Label for a configure action/button",
});

export const actionCopy = defineMessage({
id: "action.copy",
defaultMessage: "Copy",
description: "Label for a copy action/button",
});

export const actionGoBack = defineMessage({
id: "action.go_back",
defaultMessage: "Go back",
description: "Label for a go back action/button",
});

export const actionLearnMore = defineMessage({
id: "action.learn_more",
defaultMessage: "Learn more",
description: "Label for a learn more action/button",
});

export const actionRetry = defineMessage({
id: "action.retry",
defaultMessage: "Retry",
Expand All @@ -46,12 +64,24 @@ export const actionRemove = defineMessage({
description: "Label for the remove action/button",
});

export const actionSignIn = defineMessage({
id: "action.sign_in",
defaultMessage: "Sign in",
description: "Label for the sign in action/button",
});

export const actionSignOut = defineMessage({
id: "action.sign_out",
defaultMessage: "Sign out",
description: "Label for the sign out menu item",
});

export const actionUpgrade = defineMessage({
id: "action.upgrade",
defaultMessage: "Upgrade",
description: "Label for the upgrade action/button",
});

export const commonEmailAddress = defineMessage({
id: "common.email_address",
defaultMessage: "Email address",
Expand Down
21 changes: 21 additions & 0 deletions src/routeTree.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { Route as ConsoleUsersRouteImport } from './routes/_console.users'
import { Route as ConsoleRoomsRouteImport } from './routes/_console.rooms'
import { Route as ConsoleRegistrationTokensRouteImport } from './routes/_console.registration-tokens'
import { Route as ConsolePersonalTokensRouteImport } from './routes/_console.personal-tokens'
import { Route as ConsoleModerationRouteImport } from './routes/_console.moderation'
import { Route as AuthLoginIndexRouteImport } from './routes/_auth.login.index'
import { Route as ConsoleUsersUserIdRouteImport } from './routes/_console.users.$userId'
import { Route as ConsoleRoomsRoomIdRouteImport } from './routes/_console.rooms.$roomId'
Expand Down Expand Up @@ -62,6 +63,11 @@ const ConsolePersonalTokensRoute = ConsolePersonalTokensRouteImport.update({
path: '/personal-tokens',
getParentRoute: () => ConsoleRoute,
} as any)
const ConsoleModerationRoute = ConsoleModerationRouteImport.update({
id: '/moderation',
path: '/moderation',
getParentRoute: () => ConsoleRoute,
} as any)
const AuthLoginIndexRoute = AuthLoginIndexRouteImport.update({
id: '/login/',
path: '/login/',
Expand Down Expand Up @@ -92,6 +98,7 @@ const ConsolePersonalTokensTokenIdRoute =

export interface FileRoutesByFullPath {
'/callback': typeof CallbackRoute
'/moderation': typeof ConsoleModerationRoute
'/personal-tokens': typeof ConsolePersonalTokensRouteWithChildren
'/registration-tokens': typeof ConsoleRegistrationTokensRouteWithChildren
'/rooms': typeof ConsoleRoomsRouteWithChildren
Expand All @@ -105,6 +112,7 @@ export interface FileRoutesByFullPath {
}
export interface FileRoutesByTo {
'/callback': typeof CallbackRoute
'/moderation': typeof ConsoleModerationRoute
'/personal-tokens': typeof ConsolePersonalTokensRouteWithChildren
'/registration-tokens': typeof ConsoleRegistrationTokensRouteWithChildren
'/rooms': typeof ConsoleRoomsRouteWithChildren
Expand All @@ -121,6 +129,7 @@ export interface FileRoutesById {
'/_auth': typeof AuthRouteWithChildren
'/_console': typeof ConsoleRouteWithChildren
'/callback': typeof CallbackRoute
'/_console/moderation': typeof ConsoleModerationRoute
'/_console/personal-tokens': typeof ConsolePersonalTokensRouteWithChildren
'/_console/registration-tokens': typeof ConsoleRegistrationTokensRouteWithChildren
'/_console/rooms': typeof ConsoleRoomsRouteWithChildren
Expand All @@ -136,6 +145,7 @@ export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
fullPaths:
| '/callback'
| '/moderation'
| '/personal-tokens'
| '/registration-tokens'
| '/rooms'
Expand All @@ -149,6 +159,7 @@ export interface FileRouteTypes {
fileRoutesByTo: FileRoutesByTo
to:
| '/callback'
| '/moderation'
| '/personal-tokens'
| '/registration-tokens'
| '/rooms'
Expand All @@ -164,6 +175,7 @@ export interface FileRouteTypes {
| '/_auth'
| '/_console'
| '/callback'
| '/_console/moderation'
| '/_console/personal-tokens'
| '/_console/registration-tokens'
| '/_console/rooms'
Expand Down Expand Up @@ -240,6 +252,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof ConsolePersonalTokensRouteImport
parentRoute: typeof ConsoleRoute
}
'/_console/moderation': {
id: '/_console/moderation'
path: '/moderation'
fullPath: '/moderation'
preLoaderRoute: typeof ConsoleModerationRouteImport
parentRoute: typeof ConsoleRoute
}
'/_auth/login/': {
id: '/_auth/login/'
path: '/login'
Expand Down Expand Up @@ -341,6 +360,7 @@ const ConsoleUsersRouteWithChildren = ConsoleUsersRoute._addFileChildren(
)

interface ConsoleRouteChildren {
ConsoleModerationRoute: typeof ConsoleModerationRoute
ConsolePersonalTokensRoute: typeof ConsolePersonalTokensRouteWithChildren
ConsoleRegistrationTokensRoute: typeof ConsoleRegistrationTokensRouteWithChildren
ConsoleRoomsRoute: typeof ConsoleRoomsRouteWithChildren
Expand All @@ -349,6 +369,7 @@ interface ConsoleRouteChildren {
}

const ConsoleRouteChildren: ConsoleRouteChildren = {
ConsoleModerationRoute: ConsoleModerationRoute,
ConsolePersonalTokensRoute: ConsolePersonalTokensRouteWithChildren,
ConsoleRegistrationTokensRoute: ConsoleRegistrationTokensRouteWithChildren,
ConsoleRoomsRoute: ConsoleRoomsRouteWithChildren,
Expand Down
Loading
Loading