mirror of
https://github.com/xCyanGrizzly/DragonsStash.git
synced 2026-05-11 06:11:15 +00:00
Bug fixes: - Fix channels not being scanned by paginating TDLib getChats (was only loading first batch, additional channels were unknown to TDLib) - Add per-channel getChat pre-load as safety net before scanning - Fix preview pictures not loading by checking previewData instead of previewMsgId for hasPreview flag - Prevent previewMsgId from being set when preview download fails Package Tags: - Add tags Text[] column to Package with migration backfilling from channel categories - Worker auto-inherits source channel category as initial tag - Tag filter dropdown and Tags column in STL Files table - Server actions for individual and bulk tag editing Kickstarters Tab: - New KickstarterHost, Kickstarter, and KickstarterPackage models - Full CRUD with delivery status, payment status, host management - Package linking (many-to-many with existing packages) - Sidebar entry with Gift icon - Table with search, filters, modal forms Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20 lines
705 B
TypeScript
20 lines
705 B
TypeScript
import { z } from "zod/v4";
|
|
|
|
export const kickstarterSchema = z.object({
|
|
name: z.string().min(1, "Name is required").max(200),
|
|
link: z.string().url().optional().or(z.literal("")),
|
|
filesUrl: z.string().url().optional().or(z.literal("")),
|
|
deliveryStatus: z.enum(["NOT_DELIVERED", "PARTIAL", "DELIVERED"]),
|
|
paymentStatus: z.enum(["PAID", "UNPAID"]),
|
|
hostId: z.string().optional().or(z.literal("")),
|
|
notes: z.string().max(2000).optional(),
|
|
});
|
|
|
|
export type KickstarterInput = z.infer<typeof kickstarterSchema>;
|
|
|
|
export const kickstarterHostSchema = z.object({
|
|
name: z.string().min(1, "Name is required").max(100),
|
|
});
|
|
|
|
export type KickstarterHostInput = z.infer<typeof kickstarterHostSchema>;
|