use niceId for client routes

This commit is contained in:
miloschwartz
2025-12-06 20:31:09 -05:00
parent 8a8c0edad3
commit d7e06161a8
22 changed files with 375 additions and 222 deletions

View File

@@ -34,7 +34,8 @@ import { useForm } from "react-hook-form";
import { z } from "zod";
const GeneralFormSchema = z.object({
name: z.string().nonempty("Name is required")
name: z.string().nonempty("Name is required"),
niceId: z.string().min(1).max(255).optional()
});
type GeneralFormValues = z.infer<typeof GeneralFormSchema>;
@@ -49,7 +50,8 @@ export default function GeneralPage() {
const form = useForm({
resolver: zodResolver(GeneralFormSchema),
defaultValues: {
name: client?.name
name: client?.name,
niceId: client?.niceId || ""
},
mode: "onChange"
});
@@ -84,10 +86,11 @@ export default function GeneralPage() {
try {
await api.post(`/client/${client?.clientId}`, {
name: data.name
name: data.name,
niceId: data.niceId
});
updateClient({ name: data.name });
updateClient({ name: data.name, niceId: data.niceId });
toast({
title: t("clientUpdated"),
@@ -139,6 +142,28 @@ export default function GeneralPage() {
</FormItem>
)}
/>
<FormField
control={form.control}
name="niceId"
render={({ field }) => (
<FormItem>
<FormLabel>
{t("identifier")}
</FormLabel>
<FormControl>
<Input
{...field}
placeholder={t(
"enterIdentifier"
)}
className="flex-1"
/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
</form>
</Form>
</SettingsSectionForm>

View File

@@ -4,7 +4,6 @@ import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import { internal } from "@app/lib/api";
import { authCookieHeader } from "@app/lib/api/cookies";
import ClientProvider from "@app/providers/ClientProvider";
import { build } from "@server/build";
import { GetClientResponse } from "@server/routers/client";
import { AxiosResponse } from "axios";
import { getTranslations } from "next-intl/server";
@@ -12,7 +11,7 @@ import { redirect } from "next/navigation";
type SettingsLayoutProps = {
children: React.ReactNode;
params: Promise<{ clientId: number | string; orgId: string }>;
params: Promise<{ niceId: number | string; orgId: string }>;
};
export default async function SettingsLayout(props: SettingsLayoutProps) {
@@ -22,8 +21,9 @@ export default async function SettingsLayout(props: SettingsLayoutProps) {
let client = null;
try {
console.log("making request to ", `/org/${params.orgId}/client/${params.niceId}`);
const res = await internal.get<AxiosResponse<GetClientResponse>>(
`/client/${params.clientId}`,
`/org/${params.orgId}/client/${params.niceId}`,
await authCookieHeader()
);
client = res.data.data;
@@ -37,11 +37,11 @@ export default async function SettingsLayout(props: SettingsLayoutProps) {
const navItems = [
{
title: t("general"),
href: `/{orgId}/settings/clients/machine/{clientId}/general`
href: `/{orgId}/settings/clients/machine/{niceId}/general`
},
{
title: t("credentials"),
href: `/{orgId}/settings/clients/machine/{clientId}/credentials`
href: `/{orgId}/settings/clients/machine/{niceId}/credentials`
}
];

View File

@@ -1,10 +1,10 @@
import { redirect } from "next/navigation";
export default async function ClientPage(props: {
params: Promise<{ orgId: string; clientId: number | string }>;
params: Promise<{ orgId: string; niceId: number | string }>;
}) {
const params = await props.params;
redirect(
`/${params.orgId}/settings/clients/machine/${params.clientId}/general`
`/${params.orgId}/settings/clients/machine/${params.niceId}/general`
);
}

View File

@@ -276,7 +276,7 @@ export default function Page() {
if (res && res.status === 201) {
const data = res.data.data;
router.push(`/${orgId}/settings/clients/machine/${data.clientId}`);
router.push(`/${orgId}/settings/clients/machine/${data.niceId}`);
}
setCreateLoading(false);

View File

@@ -56,7 +56,8 @@ export default async function ClientsPage(props: ClientsPageProps) {
olmUpdateAvailable: client.olmUpdateAvailable || false,
userId: client.userId,
username: client.username,
userEmail: client.userEmail
userEmail: client.userEmail,
niceId: client.niceId
};
};

View File

@@ -66,7 +66,8 @@ export default async function ClientResourcesPage(
destination: siteResource.destination,
// destinationPort: siteResource.destinationPort,
alias: siteResource.alias || null,
siteNiceId: siteResource.siteNiceId
siteNiceId: siteResource.siteNiceId,
niceId: siteResource.niceId
};
}
);