Navigate after delete

This commit is contained in:
Owen Schwartz 2024-12-24 12:24:34 -05:00
parent 0a86f193ac
commit c8676ce06a
No known key found for this signature in database
GPG key ID: 8271FDFFD9E0CCBD
2 changed files with 38 additions and 4 deletions

View file

@ -130,8 +130,10 @@ export const userOrgs = sqliteTable("userOrgs", {
.notNull()
.references(() => users.userId),
orgId: text("orgId")
.notNull()
.references(() => orgs.orgId),
.references(() => orgs.orgId, {
onDelete: "cascade"
})
.notNull(),
roleId: integer("roleId")
.notNull()
.references(() => roles.roleId),

View file

@ -31,7 +31,8 @@ import {
CardTitle
} from "@/components/ui/card";
import { AxiosResponse } from "axios";
import { DeleteOrgResponse } from "@server/routers/org";
import { DeleteOrgResponse, ListOrgsResponse } from "@server/routers/org";
import { redirect, useRouter } from "next/navigation";
const GeneralFormSchema = z.object({
name: z.string()
@ -43,6 +44,7 @@ export default function GeneralPage() {
const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);
const { orgUser } = userOrgUserContext();
const router = useRouter();
const { org } = useOrgContext();
const { toast } = useToast();
const api = createApiClient(useEnvContext());
@ -61,7 +63,7 @@ export default function GeneralPage() {
`/org/${org?.org.orgId}`
);
if (res.status === 200) {
console.log("Org deleted");
pickNewOrgAndNavigate();
}
} catch (err) {
console.error(err);
@ -76,6 +78,36 @@ export default function GeneralPage() {
}
}
async function pickNewOrgAndNavigate() {
try {
const res = await api.get<AxiosResponse<ListOrgsResponse>>(
`/orgs`
);
if (res.status === 200) {
if (res.data.data.orgs.length > 0) {
const orgId = res.data.data.orgs[0].orgId;
// go to `/${orgId}/settings`);
router.push(`/${orgId}/settings`);
} else {
// go to `/setup`
router.push("/setup");
}
}
} catch (err) {
console.error(err);
toast({
variant: "destructive",
title: "Failed to fetch orgs",
description: formatAxiosError(
err,
"An error occurred while listing your orgs"
)
});
}
}
async function onSubmit(data: GeneralFormValues) {
await api
.post(`/org/${org?.org.orgId}`, {