* added lockedSMS to future routes * add orgMigrations routes to future * correct metadata * small fix * add orgMigrations to future * Move components to client components * Remove tRPC element from edit user RSC * Get username for meta * Remove suspense query * Remove orgMigrations from app router * Type fix * Revert "Remove suspense query" This reverts commit eadd814f6e4a5d6856d9218342b7909c22fe62c6. * Handle suspenseQuery in app router * User edit page, fetch data server side * Update yarn.lock * Export getFixedT * Set PageWrapper as root layout for settings * Settings Layout accepts strings for shell heading * Add OOO to app router settings * Refactor layout for my-account pages * Remove instances of pages router from my-account * Refactor security pages * Add billing to app router * Add admin API link to layout * Add api keys page * Webhooks WIP * Refactor SettingsHeader to client component * Add webhook pages * Refactor API keys page * Add admin app page * Type fix * fix types * fix developer/webhooks/[id] param value type error * remove unnecessary code * do not pass t prop to CreateNewWebhookButton * fix type errors in webhook-edit-view * fix the remaining type errors * do not use prisma directly in generateMetadata * remove use client if unnecessary * Remove unused shell heading from SettingsLayoutAppDir * improve metadata * fix billing page * fix import in settings/teams * Use next `notFound()` * fix type check * fix type check * remove unused code * Fix calendar setting page * Separate settings pages into route groups * Refactor admin settings pages * Remove meta instance from billing page route * Update settings layoutAppDir * Refactor developer settings pages * Refactor out of office * Refactor my account settings * Refactor admin api page * Refactor security pages * Type fix * fix styling in settings layout --------- Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com> Co-authored-by: Omar López <zomars@me.com> Co-authored-by: Benny Joo <sldisek783@gmail.com>
82 lines
2.3 KiB
TypeScript
82 lines
2.3 KiB
TypeScript
"use client";
|
|
|
|
import type { Team } from "@prisma/client";
|
|
import { useRouter } from "next/navigation";
|
|
import { useForm } from "react-hook-form";
|
|
import type { z } from "zod";
|
|
|
|
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
|
import type { orgSettingsSchema } from "@calcom/prisma/zod-utils";
|
|
import { trpc } from "@calcom/trpc/react";
|
|
import { Button, Form, TextField, showToast } from "@calcom/ui";
|
|
|
|
type FormValues = {
|
|
name: Team["name"];
|
|
slug: Team["slug"];
|
|
organizationSettings: z.infer<typeof orgSettingsSchema>;
|
|
};
|
|
|
|
export const OrgForm = ({
|
|
org,
|
|
}: {
|
|
org: FormValues & {
|
|
id: Team["id"];
|
|
};
|
|
}) => {
|
|
const { t } = useLocale();
|
|
const router = useRouter();
|
|
const utils = trpc.useUtils();
|
|
const mutation = trpc.viewer.organizations.adminUpdate.useMutation({
|
|
onSuccess: async () => {
|
|
await Promise.all([
|
|
utils.viewer.organizations.adminGetAll.invalidate(),
|
|
utils.viewer.organizations.adminGet.invalidate({
|
|
id: org.id,
|
|
}),
|
|
]);
|
|
showToast(t("org_has_been_processed"), "success");
|
|
router.replace(`/settings/admin/organizations`);
|
|
},
|
|
onError: (err) => {
|
|
showToast(err.message, "error");
|
|
},
|
|
});
|
|
|
|
const form = useForm<FormValues>({
|
|
defaultValues: org,
|
|
});
|
|
|
|
const onSubmit = (values: FormValues) => {
|
|
mutation.mutate({
|
|
id: org.id,
|
|
...values,
|
|
organizationSettings: {
|
|
...org.organizationSettings,
|
|
orgAutoAcceptEmail: values.organizationSettings?.orgAutoAcceptEmail,
|
|
},
|
|
});
|
|
};
|
|
|
|
return (
|
|
<Form form={form} className="space-y-4" handleSubmit={onSubmit}>
|
|
<TextField label="Name" placeholder="example" required {...form.register("name")} />
|
|
<TextField label="Slug" placeholder="example" required {...form.register("slug")} />
|
|
<p className="text-default mt-2 text-sm">
|
|
Changing the slug would delete the previous organization domain and DNS and setup new domain and DNS
|
|
for the organization.
|
|
</p>
|
|
<TextField
|
|
label="Domain for which invitations are auto-accepted"
|
|
placeholder="abc.com"
|
|
required
|
|
{...form.register("organizationSettings.orgAutoAcceptEmail")}
|
|
/>
|
|
<Button type="submit" color="primary" loading={mutation.isPending}>
|
|
{t("save")}
|
|
</Button>
|
|
</Form>
|
|
);
|
|
};
|
|
|
|
export default OrgForm;
|