feat: watchlist (premium), mobile bottom nav
Build & Push Docker Image / build (push) Successful in 2m35s
Build & Push Docker Image / build (push) Successful in 2m35s
This commit is contained in:
@@ -41,9 +41,11 @@ import {
|
||||
} from "@/components/ui/select";
|
||||
import { useToast } from "@/hooks/use-toast";
|
||||
import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, LineChart, Line, Legend } from "recharts";
|
||||
import { ExternalLink, Star, ArrowLeft, Plus, Pencil, Trash2, Link as LinkIcon, DollarSign, Euro } from "lucide-react";
|
||||
import { ExternalLink, Star, ArrowLeft, Plus, Pencil, Trash2, Link as LinkIcon, DollarSign, Euro, Bookmark } from "lucide-react";
|
||||
import { Link } from "wouter";
|
||||
import { useAuth } from "@/hooks/use-auth";
|
||||
import { useWatchlist } from "@/hooks/use-watchlist";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { useDeleteTool, getListToolsQueryKey } from "@workspace/api-client-react";
|
||||
import {
|
||||
AlertDialog,
|
||||
@@ -77,6 +79,7 @@ export default function ToolDetail() {
|
||||
const [deleteOpen, setDeleteOpen] = useState(false);
|
||||
|
||||
const { user, isAdmin, hasFeature } = useAuth();
|
||||
const { isWatched, toggle: toggleWatchlist, canWatchlist } = useWatchlist();
|
||||
const canManageCosts = hasFeature("costs");
|
||||
const hasTrash = hasFeature("trash");
|
||||
const deleteTool = useDeleteTool();
|
||||
@@ -355,6 +358,17 @@ export default function ToolDetail() {
|
||||
Based on {tool.ratingCount} reviews
|
||||
</div>
|
||||
|
||||
{canWatchlist && (
|
||||
<Button
|
||||
variant={isWatched(id) ? "default" : "outline"}
|
||||
className="w-full gap-2"
|
||||
onClick={() => toggleWatchlist(Number(id))}
|
||||
>
|
||||
<Bookmark className={cn("w-4 h-4", isWatched(id) && "fill-current")} />
|
||||
{isWatched(id) ? "Saved to watchlist" : "Save to watchlist"}
|
||||
</Button>
|
||||
)}
|
||||
|
||||
{tool.websiteUrl && (
|
||||
<Button asChild className="w-full mt-2" variant="outline">
|
||||
<a href={tool.websiteUrl} target="_blank" rel="noopener noreferrer">
|
||||
|
||||
Reference in New Issue
Block a user