import { create } from "zustand";

export interface SenderItem {
  id: string;
  name: string;
  fromEmail: string;
  provider: "SMTP" | "SES";
  smtpHost: string | null;
  smtpPort: number | null;
  smtpUser: string | null;
  domainId: string | null;
  domain: { id: string; domain: string } | null;
}

interface SendersState {
  senders: SenderItem[];
  setSenders: (senders: SenderItem[]) => void;
  addSender: (sender: SenderItem) => void;
  updateSenderItem: (sender: SenderItem) => void;
  removeSender: (id: string) => void;
}

export const useSendersStore = create<SendersState>((set) => ({
  senders: [],

  setSenders: (senders) => set({ senders }),
  addSender: (sender) => set((state) => ({ senders: [sender, ...state.senders] })),
  updateSenderItem: (sender) =>
    set((state) => ({
      senders: state.senders.map((s) => (s.id === sender.id ? sender : s)),
    })),
  removeSender: (id) => set((state) => ({ senders: state.senders.filter((s) => s.id !== id) })),
}));
