mirror of
https://github.com/khoaliber/LetterFeed.git
synced 2026-03-02 13:18:27 +00:00
feat: define search folder per newsletter #3
This commit is contained in:
@@ -36,6 +36,7 @@ const getInitialState = (newsletter: Newsletter | null | undefined) => {
|
||||
name: newsletter.name,
|
||||
slug: newsletter.slug || "",
|
||||
emails: newsletter.senders.map((s) => s.email),
|
||||
search_folder: newsletter.search_folder || "",
|
||||
move_to_folder: newsletter.move_to_folder || "",
|
||||
extract_content: newsletter.extract_content,
|
||||
}
|
||||
@@ -44,6 +45,7 @@ const getInitialState = (newsletter: Newsletter | null | undefined) => {
|
||||
name: "",
|
||||
slug: "",
|
||||
emails: [""],
|
||||
search_folder: "",
|
||||
move_to_folder: "",
|
||||
extract_content: false,
|
||||
}
|
||||
@@ -89,6 +91,7 @@ export function NewsletterDialog({ newsletter, isOpen, folderOptions, onOpenChan
|
||||
name: formData.name,
|
||||
slug: formData.slug,
|
||||
sender_emails: formData.emails.filter((email) => email.trim()),
|
||||
search_folder: formData.search_folder,
|
||||
move_to_folder: formData.move_to_folder,
|
||||
extract_content: formData.extract_content,
|
||||
}
|
||||
@@ -148,6 +151,28 @@ export function NewsletterDialog({ newsletter, isOpen, folderOptions, onOpenChan
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<Label htmlFor="search_folder">Folder to Search</Label>
|
||||
<Select
|
||||
value={formData.search_folder || "None"}
|
||||
onValueChange={(value) =>
|
||||
setFormData((prev) => ({ ...prev, search_folder: value === "None" ? "" : value }))
|
||||
}
|
||||
>
|
||||
<SelectTrigger>
|
||||
<SelectValue placeholder="Select folder or leave empty" />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="None">Default (use global setting)</SelectItem>
|
||||
{folderOptions.map((folder) => (
|
||||
<SelectItem key={folder} value={folder}>
|
||||
{folder}
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<Label htmlFor="move_to_folder">Move To Folder</Label>
|
||||
<Select
|
||||
|
||||
@@ -23,6 +23,7 @@ const mockNewsletter: Newsletter = {
|
||||
extract_content: false,
|
||||
senders: [{ id: "1", email: "current@example.com" }],
|
||||
entries_count: 5,
|
||||
search_folder: "",
|
||||
move_to_folder: "",
|
||||
}
|
||||
|
||||
@@ -62,6 +63,7 @@ describe("NewsletterDialog", () => {
|
||||
name: "My New Newsletter",
|
||||
slug: "my-new-newsletter",
|
||||
sender_emails: ["test@example.com"],
|
||||
search_folder: "",
|
||||
move_to_folder: "",
|
||||
extract_content: false,
|
||||
})
|
||||
@@ -109,6 +111,7 @@ describe("NewsletterDialog", () => {
|
||||
name: "Updated Name",
|
||||
slug: "existing-newsletter",
|
||||
sender_emails: ["current@example.com"],
|
||||
search_folder: "",
|
||||
move_to_folder: "",
|
||||
extract_content: false,
|
||||
})
|
||||
|
||||
@@ -11,6 +11,7 @@ export interface Newsletter {
|
||||
name: string
|
||||
slug: string | null
|
||||
is_active: boolean
|
||||
search_folder?: string | null
|
||||
move_to_folder?: string | null
|
||||
extract_content: boolean
|
||||
senders: { id: string; email: string }[]
|
||||
@@ -21,6 +22,7 @@ export interface NewsletterCreate {
|
||||
name: string;
|
||||
slug?: string | null;
|
||||
sender_emails: string[];
|
||||
search_folder?: string | null;
|
||||
move_to_folder?: string | null;
|
||||
extract_content: boolean;
|
||||
}
|
||||
@@ -29,6 +31,7 @@ export interface NewsletterUpdate {
|
||||
name: string;
|
||||
slug?: string | null;
|
||||
sender_emails: string[];
|
||||
search_folder?: string | null;
|
||||
move_to_folder?: string | null;
|
||||
extract_content: boolean;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user