feat(zoom): wire Zoom into Nova add-document dropdown +

settings
This commit is contained in:
Sreeram Sreedhar 2026-05-26 01:15:47 -04:00
parent aedcbeb321
commit 688c942546
5 changed files with 49 additions and 6 deletions

View file

@ -4,7 +4,7 @@ import { $fetch } from "@lib/api"
import { hasActivePlan } from "@lib/queries"
import type { ConnectionResponseSchema } from "@repo/validation/api"
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
import { GoogleDrive, Notion, OneDrive } from "@ui/assets/icons"
import { GoogleDrive, Notion, OneDrive, Zoom } from "@ui/assets/icons"
import { useCustomer } from "autumn-js/react"
import {
Check,
@ -48,7 +48,7 @@ const GDRIVE_SCOPE_LABELS: Record<GDriveSyncScope, string> = {
type Connection = z.infer<typeof ConnectionResponseSchema>
type ConnectorProvider = "google-drive" | "notion" | "onedrive"
type ConnectorProvider = "google-drive" | "notion" | "onedrive" | "zoom"
const CONNECTORS: Record<
ConnectorProvider,
@ -77,6 +77,12 @@ const CONNECTORS: Record<
documentLabel: "documents",
icon: OneDrive,
},
zoom: {
title: "Zoom",
description: "Sync meeting notes, transcripts, and AI summaries",
documentLabel: "meetings",
icon: Zoom,
},
} as const
/** Extract typed metadata from a connection, with runtime validation. */
@ -753,6 +759,23 @@ export function ConnectContent({ selectedProject }: ConnectContentProps) {
</span>
</div>
</DropdownMenuItem>
<DropdownMenuItem
onClick={() => {
setConnectingProvider("zoom")
addConnectionMutation.mutate({ provider: "zoom" })
}}
className="flex items-start gap-2.5 px-3 py-2.5 rounded-md cursor-pointer text-white opacity-60 hover:opacity-100 hover:bg-[#293952]/40 focus:bg-[#293952]/40 focus:opacity-100"
>
<Zoom className="size-5 mt-0.5 shrink-0" />
<div className="flex flex-col gap-0.5 min-w-0">
<span className="text-[14px] font-medium text-[#FAFAFA] leading-tight">
Zoom
</span>
<span className="text-[11px] text-[#737373] leading-tight">
Meetings & transcripts
</span>
</div>
</DropdownMenuItem>
</div>
</div>
</DropdownMenuContent>

View file

@ -4,7 +4,7 @@ import { dmSans125ClassName } from "@/lib/fonts"
import { cn } from "@lib/utils"
import { $fetch } from "@lib/api"
import { hasActivePlan } from "@lib/queries"
import { GoogleDrive, Notion, OneDrive } from "@ui/assets/icons"
import { GoogleDrive, Notion, OneDrive, Zoom } from "@ui/assets/icons"
import { useCustomer } from "autumn-js/react"
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
import {
@ -68,6 +68,12 @@ const CONNECTORS = {
icon: OneDrive,
documentLabel: "documents",
},
zoom: {
title: "Zoom",
description: "Sync meeting notes, transcripts, and AI summaries",
icon: Zoom,
documentLabel: "meetings",
},
} as const
type ConnectorProvider = keyof typeof CONNECTORS

View file

@ -42,6 +42,7 @@ export const PROVIDER_DISPLAY_NAMES: Record<string, string> = {
github: "GitHub",
"web-crawler": "Web Crawler",
s3: "S3",
zoom: "Zoom",
}
/** Provider type union matching the backend import endpoint */
@ -53,3 +54,4 @@ export type ImportProvider =
| "github"
| "web-crawler"
| "s3"
| "zoom"

View file

@ -84,13 +84,13 @@ export const apiSchema = createSchema({
redirectUrl: z.string().optional(),
}),
output: z.object({
authLink: z.string(),
expiresIn: z.string(),
authLink: z.string().optional(),
expiresIn: z.string().optional(),
id: z.string(),
redirectsTo: z.string().optional(),
}),
params: z.object({
provider: z.enum(["google-drive", "notion", "onedrive"]),
provider: z.enum(["google-drive", "notion", "onedrive", "zoom"]),
}),
},
@ -158,6 +158,7 @@ export const apiSchema = createSchema({
"github",
"web-crawler",
"s3",
"zoom",
]),
}),
},

File diff suppressed because one or more lines are too long