diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/list-reports.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/list-reports.tsx index 05827375..21b87099 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/list-reports.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/list-reports.tsx @@ -42,7 +42,7 @@ export function ListReports({ reports }: ListReportsProps) { icon={PlusIcon} onClick={() => { router.push( - `/${params.organizationId}/${ + `/${params.organizationSlug}/${ params.projectId }/reports?${new URLSearchParams({ dashboardId: params.dashboardId, @@ -60,7 +60,7 @@ export function ListReports({ reports }: ListReportsProps) { return (
diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/page.tsx index 53eb8f4f..40912c64 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/page.tsx @@ -14,7 +14,7 @@ interface PageProps { } export default async function Page({ - params: { organizationId, projectId, dashboardId }, + params: { organizationId: organizationSlug, projectId, dashboardId }, }: PageProps) { const [dashboard, reports] = await Promise.all([ getDashboardById(dashboardId, projectId), @@ -26,7 +26,7 @@ export default async function Page({ } return ( - + ); diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/list-dashboards.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/list-dashboards.tsx index 0494a50b..a18e14ec 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/list-dashboards.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/list-dashboards.tsx @@ -20,7 +20,7 @@ interface ListDashboardsProps { export function ListDashboards({ dashboards }: ListDashboardsProps) { const router = useRouter(); const params = useAppParams(); - const { organizationId, projectId } = params; + const { organizationSlug, projectId } = params; const deletion = api.dashboard.delete.useMutation({ onError: (error, variables) => { return handleErrorToastOptions({ @@ -65,8 +65,8 @@ export function ListDashboards({ dashboards }: ListDashboardsProps) {
{item.name} diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/page.tsx index 49cbea01..e0b0f670 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/page.tsx @@ -13,12 +13,12 @@ interface PageProps { } export default async function Page({ - params: { projectId, organizationId }, + params: { projectId, organizationId: organizationSlug }, }: PageProps) { const dashboards = await getDashboardsByProjectId(projectId); return ( - + {dashboards.length > 0 && } diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list-item.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list-item.tsx index b8fb0c59..b23c3456 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list-item.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list-item.tsx @@ -15,7 +15,7 @@ import { EventIcon } from './event-icon'; type EventListItemProps = IServiceCreateEventPayload; export function EventListItem(props: EventListItemProps) { - const { organizationId, projectId } = useAppParams(); + const { organizationSlug, projectId } = useAppParams(); const { createdAt, name, path, duration, meta, profile } = props; const [isDetailsOpen, setIsDetailsOpen] = useState(false); @@ -77,7 +77,7 @@ export function EventListItem(props: EventListItemProps) { onClick={(e) => { e.stopPropagation(); }} - href={`/${organizationId}/${projectId}/profiles/${profile?.id}`} + href={`/${organizationSlug}/${projectId}/profiles/${profile?.id}`} className="max-w-[80px] overflow-hidden text-ellipsis whitespace-nowrap text-sm text-muted-foreground hover:underline" > {profile?.firstName} {profile?.lastName} diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/page.tsx index 6721a48b..271c286a 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/page.tsx @@ -31,7 +31,7 @@ const nuqsOptions = { }; export default async function Page({ - params: { projectId, organizationId }, + params: { projectId, organizationId: organizationSlug }, searchParams, }: PageProps) { const filters = @@ -56,7 +56,7 @@ export default async function Page({ ]); return ( - + {pathname?.includes('/settings/') && (
)} diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-organization-selector.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-organization-selector.tsx index e540c025..03401988 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-organization-selector.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-organization-selector.tsx @@ -18,7 +18,7 @@ export default function LayoutOrganizationSelector({ const router = useRouter(); const organization = organizations.find( - (item) => item.slug === params.organizationId + (item) => item.slug === params.organizationSlug ); if (!organization) { diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-project-selector.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-project-selector.tsx index aabc6029..41dbaf2f 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-project-selector.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-project-selector.tsx @@ -13,7 +13,7 @@ export default function LayoutProjectSelector({ projects, }: LayoutProjectSelectorProps) { const router = useRouter(); - const { organizationId, projectId } = useAppParams(); + const { organizationSlug, projectId } = useAppParams(); const pathname = usePathname() || ''; return ( @@ -24,12 +24,12 @@ export default function LayoutProjectSelector({ className="w-auto min-w-0 max-sm:max-w-[100px]" placeholder={'Select project'} onChange={(value) => { - if (organizationId && projectId) { + if (organizationSlug && projectId) { const split = pathname.replace(projectId, value).split('/'); // slicing here will remove everything after /{orgId}/{projectId}/dashboards [slice here] /xxx/xxx/xxx router.push(split.slice(0, 4).join('/')); } else { - router.push(`/${organizationId}/${value}`); + router.push(`/${organizationSlug}/${value}`); } }} value={projectId} diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-sidebar.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-sidebar.tsx index 93d91ac2..6a92a1df 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-sidebar.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-sidebar.tsx @@ -17,13 +17,13 @@ import LayoutOrganizationSelector from './layout-organization-selector'; interface LayoutSidebarProps { organizations: IServiceOrganization[]; dashboards: IServiceDashboards; - organizationId: string; + organizationSlug: string; projectId: string; } export function LayoutSidebar({ organizations, dashboards, - organizationId, + organizationSlug, projectId, }: LayoutSidebarProps) { const [active, setActive] = useState(false); @@ -69,7 +69,7 @@ export function LayoutSidebar({
Create a report diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout.tsx index b909cb61..152a3f19 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout.tsx @@ -18,15 +18,15 @@ interface AppLayoutProps { export default async function AppLayout({ children, - params: { organizationId, projectId }, + params: { organizationId: organizationSlug, projectId }, }: AppLayoutProps) { const [organizations, projects, dashboards] = await Promise.all([ getCurrentOrganizations(), - getCurrentProjects(organizationId), + getCurrentProjects(organizationSlug), getDashboardsByProjectId(projectId), ]); - if (!organizations.find((item) => item.slug === organizationId)) { + if (!organizations.find((item) => item.slug === organizationSlug)) { return (
{children}
diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page.tsx index f62eb71c..a71f5ffb 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page.tsx @@ -24,12 +24,12 @@ interface PageProps { } export default async function Page({ - params: { organizationId, projectId }, + params: { organizationId: organizationSlug, projectId }, }: PageProps) { const share = await getShareByProjectId(projectId); return ( - +
diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/[profileId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/[profileId]/page.tsx index 00f26efc..2775862b 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/[profileId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/[profileId]/page.tsx @@ -41,7 +41,7 @@ interface PageProps { } export default async function Page({ - params: { projectId, profileId, organizationId }, + params: { projectId, profileId, organizationId: organizationSlug }, searchParams, }: PageProps) { const eventListOptions: GetEventListOptions = { @@ -125,7 +125,7 @@ export default async function Page({ return ( diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/page.tsx index 62cd0e22..8ca653b1 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/page.tsx @@ -25,11 +25,11 @@ const nuqsOptions = { }; export default function Page({ - params: { organizationId, projectId }, + params: { organizationId: organizationSlug, projectId }, searchParams: { cursor, f }, }: PageProps) { return ( - + {/*
diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list/profile-list.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list/profile-list.tsx index 90f8764e..c5eba24c 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list/profile-list.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list/profile-list.tsx @@ -21,7 +21,7 @@ interface ProfileListProps { count: number; } export function ProfileList({ data, count }: ProfileListProps) { - const { organizationId, projectId } = useAppParams(); + const { organizationSlug, projectId } = useAppParams(); const { cursor, setCursor } = useCursor(); return ( @@ -46,7 +46,7 @@ export function ProfileList({ data, count }: ProfileListProps) { render(profile) { return ( diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-top/index.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-top/index.tsx index d51661a3..3befc84a 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-top/index.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-top/index.tsx @@ -10,11 +10,11 @@ import { chQuery, getProfiles } from '@openpanel/db'; interface Props { projectId: string; - organizationId: string; + organizationSlug: string; } export default async function ProfileTopServer({ - organizationId, + organizationSlug, projectId, }: Props) { // Days since last event from users @@ -44,7 +44,7 @@ export default async function ProfileTopServer({ render(profile) { return ( diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/[reportId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/[reportId]/page.tsx index 2f512a6d..5218a8d6 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/[reportId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/[reportId]/page.tsx @@ -15,7 +15,7 @@ interface PageProps { } export default async function Page({ - params: { reportId, organizationId }, + params: { reportId, organizationId: organizationSlug }, }: PageProps) { const report = await getReportById(reportId); @@ -25,7 +25,7 @@ export default async function Page({ return ( {report.name} diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/page.tsx index 5c5f91b5..1711a3ac 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/page.tsx @@ -10,10 +10,12 @@ interface PageProps { }; } -export default function Page({ params: { organizationId } }: PageProps) { +export default function Page({ + params: { organizationId: organizationSlug }, +}: PageProps) { return ( Unnamed report diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invites/create-invite.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invites/create-invite.tsx index 6b292339..e9933856 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invites/create-invite.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invites/create-invite.tsx @@ -33,7 +33,7 @@ interface Props { export default function CreateInvite({ projects }: Props) { const router = useRouter(); - const { organizationId: organizationSlug } = useAppParams(); + const { organizationSlug } = useAppParams(); const { register, handleSubmit, formState, reset, control } = useForm({ resolver: zodResolver(zInviteUser), diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/page.tsx index 650969b3..9793d135 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/page.tsx @@ -11,12 +11,14 @@ interface PageProps { organizationId: string; }; } -export default async function Page({ params: { organizationId } }: PageProps) { +export default async function Page({ + params: { organizationId: organizationSlug }, +}: PageProps) { const { userId } = auth(); const profile = await getUserById(userId!); return ( - +
diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/list-projects.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/list-projects.tsx index 4b58e987..6b67f148 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/list-projects.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/list-projects.tsx @@ -24,7 +24,7 @@ interface ListProjectsProps { clients: IServiceClientWithProject[]; } export default function ListProjects({ projects, clients }: ListProjectsProps) { - const organizationId = useAppParams().organizationId; + const { organizationSlug } = useAppParams(); return ( <> @@ -34,7 +34,7 @@ export default function ListProjects({ projects, clients }: ListProjectsProps) { icon={PlusIcon} onClick={() => pushModal('AddProject', { - organizationId, + organizationSlug, }) } > diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/page.tsx index 131a96ce..bb824179 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/page.tsx @@ -1,7 +1,7 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { - getClientsByOrganizationId, + getClientsByOrganizationSlug, getProjectsByOrganizationSlug, } from '@openpanel/db'; @@ -13,14 +13,16 @@ interface PageProps { }; } -export default async function Page({ params: { organizationId } }: PageProps) { +export default async function Page({ + params: { organizationId: organizationSlug }, +}: PageProps) { const [projects, clients] = await Promise.all([ - getProjectsByOrganizationSlug(organizationId), - getClientsByOrganizationId(organizationId), + getProjectsByOrganizationSlug(organizationSlug), + getClientsByOrganizationSlug(organizationSlug), ]); return ( - + ); diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/page.tsx index 350727c5..ee6b723f 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/page.tsx @@ -12,7 +12,7 @@ interface PageProps { } export default async function Page({ - params: { organizationId, projectId }, + params: { organizationId: organizationSlug, projectId }, }: PageProps) { const references = await getReferences({ where: { @@ -23,7 +23,7 @@ export default async function Page({ }); return ( - + ); diff --git a/apps/dashboard/src/app/(app)/[organizationId]/create-project.tsx b/apps/dashboard/src/app/(app)/[organizationId]/create-project.tsx index df131a3d..f154eee7 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/create-project.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/create-project.tsx @@ -36,7 +36,7 @@ export function CreateProject() { const onSubmit: SubmitHandler = (values) => { mutation.mutate({ name: values.name, - organizationId: params.organizationId, + organizationSlug: params.organizationSlug, }); }; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/page.tsx index deaeb033..83e73c10 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/page.tsx @@ -16,10 +16,12 @@ interface PageProps { }; } -export default async function Page({ params: { organizationId } }: PageProps) { +export default async function Page({ + params: { organizationId: organizationSlug }, +}: PageProps) { const [organization, projects] = await Promise.all([ - getOrganizationBySlug(organizationId), - getCurrentProjects(organizationId), + getOrganizationBySlug(organizationSlug), + getCurrentProjects(organizationSlug), ]); if (!organization) { @@ -55,7 +57,7 @@ export default async function Page({ params: { organizationId } }: PageProps) { } if (projects.length === 1 && projects[0]) { - return redirect(`/${organizationId}/${projects[0].id}`); + return redirect(`/${organizationSlug}/${projects[0].id}`); } return ( diff --git a/apps/dashboard/src/components/overview/overview-share.tsx b/apps/dashboard/src/components/overview/overview-share.tsx index d10c7576..5c8933f7 100644 --- a/apps/dashboard/src/components/overview/overview-share.tsx +++ b/apps/dashboard/src/components/overview/overview-share.tsx @@ -58,9 +58,8 @@ export function OverviewShare({ data }: OverviewShareProps) { { mutation.mutate({ + ...data, public: false, - projectId: data?.projectId, - organizationId: data?.organizationSlug, password: null, }); }} diff --git a/apps/dashboard/src/hooks/useAppParams.ts b/apps/dashboard/src/hooks/useAppParams.ts index 805ac9d6..79269f62 100644 --- a/apps/dashboard/src/hooks/useAppParams.ts +++ b/apps/dashboard/src/hooks/useAppParams.ts @@ -1,16 +1,19 @@ import { useParams } from 'next/navigation'; -// eslint-disable-next-line -type AppParams = { +type AppParamsIn = { organizationId: string; projectId: string; }; +type AppParamsOut = { + organizationSlug: string; + projectId: string; +}; export function useAppParams() { - const params = useParams(); + const params = useParams(); return { ...(params ?? {}), - organizationId: params?.organizationId, + organizationSlug: params?.organizationId, projectId: params?.projectId, - } as T & AppParams; + } as T & AppParamsOut; } diff --git a/apps/dashboard/src/modals/AddClient.tsx b/apps/dashboard/src/modals/AddClient.tsx index fd5c7810..da19d258 100644 --- a/apps/dashboard/src/modals/AddClient.tsx +++ b/apps/dashboard/src/modals/AddClient.tsx @@ -43,7 +43,7 @@ interface Props { projectId: string; } export default function AddClient(props: Props) { - const { organizationId, projectId } = useAppParams(); + const { organizationSlug, projectId } = useAppParams(); const router = useRouter(); const form = useForm({ resolver: zodResolver(validation), @@ -62,14 +62,14 @@ export default function AddClient(props: Props) { }, }); const query = api.project.list.useQuery({ - organizationId, + organizationSlug, }); const onSubmit: SubmitHandler = (values) => { mutation.mutate({ name: values.name, cors: values.tab === 'website' ? values.cors : null, projectId: values.projectId, - organizationId, + organizationSlug, }); }; diff --git a/apps/dashboard/src/modals/AddDashboard.tsx b/apps/dashboard/src/modals/AddDashboard.tsx index e204981e..01ad6660 100644 --- a/apps/dashboard/src/modals/AddDashboard.tsx +++ b/apps/dashboard/src/modals/AddDashboard.tsx @@ -19,7 +19,7 @@ const validator = z.object({ type IForm = z.infer; export default function AddDashboard() { - const { projectId, organizationId: organizationSlug } = useAppParams(); + const { projectId, organizationSlug } = useAppParams(); const router = useRouter(); const { register, handleSubmit, formState } = useForm({ diff --git a/apps/dashboard/src/modals/AddProject.tsx b/apps/dashboard/src/modals/AddProject.tsx index ec6ff79c..9f6b13fc 100644 --- a/apps/dashboard/src/modals/AddProject.tsx +++ b/apps/dashboard/src/modals/AddProject.tsx @@ -17,9 +17,9 @@ const validator = z.object({ type IForm = z.infer; interface AddProjectProps { - organizationId: string; + organizationSlug: string; } -export default function AddProject({ organizationId }: AddProjectProps) { +export default function AddProject({ organizationSlug }: AddProjectProps) { const router = useRouter(); const mutation = api.project.create.useMutation({ onError: handleError, @@ -45,7 +45,7 @@ export default function AddProject({ organizationId }: AddProjectProps) { onSubmit={handleSubmit((values) => { mutation.mutate({ ...values, - organizationId, + organizationSlug, }); })} > diff --git a/apps/dashboard/src/modals/SaveReport.tsx b/apps/dashboard/src/modals/SaveReport.tsx index 6a82e9a4..8bee62c9 100644 --- a/apps/dashboard/src/modals/SaveReport.tsx +++ b/apps/dashboard/src/modals/SaveReport.tsx @@ -30,7 +30,7 @@ type IForm = z.infer; export default function SaveReport({ report }: SaveReportProps) { const router = useRouter(); - const { organizationId: organizationSlug, projectId } = useAppParams(); + const { organizationSlug, projectId } = useAppParams(); const searchParams = useSearchParams(); const dashboardId = searchParams?.get('dashboardId') ?? undefined; diff --git a/apps/dashboard/src/modals/ShareOverviewModal.tsx b/apps/dashboard/src/modals/ShareOverviewModal.tsx index 2a4114c5..15fa94e0 100644 --- a/apps/dashboard/src/modals/ShareOverviewModal.tsx +++ b/apps/dashboard/src/modals/ShareOverviewModal.tsx @@ -20,16 +20,16 @@ const validator = zShareOverview; type IForm = z.infer; export default function ShareOverviewModal() { - const { projectId, organizationId: organizationSlug } = useAppParams(); + const { projectId, organizationSlug } = useAppParams(); const router = useRouter(); - const { register, handleSubmit, formState, control } = useForm({ + const { register, handleSubmit, control } = useForm({ resolver: zodResolver(validator), defaultValues: { public: true, password: '', projectId, - organizationId: organizationSlug, + organizationSlug, }, }); diff --git a/apps/dashboard/src/trpc/api/routers/client.ts b/apps/dashboard/src/trpc/api/routers/client.ts index 0d3543c4..0d9ecdbb 100644 --- a/apps/dashboard/src/trpc/api/routers/client.ts +++ b/apps/dashboard/src/trpc/api/routers/client.ts @@ -6,35 +6,6 @@ import { hashPassword, stripTrailingSlash } from '@openpanel/common'; import { db } from '@openpanel/db'; export const clientRouter = createTRPCRouter({ - list: protectedProcedure - .input( - z.object({ - organizationId: z.string(), - }) - ) - .query(async ({ input: { organizationId } }) => { - return db.client.findMany({ - where: { - organizationSlug: organizationId, - }, - include: { - project: true, - }, - }); - }), - get: protectedProcedure - .input( - z.object({ - id: z.string(), - }) - ) - .query(({ input }) => { - return db.client.findUniqueOrThrow({ - where: { - id: input.id, - }, - }); - }), update: protectedProcedure .input( z.object({ @@ -59,7 +30,7 @@ export const clientRouter = createTRPCRouter({ z.object({ name: z.string(), projectId: z.string(), - organizationId: z.string(), + organizationSlug: z.string(), cors: z.string().nullable(), }) ) @@ -67,7 +38,7 @@ export const clientRouter = createTRPCRouter({ const secret = randomUUID(); const client = await db.client.create({ data: { - organizationSlug: input.organizationId, + organizationSlug: input.organizationSlug, projectId: input.projectId, name: input.name, secret: input.cors ? null : await hashPassword(secret), diff --git a/apps/dashboard/src/trpc/api/routers/project.ts b/apps/dashboard/src/trpc/api/routers/project.ts index af562d90..fa12c0b1 100644 --- a/apps/dashboard/src/trpc/api/routers/project.ts +++ b/apps/dashboard/src/trpc/api/routers/project.ts @@ -8,12 +8,12 @@ export const projectRouter = createTRPCRouter({ list: protectedProcedure .input( z.object({ - organizationId: z.string().nullable(), + organizationSlug: z.string().nullable(), }) ) - .query(async ({ input: { organizationId } }) => { - if (organizationId === null) return []; - return getProjectsByOrganizationSlug(organizationId); + .query(async ({ input: { organizationSlug } }) => { + if (organizationSlug === null) return []; + return getProjectsByOrganizationSlug(organizationSlug); }), update: protectedProcedure @@ -37,15 +37,15 @@ export const projectRouter = createTRPCRouter({ .input( z.object({ name: z.string().min(1), - organizationId: z.string(), + organizationSlug: z.string(), }) ) - .mutation(async ({ input }) => { + .mutation(async ({ input: { name, organizationSlug } }) => { return db.project.create({ data: { - id: await getId('project', input.name), - organizationSlug: input.organizationId, - name: input.name, + id: await getId('project', name), + organizationSlug: organizationSlug, + name: name, }, }); }), diff --git a/apps/dashboard/src/trpc/api/routers/share.ts b/apps/dashboard/src/trpc/api/routers/share.ts index 17d40c82..969d42ec 100644 --- a/apps/dashboard/src/trpc/api/routers/share.ts +++ b/apps/dashboard/src/trpc/api/routers/share.ts @@ -16,7 +16,7 @@ export const shareRouter = createTRPCRouter({ }, create: { id: uid.rnd(), - organizationSlug: input.organizationId, + organizationSlug: input.organizationSlug, projectId: input.projectId, public: input.public, password: input.password || null, diff --git a/packages/db/src/services/clients.service.ts b/packages/db/src/services/clients.service.ts index 60a39626..d0f6e3ff 100644 --- a/packages/db/src/services/clients.service.ts +++ b/packages/db/src/services/clients.service.ts @@ -8,10 +8,10 @@ export type IServiceClientWithProject = Prisma.ClientGetPayload<{ }; }>; -export async function getClientsByOrganizationId(organizationId: string) { +export async function getClientsByOrganizationSlug(organizationSlug: string) { return db.client.findMany({ where: { - organizationSlug: organizationId, + organizationSlug, }, include: { project: true, diff --git a/packages/validation/src/index.ts b/packages/validation/src/index.ts index 01713bb6..875816b7 100644 --- a/packages/validation/src/index.ts +++ b/packages/validation/src/index.ts @@ -85,7 +85,7 @@ export const zInviteUser = z.object({ }); export const zShareOverview = z.object({ - organizationId: z.string(), + organizationSlug: z.string(), projectId: z.string(), password: z.string().nullable(), public: z.boolean(),