"use client" import { useState } from "react" import { useSubscriptions } from "@/lib/queries/use-subscriptions" import { useCreateFolder, useRenameFolder, useDeleteFolder, } from "@/lib/queries/use-folder-mutations" import { useUserProfile } from "@/lib/queries/use-user-profile" import { TIER_LIMITS } from "@asa-news/shared" export function FoldersSettings() { const [newFolderName, setNewFolderName] = useState("") const [searchQuery, setSearchQuery] = useState("") const { data: subscriptionsData, isLoading } = useSubscriptions() const { data: userProfile } = useUserProfile() const createFolder = useCreateFolder() const renameFolder = useRenameFolder() const deleteFolder = useDeleteFolder() const folders = subscriptionsData?.folders ?? [] const subscriptions = subscriptionsData?.subscriptions ?? [] const tier = userProfile?.tier ?? "free" const tierLimits = TIER_LIMITS[tier] function feedCountForFolder(folderIdentifier: string): number { return subscriptions.filter( (subscription) => subscription.folderIdentifier === folderIdentifier ).length } function handleCreateFolder(event: React.FormEvent) { event.preventDefault() const trimmedName = newFolderName.trim() if (!trimmedName) return createFolder.mutate({ name: trimmedName }) setNewFolderName("") } if (isLoading) { return
loading folders ...
} const normalizedQuery = searchQuery.toLowerCase().trim() const filteredFolders = normalizedQuery ? folders.filter((folder) => folder.name.toLowerCase().includes(normalizedQuery)) : folders return ({folders.length} / {tierLimits.maximumFolders} folders used
{folders.length > 5 && ( setSearchQuery(event.target.value)} placeholder="search folders..." className="w-full border border-border bg-background-primary px-3 py-1.5 text-text-primary outline-none placeholder:text-text-dim focus:border-text-dim" /> )}{folders.length === 0 ? "no folders yet" : "no folders match your search"}
) : (