mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
refactor(organizations): reorganize into actions/components/schemas/hooks/utils
This commit is contained in:
@@ -4,7 +4,7 @@ import {db} from "@/db";
|
||||
import * as drizzleDb from "@/db";
|
||||
import {PageParams} from "@/types/next";
|
||||
import {Page} from "@/features/layout/components/page";
|
||||
import {OrganizationManagement} from "@/features/organizations/admin-organization-management";
|
||||
import {OrganizationManagement} from "@/features/organizations/components/admin-organization-management";
|
||||
import {buildOrganizationWithMembers} from "@/utils/common";
|
||||
import {isUUID} from "@/utils/text";
|
||||
import {user} from "@/db/schema/02_user";
|
||||
|
||||
@@ -3,8 +3,8 @@ import {Page, PageActions, PageContent, PageHeader, PageTitle} from "@/features/
|
||||
import {db} from "@/db";
|
||||
import {
|
||||
AdminOrganizationAddModal
|
||||
} from "@/features/organizations/admin-organization-add-modal";
|
||||
import {AdminOrganizationList} from "@/features/organizations/admin-organization-list";
|
||||
} from "@/features/organizations/components/admin-organization-add-modal";
|
||||
import {AdminOrganizationList} from "@/features/organizations/components/admin-organization-list";
|
||||
import {isNull} from "drizzle-orm";
|
||||
|
||||
export default async function RoutePage(props: PageParams<{}>) {
|
||||
|
||||
@@ -9,12 +9,12 @@ import {currentUser} from "@/lib/auth/current-user";
|
||||
import {getActiveMember, getOrganization} from "@/lib/auth/auth";
|
||||
import {notFound} from "next/navigation";
|
||||
import {Metadata} from "next";
|
||||
import {OrganizationTabs} from "@/features/organizations/organization-tabs";
|
||||
import {OrganizationTabs} from "@/features/organizations/components/organization-tabs";
|
||||
import {getOrganizationChannels} from "@/db/services/notification-channel";
|
||||
import {computeOrganizationPermissions} from "@/lib/acl/organization-acl";
|
||||
import {getOrganizationStorageChannels} from "@/db/services/storage-channel";
|
||||
import {DeleteOrganizationButton} from "@/features/organizations/organization-delete-button";
|
||||
import {EditOrganizationDialog} from "@/features/organizations/organization-edit-dialog";
|
||||
import {DeleteOrganizationButton} from "@/features/organizations/components/organization-delete-button";
|
||||
import {EditOrganizationDialog} from "@/features/organizations/components/organization-edit-dialog";
|
||||
import {db} from "@/db";
|
||||
import {isNull} from "drizzle-orm";
|
||||
import * as drizzleDb from "@/db";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { redirect } from "next/navigation";
|
||||
import { getCurrentOrganizationSlug } from "@/features/organizations/organization-cookie";
|
||||
import { getCurrentOrganizationSlug } from "@/features/organizations/utils/organization-cookie";
|
||||
import { currentUser } from "@/lib/auth/current-user";
|
||||
import { isOnboardingDone } from "@/db/services/setting";
|
||||
import { env } from "@/env.mjs";
|
||||
|
||||
@@ -16,7 +16,7 @@ import {ChannelForm} from "@/features/channel/components/channel-form";
|
||||
import {ChannelKind, getChannelTextBasedOnKind} from "@/features/channel/components/channels-helpers";
|
||||
import {
|
||||
ChannelOrganisationForm
|
||||
} from "@/features/organizations/channels-organization-form";
|
||||
} from "@/features/organizations/components/channels-organization-form";
|
||||
|
||||
|
||||
type ChannelAddModalProps = {
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
import {SidebarLogo} from "@/features/layout/components/logo-sidebar";
|
||||
import {SidebarMenuCustomMain} from "@/features/layout/components/menu-sidebar-main";
|
||||
import {SideBarFooterCredit} from "@/features/layout/components/side-bar-footer-credit";
|
||||
import {OrganizationCombobox} from "@/features/organizations/organization-combobox";
|
||||
import {OrganizationCombobox} from "@/features/organizations/components/organization-combobox";
|
||||
import {env} from "@/env.mjs";
|
||||
import {LoggedInButton} from "@/features/layout/components/logged-in-button.server";
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import { toast } from "sonner";
|
||||
import {
|
||||
createOrganizationAction,
|
||||
updateOrganizationAction,
|
||||
} from "@/features/organizations/organization.action";
|
||||
} from "@/features/organizations/actions/organization.action";
|
||||
import { slugify } from "@/utils/slugify";
|
||||
|
||||
export const useCreateOrg = () => {
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
"use server";
|
||||
|
||||
import {userAction} from "@/lib/safe-actions/actions";
|
||||
import {CreateOrganizationSchema, UpdateOrganizationSchema} from "@/features/organizations/organization.schema";
|
||||
import {CreateOrganizationSchema, UpdateOrganizationSchema} from "@/features/organizations/schemas/organization.schema";
|
||||
import {ServerActionResult} from "@/types/action-type";
|
||||
import {z} from "zod";
|
||||
import {db} from "@/db";
|
||||
+1
-1
@@ -7,7 +7,7 @@ import {db as dbClient} from "@/db";
|
||||
import * as drizzleDb from "@/db";
|
||||
import {and, eq} from "drizzle-orm";
|
||||
import {withUpdatedAt} from "@/db/utils";
|
||||
import {RoleSchemaMember} from "@/features/organizations/member.schema";
|
||||
import {RoleSchemaMember} from "@/features/organizations/schemas/member.schema";
|
||||
|
||||
|
||||
export const updateMemberRoleAdminAction = userAction.schema(
|
||||
+1
-1
@@ -5,7 +5,7 @@ import {auth} from "@/lib/auth/auth";
|
||||
import {ServerActionResult} from "@/types/action-type";
|
||||
import {Member} from "better-auth/plugins";
|
||||
import {headers} from "next/headers";
|
||||
import {RoleSchemaMember} from "@/features/organizations/member.schema";
|
||||
import {RoleSchemaMember} from "@/features/organizations/schemas/member.schema";
|
||||
|
||||
|
||||
export const updateMemberRoleAction = userAction.schema(
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
import {ColumnDef} from "@tanstack/react-table";
|
||||
import {ButtonDeleteOrganization} from "@/features/organizations/admin-organization-delete-button";
|
||||
import {ButtonDeleteOrganization} from "@/features/organizations/components/admin-organization-delete-button";
|
||||
import Link from "next/link";
|
||||
import {Settings} from "lucide-react";
|
||||
import {buttonVariants} from "@/components/ui/button";
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
"use client"
|
||||
|
||||
import {CreateOrganizationModal} from "@/features/organizations/organization-create-modal";
|
||||
import {CreateOrganizationModal} from "@/features/organizations/components/organization-create-modal";
|
||||
import {useRouter} from "next/navigation";
|
||||
import {authClient} from "@/lib/auth/auth-client";
|
||||
import {useState} from "react";
|
||||
+1
-1
@@ -6,7 +6,7 @@ import {Trash2} from "lucide-react";
|
||||
import {toast} from "sonner";
|
||||
import {ButtonWithConfirm} from "@/components/common/button-with-confirm";
|
||||
import {authClient} from "@/lib/auth/auth-client";
|
||||
import {deleteOrganizationAction} from "@/features/organizations/organization.action";
|
||||
import {deleteOrganizationAction} from "@/features/organizations/actions/organization.action";
|
||||
|
||||
export type ButtonDeleteFleetProps = {
|
||||
text?: string;
|
||||
+1
-1
@@ -5,7 +5,7 @@ import { useMutation } from "@tanstack/react-query";
|
||||
import { toast } from "sonner";
|
||||
|
||||
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, useZodForm } from "@/components/ui/form";
|
||||
import { OrganizationSchema } from "@/features/organizations/admin-organization.schema";
|
||||
import { OrganizationSchema } from "@/features/organizations/schemas/admin-organization.schema";
|
||||
import { ButtonWithLoading } from "@/components/common/button-with-loading";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { authClient } from "@/lib/auth/auth-client";
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
"use client"
|
||||
import { DataTable } from "@/components/common/data-table";
|
||||
import { organizationsListColumns } from "@/features/organizations/admin-org-columns";
|
||||
import { organizationsListColumns } from "@/features/organizations/components/admin-org-columns";
|
||||
import {OrganizationWithMembers} from "@/db/schema/03_organization";
|
||||
|
||||
type AdminOrganizationListProps = {
|
||||
+3
-3
@@ -6,17 +6,17 @@ import {Tabs, TabsContent, TabsList, TabsTrigger} from "@/components/ui/tabs";
|
||||
import {MemberWithUser, OrganizationWithMembersAndUsers} from "@/db/schema/03_organization";
|
||||
import {
|
||||
UpdateOrganizationForm
|
||||
} from "@/features/organizations/update-organization-form";
|
||||
} from "@/features/organizations/components/update-organization-form";
|
||||
import {
|
||||
OrganizationMemberCard
|
||||
} from "@/features/organizations/organization-member-card";
|
||||
} from "@/features/organizations/components/organization-member-card";
|
||||
import {useRouter, useSearchParams} from "next/navigation";
|
||||
import {useEffect, useState} from "react";
|
||||
import {capitalizeFirstLetter} from "@/utils/text";
|
||||
import {User} from "@/db/schema/02_user";
|
||||
import {
|
||||
OrganizationAddMemberModal
|
||||
} from "@/features/organizations/organization-add-member-modal";
|
||||
} from "@/features/organizations/components/organization-add-member-modal";
|
||||
import {cn} from "@/lib/utils";
|
||||
|
||||
type OrganizationManagementProps = {
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
"use client";
|
||||
|
||||
import { Card, CardAction, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||||
import { AdminOrganizationList } from "@/features/organizations/admin-organization-list";
|
||||
import { AdminOrganizationAddModal } from "@/features/organizations/admin-organization-add-modal";
|
||||
import { AdminOrganizationList } from "@/features/organizations/components/admin-organization-list";
|
||||
import { AdminOrganizationAddModal } from "@/features/organizations/components/admin-organization-add-modal";
|
||||
import {OrganizationWithMembers} from "@/db/schema/03_organization";
|
||||
|
||||
type AdminOrganizationSectionProps = {
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
"use client"
|
||||
import {Card, CardContent, CardDescription, CardHeader, CardTitle} from "@/components/ui/card";
|
||||
import {OrganizationWithMembers} from "@/db/schema/03_organization";
|
||||
import {AdminOrganizationList} from "@/features/organizations/admin-organization-list";
|
||||
import {AdminOrganizationList} from "@/features/organizations/components/admin-organization-list";
|
||||
|
||||
export type AdminOrganizationsTableProps = {
|
||||
organizations: OrganizationWithMembers[];
|
||||
+2
-2
@@ -12,10 +12,10 @@ import {toast} from "sonner";
|
||||
import {StorageChannelWith} from "@/db/schema/12_storage-channel";
|
||||
import {
|
||||
ChannelsOrganizationSchema, ChannelsOrganizationType
|
||||
} from "@/features/organizations/channels-organization.schema";
|
||||
} from "@/features/organizations/schemas/channels-organization.schema";
|
||||
import {
|
||||
updateNotificationChannelsOrganizationAction, updateStorageChannelsOrganizationAction
|
||||
} from "@/features/organizations/channels-organization.action";
|
||||
} from "@/features/organizations/actions/channels-organization.action";
|
||||
import {ChannelKind} from "@/features/channel/components/channels-helpers";
|
||||
|
||||
|
||||
+2
-2
@@ -13,8 +13,8 @@ import {
|
||||
TooltipProvider,
|
||||
TooltipTrigger,
|
||||
} from "@/components/ui/tooltip";
|
||||
import {updateMemberRoleAction} from "@/features/organizations/update-member.action";
|
||||
import {RoleSchemaMember} from "@/features/organizations/member.schema";
|
||||
import {updateMemberRoleAction} from "@/features/organizations/actions/update-member.action";
|
||||
import {RoleSchemaMember} from "@/features/organizations/schemas/member.schema";
|
||||
|
||||
export const organizationMemberColumns: ColumnDef<MemberWithUser>[] = [
|
||||
{
|
||||
+2
-2
@@ -7,11 +7,11 @@ import {Form, FormControl, FormField, FormItem, FormLabel, FormMessage, useZodFo
|
||||
import {
|
||||
AddMemberSchema,
|
||||
AddMemberSchemaType
|
||||
} from "@/features/organizations/admin-organization.schema";
|
||||
} from "@/features/organizations/schemas/admin-organization.schema";
|
||||
import {SearchInput} from "@/components/ui/search-input";
|
||||
import {
|
||||
addMemberOrganizationAction
|
||||
} from "@/features/organizations/add-member.action";
|
||||
} from "@/features/organizations/actions/add-member.action";
|
||||
import {toast} from "sonner";
|
||||
import {OrganizationWithMembers, OrganizationWithMembersAndUsers} from "@/db/schema/03_organization";
|
||||
import {User} from "@/db/schema/02_user";
|
||||
+1
-1
@@ -10,7 +10,7 @@ import {
|
||||
} from "@/components/ui/dialog";
|
||||
import {
|
||||
OrganizationAddMemberForm
|
||||
} from "@/features/organizations/organization-add-member-form";
|
||||
} from "@/features/organizations/components/organization-add-member-form";
|
||||
import {useState} from "react";
|
||||
import {UserPlus} from "lucide-react";
|
||||
import {Button} from "@/components/ui/button";
|
||||
+1
-1
@@ -12,7 +12,7 @@ import {
|
||||
import {
|
||||
SidebarMenuButton, useSidebar,
|
||||
} from "@/components/ui/sidebar"
|
||||
import {CreateOrganizationModal} from "@/features/organizations/organization-create-modal"
|
||||
import {CreateOrganizationModal} from "@/features/organizations/components/organization-create-modal"
|
||||
import {Skeleton} from "@/components/ui/skeleton"
|
||||
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@ import {Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle} from "@/
|
||||
import {Button} from "@/components/ui/button";
|
||||
import {Form, FormControl, FormField, FormItem, FormLabel, FormMessage, useZodForm} from "@/components/ui/form";
|
||||
import {Input} from "@/components/ui/input";
|
||||
import {CreateOrganizationSchema, CreateOrganizationType} from "@/features/organizations/organization.schema";
|
||||
import {createOrganizationAction} from "@/features/organizations/organization.action";
|
||||
import {CreateOrganizationSchema, CreateOrganizationType} from "@/features/organizations/schemas/organization.schema";
|
||||
import {createOrganizationAction} from "@/features/organizations/actions/organization.action";
|
||||
import {useRouter} from "next/navigation";
|
||||
import {useState} from "react";
|
||||
import {authClient} from "@/lib/auth/auth-client";
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
import {ButtonWithConfirm} from "@/components/common/button-with-confirm";
|
||||
import {deleteOrganizationAction} from "@/features/organizations/organization.action";
|
||||
import {deleteOrganizationAction} from "@/features/organizations/actions/organization.action";
|
||||
import {useMutation} from "@tanstack/react-query";
|
||||
import {useRouter} from "next/navigation";
|
||||
import {toast} from "sonner";
|
||||
+1
-1
@@ -7,7 +7,7 @@ import {
|
||||
DialogTitle,
|
||||
DialogTrigger,
|
||||
} from "@/components/ui/dialog";
|
||||
import {OrganizationForm} from "@/features/organizations/organization-form";
|
||||
import {OrganizationForm} from "@/features/organizations/components/organization-form";
|
||||
import {useState} from "react";
|
||||
import {buttonVariants} from "@/components/ui/button";
|
||||
import {GearIcon} from "@radix-ui/react-icons";
|
||||
+2
-2
@@ -18,11 +18,11 @@ import {MultiSelect} from "@/components/common/multi-select";
|
||||
import {
|
||||
UpdateOrganizationSchema,
|
||||
UpdateOrganizationType
|
||||
} from "@/features/organizations/organization.schema";
|
||||
} from "@/features/organizations/schemas/organization.schema";
|
||||
import {MemberWithUser, OrganizationWithMembers} from "@/db/schema/03_organization";
|
||||
import {
|
||||
updateOrganizationAction
|
||||
} from "@/features/organizations/organization.action";
|
||||
} from "@/features/organizations/actions/organization.action";
|
||||
import {toast} from "sonner";
|
||||
import {User} from "@/db/schema/02_user";
|
||||
import {authClient} from "@/lib/auth/auth-client";
|
||||
+2
-2
@@ -12,12 +12,12 @@ import {Button} from "@/components/ui/button";
|
||||
import {MoreHorizontal, Settings, Trash2} from "lucide-react";
|
||||
import {
|
||||
OrganizationDeleteMemberModal
|
||||
} from "@/features/organizations/organization-delete-member-modal";
|
||||
} from "@/features/organizations/components/organization-delete-member-modal";
|
||||
import {useState} from "react";
|
||||
import {authClient} from "@/lib/auth/auth-client";
|
||||
import {
|
||||
OrganizationMemberChangeRoleModal
|
||||
} from "@/features/organizations/organization-member-change-role";
|
||||
} from "@/features/organizations/components/organization-member-change-role";
|
||||
import {MemberWithUser, OrganizationWithMembersAndUsers} from "@/db/schema/03_organization";
|
||||
|
||||
type OrganizationMemberCardProps = {
|
||||
+2
-2
@@ -19,8 +19,8 @@ import {MemberRoleType} from "@/types/common";
|
||||
import {MemberWithUser} from "@/db/schema/03_organization";
|
||||
import {
|
||||
updateMemberRoleAdminAction
|
||||
} from "@/features/organizations/role-member.action";
|
||||
import {RoleSchemaMember} from "@/features/organizations/member.schema";
|
||||
} from "@/features/organizations/actions/role-member.action";
|
||||
import {RoleSchemaMember} from "@/features/organizations/schemas/member.schema";
|
||||
|
||||
type OrganizationMemberChangeRoleModalProps = {
|
||||
open: boolean;
|
||||
+1
-1
@@ -2,7 +2,7 @@ import {DataTable} from "@/components/common/data-table";
|
||||
import {MemberWithUser, OrganizationWithMembers} from "@/db/schema/03_organization";
|
||||
import {
|
||||
organizationMemberColumns
|
||||
} from "@/features/organizations/member-columns";
|
||||
} from "@/features/organizations/components/member-columns";
|
||||
|
||||
interface SettingsOrganizationMembersTableProps {
|
||||
organization: OrganizationWithMembers
|
||||
+5
-5
@@ -5,20 +5,20 @@ import {useEffect, useState} from "react";
|
||||
import {useRouter, useSearchParams} from "next/navigation";
|
||||
import {MemberWithUser, OrganizationWithMembers} from "@/db/schema/03_organization";
|
||||
import {NotificationChannel} from "@/db/schema/09_notification-channel";
|
||||
import {useOrganizationPermissions} from "@/features/organizations/use-organization-permissions";
|
||||
import {useOrganizationPermissions} from "@/features/organizations/hooks/use-organization-permissions";
|
||||
import {StorageChannel} from "@/db/schema/12_storage-channel";
|
||||
import {
|
||||
SettingsOrganizationMembersTable
|
||||
} from "@/features/organizations/organization-members-table";
|
||||
} from "@/features/organizations/components/organization-members-table";
|
||||
import {
|
||||
OrganizationNotifiersTab
|
||||
} from "@/features/organizations/organization-notifiers-tab";
|
||||
} from "@/features/organizations/components/organization-notifiers-tab";
|
||||
import {
|
||||
OrganizationStoragesTab
|
||||
} from "@/features/organizations/organization-storages-tab";
|
||||
} from "@/features/organizations/components/organization-storages-tab";
|
||||
import {
|
||||
OrganizationAgentsTab
|
||||
} from "@/features/organizations/organization-agents-tab";
|
||||
} from "@/features/organizations/components/organization-agents-tab";
|
||||
import {Agent} from "@/db/schema/08_agent";
|
||||
|
||||
export type OrganizationTabsProps = {
|
||||
+2
-2
@@ -7,13 +7,13 @@ import {Form, FormControl, FormField, FormItem, FormLabel, FormMessage, useZodFo
|
||||
import {
|
||||
UpdateOrganizationSchema,
|
||||
UpdateOrganizationSchemaType
|
||||
} from "@/features/organizations/admin-organization.schema";
|
||||
} from "@/features/organizations/schemas/admin-organization.schema";
|
||||
import {ButtonWithLoading} from "@/components/common/button-with-loading";
|
||||
import {Input} from "@/components/ui/input";
|
||||
import {authClient} from "@/lib/auth/auth-client";
|
||||
import {toast} from "sonner";
|
||||
import {OrganizationWithMembersAndUsers} from "@/db/schema/03_organization";
|
||||
import {updateOrganizationAction} from "@/features/organizations/organization.action";
|
||||
import {updateOrganizationAction} from "@/features/organizations/actions/organization.action";
|
||||
|
||||
type UpdateOrganizationFormProps = {
|
||||
onSuccessAction?: () => void;
|
||||
@@ -15,7 +15,7 @@ import { and, eq } from "drizzle-orm";
|
||||
import { zEmail, zString } from "@/lib/zod";
|
||||
import { withUpdatedAt } from "@/db/utils";
|
||||
import { userAction } from "@/lib/safe-actions/actions";
|
||||
import { addMemberOrganizationAction } from "@/features/organizations/add-member.action";
|
||||
import { addMemberOrganizationAction } from "@/features/organizations/actions/add-member.action";
|
||||
import { sendEmail } from "@/lib/email";
|
||||
import EmailCreateUser from "@/components/emails/email-create-user";
|
||||
import { SignUpUser } from "@/types/auth";
|
||||
|
||||
Reference in New Issue
Block a user