feat: Remove YouTube connector and associated components, streamline source addition process with new YouTube crawler view, and enhance connector management UI for improved user experience.

This commit is contained in:
Anish Sarkar 2025-12-31 18:17:03 +05:30
parent de63e77f78
commit 75119bf06b
13 changed files with 405 additions and 331 deletions

View file

@ -1,16 +0,0 @@
"use client";
import { useParams, useRouter } from "next/navigation";
import { useEffect } from "react";
export default function YouTubeRedirect() {
const params = useParams();
const router = useRouter();
const search_space_id = params.search_space_id as string;
useEffect(() => {
router.replace(`/dashboard/${search_space_id}/sources/add?tab=youtube`);
}, [search_space_id, router]);
return null;
}

View file

@ -1,40 +1,13 @@
"use client";
import { IconBrandYoutube } from "@tabler/icons-react";
import { Cable, Database } from "lucide-react";
import { Database } from "lucide-react";
import { motion } from "motion/react";
import { useParams, useRouter, useSearchParams } from "next/navigation";
import { useEffect, useState } from "react";
import { useParams } from "next/navigation";
import { ConnectorsTab } from "@/components/sources/ConnectorsTab";
import { YouTubeTab } from "@/components/sources/YouTubeTab";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { trackSourcesTabViewed } from "@/lib/posthog/events";
export default function AddSourcesPage() {
const params = useParams();
const router = useRouter();
const searchParams = useSearchParams();
const search_space_id = params.search_space_id as string;
const [activeTab, setActiveTab] = useState("youtube");
// Handle tab from query parameter
useEffect(() => {
const tabParam = searchParams.get("tab");
if (tabParam && ["youtube", "connectors"].includes(tabParam)) {
setActiveTab(tabParam);
}
}, [searchParams]);
const handleTabChange = (value: string) => {
setActiveTab(value);
// Track tab view
trackSourcesTabViewed(Number(search_space_id), value);
};
// Track initial tab view
useEffect(() => {
trackSourcesTabViewed(Number(search_space_id), activeTab);
}, []);
return (
<div className="container mx-auto py-8 px-4 min-h-[calc(100vh-64px)]">
@ -55,30 +28,10 @@ export default function AddSourcesPage() {
</p>
</div>
{/* Tabs */}
<Tabs value={activeTab} onValueChange={handleTabChange} className="w-full">
<TabsList className="grid w-full max-w-2xl mx-auto grid-cols-2 h-12">
<TabsTrigger value="youtube" className="flex items-center gap-2">
<IconBrandYoutube className="h-4 w-4" />
YouTube
</TabsTrigger>
<TabsTrigger value="connectors" className="flex items-center gap-2">
<Cable className="h-4 w-4" />
<span className="hidden sm:inline">Connectors</span>
<span className="sm:hidden">More</span>
</TabsTrigger>
</TabsList>
<div className="mt-8">
<TabsContent value="youtube" className="space-y-6">
<YouTubeTab searchSpaceId={search_space_id} />
</TabsContent>
<TabsContent value="connectors" className="space-y-6">
<ConnectorsTab searchSpaceId={search_space_id} />
</TabsContent>
</div>
</Tabs>
{/* Connectors */}
<div className="mt-8">
<ConnectorsTab searchSpaceId={search_space_id} />
</div>
</motion.div>
</div>
);