refactor(channel): reorganize into components/schemas, nest notifications+storages under components

This commit is contained in:
Théo LAGACHE
2026-06-23 16:06:10 +02:00
parent d0dafdadc7
commit 41a3b29053
78 changed files with 99 additions and 99 deletions
@@ -4,8 +4,8 @@ import {Metadata} from "next";
import {db} from "@/db";
import {notificationChannel, NotificationChannelWith} from "@/db/schema/09_notification-channel";
import {desc, isNull} from "drizzle-orm";
import {ChannelsSection} from "@/features/channel/channels-section";
import {ChannelAddEditModal} from "@/features/channel/channel-add-edit-modal";
import {ChannelsSection} from "@/features/channel/components/channels-section";
import {ChannelAddEditModal} from "@/features/channel/components/channel-add-edit-modal";
import * as drizzleDb from "@/db";
export const metadata: Metadata = {
@@ -1,12 +1,12 @@
import {PageParams} from "@/types/next";
import {Page, PageActions, PageContent, PageHeader, PageTitle} from "@/features/layout/page";
import {Metadata} from "next";
import {ChannelsSection} from "@/features/channel/channels-section";
import {ChannelsSection} from "@/features/channel/components/channels-section";
import {db} from "@/db";
import {desc, eq, isNull} from "drizzle-orm";
import * as drizzleDb from "@/db";
import {StorageChannelWith} from "@/db/schema/12_storage-channel";
import {ChannelAddEditModal} from "@/features/channel/channel-add-edit-modal";
import {ChannelAddEditModal} from "@/features/channel/components/channel-add-edit-modal";
export const metadata: Metadata = {
title: "Storage Channels",
@@ -12,8 +12,8 @@ import {useIsMobile} from "@/hooks/use-mobile";
import {useEffect, useState} from "react";
import {Tabs, TabsContent, TabsList, TabsTrigger} from "@/components/ui/tabs";
import {StorageChannelWith} from "@/db/schema/12_storage-channel";
import {ChannelForm} from "@/features/channel/channel-form";
import {ChannelKind, getChannelTextBasedOnKind} from "@/features/channel/channels-helpers";
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";
@@ -9,11 +9,11 @@ import {useIsMobile} from "@/hooks/use-mobile";
import {StorageChannelWith} from "@/db/schema/12_storage-channel";
import {
EditChannelButton
} from "@/features/channel/channel-edit-button";
import {ChannelKind, getChannelIcon} from "@/features/channel/channels-helpers";
} from "@/features/channel/components/channel-edit-button";
import {ChannelKind, getChannelIcon} from "@/features/channel/components/channels-helpers";
import {
DeleteChannelButton
} from "@/features/channel/channel-delete-button";
} from "@/features/channel/components/channel-delete-button";
export type ChannelCardProps = {
data: NotificationChannelWith | StorageChannelWith;
@@ -5,12 +5,12 @@ import {useRouter} from "next/navigation";
import {Trash2} from "lucide-react";
import {
removeNotificationChannelAction,
} from "@/features/channel/notifications/channel.action";
} from "@/features/channel/components/notifications/channel.action";
import {toast} from "sonner";
import {ChannelKind, getChannelTextBasedOnKind} from "@/features/channel/channels-helpers";
import {ChannelKind, getChannelTextBasedOnKind} from "@/features/channel/components/channels-helpers";
import {
removeStorageChannelAction
} from "@/features/channel/storages/channel.action";
} from "@/features/channel/components/storages/channel.action";
export type DeleteChannelButtonProps = {
channelId: string;
@@ -7,14 +7,14 @@ import {toast} from "sonner";
import {useState} from "react";
import {OrganizationWithMembers} from "@/db/schema/03_organization";
import {StorageChannelWith} from "@/db/schema/12_storage-channel";
import {ChannelKind} from "@/features/channel/channels-helpers";
import {ChannelKind} from "@/features/channel/components/channels-helpers";
import {
updateNotificationChannelAction
} from "@/features/channel/notifications/channel.action";
import {ChannelAddEditModal} from "@/features/channel/channel-add-edit-modal";
} from "@/features/channel/components/notifications/channel.action";
import {ChannelAddEditModal} from "@/features/channel/components/channel-add-edit-modal";
import {
updateStorageChannelAction
} from "@/features/channel/storages/channel.action";
} from "@/features/channel/components/storages/channel.action";
export type EditChannelButtonProps = {
channel: NotificationChannelWith | StorageChannelWith;
@@ -8,7 +8,7 @@ import {Input} from "@/components/ui/input";
import {
addStorageChannelAction, updateStorageChannelAction
} from "@/features/channel/storages/channel.action";
} from "@/features/channel/components/storages/channel.action";
import {toast} from "sonner";
import {OrganizationWithMembers} from "@/db/schema/03_organization";
import {Button} from "@/components/ui/button";
@@ -20,19 +20,19 @@ import {ArrowLeft} from "lucide-react";
import {StorageChannelWith} from "@/db/schema/12_storage-channel";
import {
NotificationChannelFormSchema, NotificationChannelFormType, StorageChannelFormSchema, StorageChannelFormType
} from "@/features/channel/channel-form.schema";
} from "@/features/channel/schemas/channel-form.schema";
import {
ChannelKind,
renderChannelForm
} from "@/features/channel/channels-helpers";
import {storageProviders} from "@/features/channel/channels-storage-helper";
import {notificationProviders} from "@/features/channel/channels-notification-helper";
} from "@/features/channel/components/channels-helpers";
import {storageProviders} from "@/features/channel/components/channels-storage-helper";
import {notificationProviders} from "@/features/channel/components/channels-notification-helper";
import {
ChannelTestButton
} from "@/features/channel/channel-test-button";
} from "@/features/channel/components/channel-test-button";
import {
addNotificationChannelAction, updateNotificationChannelAction
} from "@/features/channel/notifications/channel.action";
} from "@/features/channel/components/notifications/channel.action";
type NotifierFormProps = {
@@ -11,7 +11,7 @@ import {EventPayload} from "@/features/notifications/notifications.types";
import {useIsMobile} from "@/hooks/use-mobile";
import {cn} from "@/lib/utils";
import {StorageChannel} from "@/db/schema/12_storage-channel";
import {ChannelKind} from "@/features/channel/channels-helpers";
import {ChannelKind} from "@/features/channel/components/channels-helpers";
import type {StorageInput} from "@/features/storages/storages.types";
import {dispatchStorage} from "@/features/storages/storages.dispatch";
@@ -1,49 +1,49 @@
import {UseFormReturn} from "react-hook-form";
import {
NotifierSmtpForm
} from "@/features/channel/notifications/smtp.form";
} from "@/features/channel/components/notifications/smtp.form";
import {
NotifierSlackForm
} from "@/features/channel/notifications/slack.form";
} from "@/features/channel/components/notifications/slack.form";
import {
NotifierDiscordForm
} from "@/features/channel/notifications/discord.form";
} from "@/features/channel/components/notifications/discord.form";
import {
NotifierTelegramForm
} from "@/features/channel/notifications/telegram.form";
} from "@/features/channel/components/notifications/telegram.form";
import {
NotifierGotifyForm
} from "@/features/channel/notifications/gotify.form";
} from "@/features/channel/components/notifications/gotify.form";
import {
NotifierNtfyForm
} from "@/features/channel/notifications/ntfy.form";
} from "@/features/channel/components/notifications/ntfy.form";
import {
NotifierWebhookForm
} from "@/features/channel/notifications/webhook.form";
} from "@/features/channel/components/notifications/webhook.form";
import {
NotifierNextcloudForm
} from "@/features/channel/notifications/nextcloud.form";
} from "@/features/channel/components/notifications/nextcloud.form";
import {
NotifierPushoverForm
} from "@/features/channel/notifications/pushover.form";
} from "@/features/channel/components/notifications/pushover.form";
import {
notificationProviders,
} from "@/features/channel/channels-notification-helper";
} from "@/features/channel/components/channels-notification-helper";
import {
NotifierTeamsForm
} from "@/features/channel/notifications/teams.form";
import {storageProviders} from "@/features/channel/channels-storage-helper";
} from "@/features/channel/components/notifications/teams.form";
import {storageProviders} from "@/features/channel/components/channels-storage-helper";
import {ForwardRefExoticComponent, JSX, RefAttributes, SVGProps} from "react";
import {LucideProps} from "lucide-react";
import {
StorageS3Form
} from "@/features/channel/storages/s3.form";
} from "@/features/channel/components/storages/s3.form";
import {
StorageGoogleDriveForm
} from "@/features/channel/storages/google-drive/google-drive.form";
} from "@/features/channel/components/storages/google-drive/google-drive.form";
import {
StorageBlobForm
} from "@/features/channel/storages/az-blob.form";
} from "@/features/channel/components/storages/az-blob.form";
export type ChannelKind = "notification" | "storage";
@@ -1,6 +1,6 @@
import {Mail} from "lucide-react";
import type { SVGProps } from 'react';
import {ProviderIconTypes} from "@/features/channel/channels-helpers";
import {ProviderIconTypes} from "@/features/channel/components/channels-helpers";
@@ -5,12 +5,12 @@ import { useState } from "react";
import { EmptyStatePlaceholder } from "@/components/common/empty-state-placeholder";
import { OrganizationWithMembers } from "@/db/schema/03_organization";
import { StorageChannelWith } from "@/db/schema/12_storage-channel";
import { ChannelCard } from "@/features/channel/channel-card";
import { ChannelAddEditModal } from "@/features/channel/channel-add-edit-modal";
import { ChannelCard } from "@/features/channel/components/channel-card";
import { ChannelAddEditModal } from "@/features/channel/components/channel-add-edit-modal";
import {
ChannelKind,
getChannelTextBasedOnKind,
} from "@/features/channel/channels-helpers";
} from "@/features/channel/components/channels-helpers";
type ChannelsSectionProps = {
channels: NotificationChannelWith[] | StorageChannelWith[];
@@ -1,6 +1,6 @@
import {Server} from "lucide-react";
import type {SVGProps} from "react";
import {ProviderIconTypes} from "@/features/channel/channels-helpers";
import {ProviderIconTypes} from "@/features/channel/components/channels-helpers";
export const storageProviders: ProviderIconTypes[] = [
{value: "local", label: "Local", icon: Server},
@@ -10,7 +10,7 @@ import {and, eq} from "drizzle-orm";
import {withUpdatedAt} from "@/db/utils";
import {
NotificationChannelFormSchema
} from "@/features/channel/channel-form.schema";
} from "@/features/channel/schemas/channel-form.schema";
export const addNotificationChannelAction = userAction.schema(
@@ -2,14 +2,14 @@
import type {ProviderKind, EventPayload, DispatchResult} from '@/features/notifications/notifications.types';
import {sendSlack} from './slack';
import {sendSmtp} from './smtp';
import {sendDiscord} from "@/features/channel/notifications/discord";
import {sendTelegram} from "@/features/channel/notifications/telegram";
import {sendGotify} from "@/features/channel/notifications/gotify";
import {sendNtfy} from "@/features/channel/notifications/ntfy";
import {sendWebhook} from "@/features/channel/notifications/webhook";
import {sendNextcloud} from "@/features/channel/notifications/nextcloud";
import {sendPushover} from "@/features/channel/notifications/pushover";
import {sendTeams} from "@/features/channel/notifications/teams"
import {sendDiscord} from "@/features/channel/components/notifications/discord";
import {sendTelegram} from "@/features/channel/components/notifications/telegram";
import {sendGotify} from "@/features/channel/components/notifications/gotify";
import {sendNtfy} from "@/features/channel/components/notifications/ntfy";
import {sendWebhook} from "@/features/channel/components/notifications/webhook";
import {sendNextcloud} from "@/features/channel/components/notifications/nextcloud";
import {sendPushover} from "@/features/channel/components/notifications/pushover";
import {sendTeams} from "@/features/channel/components/notifications/teams"
const handlers: Record<
ProviderKind,
@@ -4,7 +4,7 @@ import {Input} from "@/components/ui/input";
import {Separator} from "@/components/ui/separator";
import {PasswordInput} from "@/components/ui/password-input";
import {Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from "@/components/ui/select";
import {PUSHOVER_PRIORITIES} from "@/features/channel/notifications/pushover.schema";
import {PUSHOVER_PRIORITIES} from "@/features/channel/components/notifications/pushover.schema";
type NotifierPushoverFormProps = {
form: UseFormReturn<any, any, any>;
@@ -9,7 +9,7 @@ import {and, eq} from "drizzle-orm";
import {withUpdatedAt} from "@/db/utils";
import {
StorageChannelFormSchema
} from "@/features/channel/channel-form.schema";
} from "@/features/channel/schemas/channel-form.schema";
import {StorageChannel} from "@/db/schema/12_storage-channel";
@@ -8,7 +8,7 @@ import {Button} from "@/components/ui/button";
import {PasswordInput} from "@/components/ui/password-input";
import {
googleDriveRefreshTokenAction
} from "@/features/channel/storages/google-drive/google-drive-refresh.action";
} from "@/features/channel/components/storages/google-drive/google-drive-refresh.action";
import {toast} from "sonner";
type StorageGoogleDriveFormProps = {
@@ -1,5 +1,5 @@
import {drive_v3, google} from "googleapis";
import {GoogleDriveConfig} from "@/features/channel/storages/google-drive/types";
import {GoogleDriveConfig} from "@/features/channel/components/storages/google-drive/types";
import Drive = drive_v3.Drive;
import {getServerUrl} from "@/utils/get-server-url";
@@ -7,12 +7,12 @@ import {
StorageResult,
StorageUploadInput
} from '@/features/storages/storages.types';
import {GoogleDriveConfig} from "@/features/channel/storages/google-drive/types";
import {GoogleDriveConfig} from "@/features/channel/components/storages/google-drive/types";
import {
ensureFolderPath,
findFileByName,
getGoogleDriveClient, resolveFilePath
} from "@/features/channel/storages/google-drive/helpers";
} from "@/features/channel/components/storages/google-drive/helpers";
import {Readable} from "node:stream";
import {generateFileUrl} from "@/features/storages/storages.helpers";
@@ -5,15 +5,15 @@ import {
} from '@/features/storages/storages.types';
import {uploadLocal, getLocal, deleteLocal, pingLocal, copyLocal} from './local';
import {copyS3, deleteS3, getS3, pingS3, uploadS3} from "@/features/channel/storages/s3";
import {copyBlob, deleteBlob, getBlob, pingBlob, uploadBlob} from "@/features/channel/storages/az-blob";
import {copyS3, deleteS3, getS3, pingS3, uploadS3} from "@/features/channel/components/storages/s3";
import {copyBlob, deleteBlob, getBlob, pingBlob, uploadBlob} from "@/features/channel/components/storages/az-blob";
import {
copyGoogleDrive,
deleteGoogleDrive,
getGoogleDrive,
pingGoogleDrive,
uploadGoogleDrive
} from "@/features/channel/storages/google-drive";
} from "@/features/channel/components/storages/google-drive";
type ProviderHandler = {
upload: (config: any, input: StorageInput & { action: 'upload' }) => Promise<StorageResult>;
@@ -1,18 +1,18 @@
import {z} from "zod";
import {SlackChannelConfigSchema} from "@/features/channel/notifications/slack.schema";
import {SmtpChannelConfigSchema} from "@/features/channel/notifications/smtp.schema";
import {DiscordChannelConfigSchema} from "@/features/channel/notifications/discord.schema";
import {TelegramChannelConfigSchema} from "@/features/channel/notifications/telegram.schema";
import {GotifyChannelConfigSchema} from "@/features/channel/notifications/gotify.schema";
import {NtfyChannelConfigSchema} from "@/features/channel/notifications/ntfy.schema";
import {WebhookChannelConfigSchema} from "@/features/channel/notifications/webhook.schema";
import {NextcloudChannelConfigSchema} from "@/features/channel/notifications/nextcloud.schema";
import {PushoverChannelConfigSchema} from "@/features/channel/notifications/pushover.schema";
import {S3ChannelConfigSchema} from "@/features/channel/storages/s3.schema";
import {GoogleDriveChannelConfigSchema} from "@/features/channel/storages/google-drive/google-drive.schema";
import {LocalChannelConfigSchema} from "@/features/channel/storages/local.schema";
import {TeamsChannelConfigSchema} from "@/features/channel/notifications/teams.schema";
import {BlobChannelConfigSchema} from "@/features/channel/storages/az-blob.schema";
import {SlackChannelConfigSchema} from "@/features/channel/components/notifications/slack.schema";
import {SmtpChannelConfigSchema} from "@/features/channel/components/notifications/smtp.schema";
import {DiscordChannelConfigSchema} from "@/features/channel/components/notifications/discord.schema";
import {TelegramChannelConfigSchema} from "@/features/channel/components/notifications/telegram.schema";
import {GotifyChannelConfigSchema} from "@/features/channel/components/notifications/gotify.schema";
import {NtfyChannelConfigSchema} from "@/features/channel/components/notifications/ntfy.schema";
import {WebhookChannelConfigSchema} from "@/features/channel/components/notifications/webhook.schema";
import {NextcloudChannelConfigSchema} from "@/features/channel/components/notifications/nextcloud.schema";
import {PushoverChannelConfigSchema} from "@/features/channel/components/notifications/pushover.schema";
import {S3ChannelConfigSchema} from "@/features/channel/components/storages/s3.schema";
import {GoogleDriveChannelConfigSchema} from "@/features/channel/components/storages/google-drive/google-drive.schema";
import {LocalChannelConfigSchema} from "@/features/channel/components/storages/local.schema";
import {TeamsChannelConfigSchema} from "@/features/channel/components/notifications/teams.schema";
import {BlobChannelConfigSchema} from "@/features/channel/components/storages/az-blob.schema";
const BaseChannelFormSchema = z.object({
@@ -12,7 +12,7 @@ import {
} from "@/components/ui/form";
import { TooltipProvider } from "@/components/ui/tooltip";
import { ButtonWithLoading } from "@/components/common/button-with-loading";
import { getChannelIcon } from "@/features/channel/channels-helpers";
import { getChannelIcon } from "@/features/channel/components/channels-helpers";
import {
getStatusColor,
getStatusIcon,
@@ -12,7 +12,7 @@ import { MultiSelect } from "@/components/common/multi-select";
import { Switch } from "@/components/ui/switch";
import { Card } from "@/components/ui/card";
import { useIsMobile } from "@/hooks/use-mobile";
import { ChannelKind, getChannelIcon, getChannelTextBasedOnKind } from "@/features/channel/channels-helpers";
import { ChannelKind, getChannelIcon, getChannelTextBasedOnKind } from "@/features/channel/components/channels-helpers";
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, useZodForm } from "@/components/ui/form";
import {
EVENT_KIND_BACKUP_ONLY_OPTIONS,
@@ -19,7 +19,7 @@ import Link from "next/link";
import { DatabaseWith } from "@/db/schema/07_database";
import { NotificationChannel } from "@/db/schema/09_notification-channel";
import { StorageChannel } from "@/db/schema/12_storage-channel";
import { ChannelKind, getChannelTextBasedOnKind } from "@/features/channel/channels-helpers";
import { ChannelKind, getChannelTextBasedOnKind } from "@/features/channel/components/channels-helpers";
import { ChannelPoliciesForm } from "@/features/database/channels-policy-form";
import { PolicyType } from "@/features/database/channels-policy.schema";
import {
@@ -6,7 +6,7 @@ import {humanReadableDate} from "@/utils/date-formatting";
import {CheckCircle2, XCircle} from "lucide-react";
import {Badge} from "@/components/ui/badge";
import {NotificationLogModal} from "@/features/notifications/notification-log-modal";
import {getChannelIcon} from "@/features/channel/channels-helpers";
import {getChannelIcon} from "@/features/channel/components/channels-helpers";
export function notificationLogsColumns(): ColumnDef<NotificationLogWithRelations>[] {
@@ -3,7 +3,7 @@
import { useMutation } from "@tanstack/react-query";
import { useOnboarding } from "@onboardjs/react";
import { toast } from "sonner";
import { addNotificationChannelAction } from "@/features/channel/notifications/channel.action";
import { addNotificationChannelAction } from "@/features/channel/components/notifications/channel.action";
import type { OnboardingChannel } from "@/features/onboarding/types";
type NotifierInput = {
@@ -3,7 +3,7 @@
import { useMutation } from "@tanstack/react-query";
import { useOnboarding } from "@onboardjs/react";
import { toast } from "sonner";
import { addStorageChannelAction } from "@/features/channel/storages/channel.action";
import { addStorageChannelAction } from "@/features/channel/components/storages/channel.action";
import type { OnboardingChannel } from "@/features/onboarding/types";
type StorageInput = {
@@ -3,7 +3,7 @@
import { useMutation } from "@tanstack/react-query";
import { useOnboarding } from "@onboardjs/react";
import { toast } from "sonner";
import { removeNotificationChannelAction } from "@/features/channel/notifications/channel.action";
import { removeNotificationChannelAction } from "@/features/channel/components/notifications/channel.action";
import type { OnboardingChannel } from "@/features/onboarding/types";
export const useRemoveNotifier = () => {
@@ -3,7 +3,7 @@
import { useMutation } from "@tanstack/react-query";
import { useOnboarding } from "@onboardjs/react";
import { toast } from "sonner";
import { removeStorageChannelAction } from "@/features/channel/storages/channel.action";
import { removeStorageChannelAction } from "@/features/channel/components/storages/channel.action";
import type { OnboardingChannel } from "@/features/onboarding/types";
export const useRemoveStorage = () => {
@@ -17,7 +17,7 @@ import type {
OnboardingChannel,
OnboardingDefaultsData,
} from "@/features/onboarding/types";
import { getChannelIcon } from "@/features/channel/channels-helpers";
import { getChannelIcon } from "@/features/channel/components/channels-helpers";
import { updateNotificationSettingsAction } from "@/features/settings/notification.action";
import { updateStorageSettingsAction } from "@/features/settings/storage.action";
import { updateAvatarModeAction } from "@/features/settings/avatar.action";
@@ -14,9 +14,9 @@ import {
FormControl,
FormMessage,
} from "@/components/ui/form";
import { notificationProviders } from "@/features/channel/channels-notification-helper";
import { renderChannelForm } from "@/features/channel/channels-helpers";
import { NotificationChannelFormSchema } from "@/features/channel/channel-form.schema";
import { notificationProviders } from "@/features/channel/components/channels-notification-helper";
import { renderChannelForm } from "@/features/channel/components/channels-helpers";
import { NotificationChannelFormSchema } from "@/features/channel/schemas/channel-form.schema";
import { useAddNotifier } from "@/features/onboarding/hooks/use-add-notifier";
import { useRemoveNotifier } from "@/features/onboarding/hooks/use-remove-notifier";
import type { OnboardingChannel } from "@/features/onboarding/types";
@@ -14,9 +14,9 @@ import {
FormControl,
FormMessage,
} from "@/components/ui/form";
import { storageProviders } from "@/features/channel/channels-storage-helper";
import { renderChannelForm } from "@/features/channel/channels-helpers";
import { StorageChannelFormSchema } from "@/features/channel/channel-form.schema";
import { storageProviders } from "@/features/channel/components/channels-storage-helper";
import { renderChannelForm } from "@/features/channel/components/channels-helpers";
import { StorageChannelFormSchema } from "@/features/channel/schemas/channel-form.schema";
import { useAddStorage } from "@/features/onboarding/hooks/use-add-storage";
import { useRemoveStorage } from "@/features/onboarding/hooks/use-remove-storage";
import type { OnboardingChannel } from "@/features/onboarding/types";
@@ -16,7 +16,7 @@ import {
import {
updateNotificationChannelsOrganizationAction, updateStorageChannelsOrganizationAction
} from "@/features/organizations/channels-organization.action";
import {ChannelKind} from "@/features/channel/channels-helpers";
import {ChannelKind} from "@/features/channel/components/channels-helpers";
type ChannelOrganisationFormProps = {
@@ -4,8 +4,8 @@ import {CardsWithPagination} from "@/components/common/cards-with-pagination";
import {EmptyStatePlaceholder} from "@/components/common/empty-state-placeholder";
import {useState} from "react";
import {cn} from "@/lib/utils";
import {ChannelAddEditModal} from "@/features/channel/channel-add-edit-modal";
import {ChannelCard} from "@/features/channel/channel-card";
import {ChannelAddEditModal} from "@/features/channel/components/channel-add-edit-modal";
import {ChannelCard} from "@/features/channel/components/channel-card";
export type OrganizationNotifiersTabProps = {
organization: OrganizationWithMembers;
@@ -3,8 +3,8 @@ import {CardsWithPagination} from "@/components/common/cards-with-pagination";
import {EmptyStatePlaceholder} from "@/components/common/empty-state-placeholder";
import {useState} from "react";
import {cn} from "@/lib/utils";
import {ChannelAddEditModal} from "@/features/channel/channel-add-edit-modal";
import {ChannelCard} from "@/features/channel/channel-card";
import {ChannelAddEditModal} from "@/features/channel/components/channel-add-edit-modal";
import {ChannelCard} from "@/features/channel/components/channel-card";
import {StorageChannel} from "@/db/schema/12_storage-channel";
export type OrganizationNotifiersTabProps = {
@@ -13,7 +13,7 @@ import {
} from "@/components/ui/form";
import {Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from "@/components/ui/select";
import {useMutation} from "@tanstack/react-query";
import {getChannelIcon} from "@/features/channel/channels-helpers";
import {getChannelIcon} from "@/features/channel/components/channels-helpers";
import {NotificationChannelWith} from "@/db/schema/09_notification-channel";
import {
DefaultNotificationSchema, DefaultNotificationType
+1 -1
View File
@@ -20,7 +20,7 @@ import {
DefaultStorageSchema,
DefaultStorageType
} from "@/features/settings/storage.schema";
import {getChannelIcon} from "@/features/channel/channels-helpers";
import {getChannelIcon} from "@/features/channel/components/channels-helpers";
import {
updateStorageSettingsAction
} from "@/features/settings/storage.action";
+1 -1
View File
@@ -10,7 +10,7 @@ import {dispatchViaProvider} from "@/features/channel/storages";
import {StorageChannel} from "@/db/schema/12_storage-channel";
import {
StorageChannelFormType
} from "@/features/channel/channel-form.schema";
} from "@/features/channel/schemas/channel-form.schema";
import { logger } from "@/lib/logger";
const log = logger.child({ module: "features/storages/dispatch" });