App store metadata refactor (#2495)

* Delete api

* Fixes circular dependencies

* Revert "Delete api"

This reverts commit 174177a8331fc376b2dc7abda2c7adc56b24dd60.

* Delete _metadata.ts

* Update metadata.ts
This commit is contained in:
Omar López 2022-04-14 20:04:21 -06:00 committed by GitHub
parent 94f64f9730
commit ba73960a02
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 446 additions and 362 deletions

View file

@ -1,14 +1,14 @@
import { App } from "@calcom/types/App";
import appStore from ".";
import appStoreMetadata from "./metadata";
/** Mainly to use in listings for the frontend, use in getStaticProps or getServerSideProps */
export function getAppRegistry() {
return Object.values(appStore).reduce((apps, app) => {
return Object.values(appStoreMetadata).reduce((apps, app) => {
// Skip if app isn't installed
if (!app.metadata.installed) return apps;
if (!app.installed) return apps;
// Let's not leak api keys to the front end
const { key, ...metadata } = app.metadata;
const { key, ...metadata } = app;
apps.push(metadata);
return apps;
}, [] as Omit<App, "key">[]);

View file

@ -0,0 +1,26 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: _package.name,
description: _package.description,
installed: true,
category: "video",
// If using static next public folder, can then be referenced from the base URL (/).
imageSrc: "/api/app-store/_example/icon.svg",
logo: "/api/app-store/_example/icon.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "example_video",
title: "Example App",
trending: true,
type: "example_video",
url: "https://cal.com/",
variant: "conferencing",
verified: true,
email: "help@cal.com",
} as App;
export default metadata;

View file

@ -1,27 +1,3 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: _package.name,
description: _package.description,
installed: true,
category: "video",
// If using static next public folder, can then be referenced from the base URL (/).
imageSrc: "/api/app-store/_example/icon.svg",
logo: "/api/app-store/_example/icon.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "example_video",
title: "Example App",
trending: true,
type: "example_video",
url: "https://cal.com/",
variant: "conferencing",
verified: true,
email: "help@cal.com",
} as App;
export * as api from "./api";
export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,25 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: "Apple Calendar",
description: _package.description,
installed: true,
type: "apple_calendar",
title: "Apple Calendar",
imageSrc: "/api/app-store/applecalendar/icon.svg",
variant: "calendar",
category: "calendar",
logo: "/api/app-store/applecalendar/icon.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "apple-calendar",
trending: false,
url: "https://cal.com/",
verified: true,
email: "help@cal.com",
} as App;
export default metadata;

View file

@ -1,27 +1,4 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: "Apple Calendar",
description: _package.description,
installed: true,
type: "apple_calendar",
title: "Apple Calendar",
imageSrc: "/api/app-store/applecalendar/icon.svg",
variant: "calendar",
category: "calendar",
logo: "/api/app-store/applecalendar/icon.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "apple-calendar",
trending: false,
url: "https://cal.com/",
verified: true,
email: "help@cal.com",
} as App;
export * as api from "./api";
export * as components from "./components";
export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,25 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: "CalDav Server",
description: _package.description,
installed: true,
type: "caldav_calendar",
title: "CalDav Server",
imageSrc: "/api/app-store/caldavcalendar/icon.svg",
variant: "calendar",
category: "calendar",
logo: "/api/app-store/caldavcalendar/icon.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "caldav-calendar",
trending: false,
url: "https://cal.com/",
verified: true,
email: "help@cal.com",
} as App;
export default metadata;

View file

@ -0,0 +1,30 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Cal Video",
description: _package.description,
installed: !!process.env.DAILY_API_KEY,
type: "daily_video",
imageSrc: "/api/app-store/dailyvideo/icon.svg",
variant: "conferencing",
url: "https://daily.co",
trending: true,
logo: "/api/app-store/dailyvideo/icon.svg",
publisher: "Cal.com",
verified: true,
rating: 4.3, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 69, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "video",
slug: "dailyvideo",
title: "Cal Video",
isGlobal: true,
email: "help@cal.com",
locationType: LocationType.Daily,
locationLabel: "Cal Video",
key: { apikey: process.env.DAILY_API_KEY },
} as App;
export default metadata;

View file

@ -1,30 +1,2 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Cal Video",
description: _package.description,
installed: !!process.env.DAILY_API_KEY,
type: "daily_video",
imageSrc: "/api/app-store/dailyvideo/icon.svg",
variant: "conferencing",
url: "https://daily.co",
trending: true,
logo: "/api/app-store/dailyvideo/icon.svg",
publisher: "Cal.com",
verified: true,
rating: 4.3, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 69, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "video",
slug: "dailyvideo",
title: "Cal Video",
isGlobal: true,
email: "help@cal.com",
locationType: LocationType.Daily,
locationLabel: "Cal Video",
key: { apikey: process.env.DAILY_API_KEY },
} as App;
export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,29 @@
import { validJson } from "@calcom/lib/jsonUtils";
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Google Calendar",
description: _package.description,
installed: !!(process.env.GOOGLE_API_CREDENTIALS && validJson(process.env.GOOGLE_API_CREDENTIALS)),
type: "google_calendar",
title: "Google Calendar",
imageSrc: "/api/app-store/googlecalendar/icon.svg",
variant: "calendar",
category: "calendar",
logo: "/api/app-store/googlecalendar/icon.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "google-calendar",
trending: false,
url: "https://cal.com/",
verified: true,
email: "help@cal.com",
locationType: LocationType.GoogleMeet,
locationLabel: "Google Meet",
} as App;
export default metadata;

View file

@ -1,30 +1,3 @@
import { validJson } from "@calcom/lib/jsonUtils";
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Google Calendar",
description: _package.description,
installed: !!(process.env.GOOGLE_API_CREDENTIALS && validJson(process.env.GOOGLE_API_CREDENTIALS)),
type: "google_calendar",
title: "Google Calendar",
imageSrc: "/api/app-store/googlecalendar/icon.svg",
variant: "calendar",
category: "calendar",
logo: "/api/app-store/googlecalendar/icon.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "google-calendar",
trending: false,
url: "https://cal.com/",
verified: true,
email: "help@cal.com",
locationType: LocationType.GoogleMeet,
locationLabel: "Google Meet",
} as App;
export * as api from "./api";
export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,29 @@
import { validJson } from "@calcom/lib/jsonUtils";
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Google Meet",
description: _package.description,
installed: !!(process.env.GOOGLE_API_CREDENTIALS && validJson(process.env.GOOGLE_API_CREDENTIALS)),
slug: "google-meet",
category: "video",
type: "google_video",
title: "Google Meet",
imageSrc: "https://cdn.iconscout.com/icon/free/png-256/google-meet-2923654-2416657.png",
variant: "conferencing",
logo: "https://cdn.iconscout.com/icon/free/png-256/google-meet-2923654-2416657.png",
publisher: "Cal.com",
rating: 5,
reviews: 69,
trending: false,
url: "https://cal.com/",
verified: true,
email: "help@cal.com",
locationType: LocationType.GoogleMeet,
locationLabel: "Google Meet",
} as App;
export default metadata;

View file

@ -1,30 +1,3 @@
import { validJson } from "@calcom/lib/jsonUtils";
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Google Meet",
description: _package.description,
installed: !!(process.env.GOOGLE_API_CREDENTIALS && validJson(process.env.GOOGLE_API_CREDENTIALS)),
slug: "google-meet",
category: "video",
type: "google_video",
title: "Google Meet",
imageSrc: "https://cdn.iconscout.com/icon/free/png-256/google-meet-2923654-2416657.png",
variant: "conferencing",
logo: "https://cdn.iconscout.com/icon/free/png-256/google-meet-2923654-2416657.png",
publisher: "Cal.com",
rating: 5,
reviews: 69,
trending: false,
url: "https://cal.com/",
verified: true,
email: "help@cal.com",
locationType: LocationType.GoogleMeet,
locationLabel: "Google Meet",
} as App;
// export * as api from "./api";
// export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,31 @@
import { randomString } from "@calcom/lib/random";
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Huddle01",
description: _package.description,
installed: true,
type: "huddle01_video",
imageSrc: "/api/app-store/huddle01video/icon.svg",
variant: "conferencing",
logo: "/api/app-store/huddle01video/icon.svg",
publisher: "huddle01.com",
url: "https://huddle01.com",
verified: true,
rating: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "web3",
slug: "huddle01_video",
title: "Huddle01",
trending: true,
isGlobal: true,
email: "support@huddle01.com",
locationType: LocationType.Huddle01,
locationLabel: "Huddle01 Video",
key: { apikey: randomString(12) },
} as App;
export default metadata;

View file

@ -1,31 +1,2 @@
import { randomString } from "@calcom/lib/random";
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Huddle01",
description: _package.description,
installed: true,
type: "huddle01_video",
imageSrc: "/api/app-store/huddle01video/icon.svg",
variant: "conferencing",
logo: "/api/app-store/huddle01video/icon.svg",
publisher: "huddle01.com",
url: "https://huddle01.com",
verified: true,
rating: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "web3",
slug: "huddle01_video",
title: "Huddle01",
trending: true,
isGlobal: true,
email: "support@huddle01.com",
locationType: LocationType.Huddle01,
locationLabel: "Huddle01 Video",
key: { apikey: randomString(12) },
} as App;
export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,29 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Jitsi Video",
description: _package.description,
installed: true,
type: "jitsi_video",
imageSrc: "/api/app-store/jitsivideo/icon.svg",
variant: "conferencing",
logo: "/api/app-store/jitsivideo/icon.svg",
publisher: "Cal.com",
url: "https://jitsi.org/",
verified: true,
rating: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "video",
slug: "jitsi_video",
title: "Jitsi Meet",
trending: true,
isGlobal: true,
email: "help@cal.com",
locationType: LocationType.Jitsi,
locationLabel: "Jitsi Video",
} as App;
export default metadata;

View file

@ -1,29 +1,2 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Jitsi Video",
description: _package.description,
installed: true,
type: "jitsi_video",
imageSrc: "/api/app-store/jitsivideo/icon.svg",
variant: "conferencing",
logo: "/api/app-store/jitsivideo/icon.svg",
publisher: "Cal.com",
url: "https://jitsi.org/",
verified: true,
rating: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 0, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "video",
slug: "jitsi_video",
title: "Jitsi Meet",
trending: true,
isGlobal: true,
email: "help@cal.com",
locationType: LocationType.Jitsi,
locationLabel: "Jitsi Video",
} as App;
export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,31 @@
import { metadata as applecalendar } from "./applecalendar/_metadata";
import { metadata as caldavcalendar } from "./caldavcalendar/_metadata";
import { metadata as dailyvideo } from "./dailyvideo/_metadata";
import { metadata as googlecalendar } from "./googlecalendar/_metadata";
import { metadata as googlevideo } from "./googlevideo/_metadata";
import { metadata as huddle01video } from "./huddle01video/_metadata";
import { metadata as jitsivideo } from "./jitsivideo/_metadata";
import { metadata as office365calendar } from "./office365calendar/_metadata";
import { metadata as office365video } from "./office365video/_metadata";
import { metadata as slackmessaging } from "./slackmessaging/_metadata";
import { metadata as stripepayment } from "./stripepayment/_metadata";
import { metadata as tandemvideo } from "./tandemvideo/_metadata";
import { metadata as zoomvideo } from "./zoomvideo/_metadata";
export const appStoreMetadata = {
applecalendar,
caldavcalendar,
dailyvideo,
googlecalendar,
googlevideo,
huddle01video,
jitsivideo,
office365calendar,
office365video,
slackmessaging,
stripepayment,
tandemvideo,
zoomvideo,
};
export default appStoreMetadata;

View file

@ -0,0 +1,25 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: "Office 365 / Outlook.com Calendar",
description: _package.description,
installed: !!(process.env.MS_GRAPH_CLIENT_ID && process.env.MS_GRAPH_CLIENT_SECRET),
type: "office365_calendar",
title: "Office 365 / Outlook.com Calendar",
imageSrc: "/api/app-store/office365calendar/icon.svg",
variant: "calendar",
category: "calendar",
logo: "/api/app-store/office365calendar/icon.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "office365-calendar",
trending: false,
url: "https://cal.com/",
verified: true,
email: "help@cal.com",
} as App;
export default metadata;

View file

@ -1,26 +1,3 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: "Office 365 / Outlook.com Calendar",
description: _package.description,
installed: !!(process.env.MS_GRAPH_CLIENT_ID && process.env.MS_GRAPH_CLIENT_SECRET),
type: "office365_calendar",
title: "Office 365 / Outlook.com Calendar",
imageSrc: "/api/app-store/office365calendar/icon.svg",
variant: "calendar",
category: "calendar",
logo: "/api/app-store/office365calendar/icon.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "office365-calendar",
trending: false,
url: "https://cal.com/",
verified: true,
email: "help@cal.com",
} as App;
export * as api from "./api";
export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,28 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Microsoft 365/Teams",
description: _package.description,
installed: !!(process.env.MS_GRAPH_CLIENT_ID && process.env.MS_GRAPH_CLIENT_SECRET),
type: "office365_video",
imageSrc: "/api/app-store/office365video/icon.svg",
variant: "conferencing",
logo: "/api/app-store/office365video/icon.svg",
publisher: "Cal.com",
url: "https://www.microsoft.com/en-ca/microsoft-teams/group-chat-software",
verified: true,
rating: 4.3, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 69, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "video",
slug: "msteams",
title: "MS Teams",
trending: true,
email: "help@cal.com",
locationType: LocationType.Teams,
locationLabel: "MS Teams",
} as App;
export default metadata;

View file

@ -1,29 +1,3 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Microsoft 365/Teams",
description: _package.description,
installed: !!(process.env.MS_GRAPH_CLIENT_ID && process.env.MS_GRAPH_CLIENT_SECRET),
type: "office365_video",
imageSrc: "/api/app-store/office365video/icon.svg",
variant: "conferencing",
logo: "/api/app-store/office365video/icon.svg",
publisher: "Cal.com",
url: "https://www.microsoft.com/en-ca/microsoft-teams/group-chat-software",
verified: true,
rating: 4.3, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 69, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "video",
slug: "msteams",
title: "MS Teams",
trending: true,
email: "help@cal.com",
locationType: LocationType.Teams,
locationLabel: "MS Teams",
} as App;
export * as api from "./api";
export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,29 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: "Slack App",
description: _package.description,
installed: !!(
process.env.SLACK_CLIENT_ID &&
process.env.SLACK_CLIENT_SECRET &&
process.env.SLACK_SIGNING_SECRET
),
category: "messaging",
imageSrc: "/apps/slack.svg",
logo: "/apps/slack.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "slack",
title: "Slack App",
trending: true,
type: "slack_messaging",
url: "https://slack.com/",
variant: "conferencing",
verified: true,
email: "help@cal.com",
} as App;
export default metadata;

View file

@ -1,29 +1,2 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: "Slack App",
description: _package.description,
installed: !!(
process.env.SLACK_CLIENT_ID &&
process.env.SLACK_CLIENT_SECRET &&
process.env.SLACK_SIGNING_SECRET
),
category: "messaging",
imageSrc: "/apps/slack.svg",
logo: "/apps/slack.svg",
publisher: "Cal.com",
rating: 5,
reviews: 69,
slug: "slack",
title: "Slack App",
trending: true,
type: "slack_messaging",
url: "https://slack.com/",
variant: "conferencing",
verified: true,
email: "help@cal.com",
} as App;
export * as api from "./api";
export { default } from "./_metadata";

View file

@ -0,0 +1,30 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: "Stripe",
description: _package.description,
installed: !!(
process.env.STRIPE_CLIENT_ID &&
process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY &&
process.env.STRIPE_PRIVATE_KEY
),
slug: "stripe",
category: "payment",
logo: "/api/app-store/stripepayment/icon.svg",
rating: 4.6,
trending: true,
reviews: 69,
imageSrc: "/api/app-store/stripepayment/icon.svg",
publisher: "Cal.com",
title: "Stripe",
type: "stripe_payment",
url: "https://cal.com/",
docsUrl: "https://stripe.com/docs",
variant: "payment",
verified: true,
email: "help@cal.com",
} as App;
export default metadata;

View file

@ -1,30 +1,2 @@
import type { App } from "@calcom/types/App";
import _package from "./package.json";
export const metadata = {
name: "Stripe",
description: _package.description,
installed: !!(
process.env.STRIPE_CLIENT_ID &&
process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY &&
process.env.STRIPE_PRIVATE_KEY
),
slug: "stripe",
category: "payment",
logo: "/api/app-store/stripepayment/icon.svg",
rating: 4.6,
trending: true,
reviews: 69,
imageSrc: "/api/app-store/stripepayment/icon.svg",
publisher: "Cal.com",
title: "Stripe",
type: "stripe_payment",
url: "https://cal.com/",
docsUrl: "https://stripe.com/docs",
variant: "payment",
verified: true,
email: "help@cal.com",
} as App;
export * as api from "./api";
export { metadata } from "./_metadata";

View file

@ -0,0 +1,29 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Tandem Video",
description: _package.description,
installed: !!(process.env.TANDEM_CLIENT_ID && process.env.TANDEM_CLIENT_SECRET),
type: "tandem_video",
title: "Tandem Video",
imageSrc: "/api/app-store/tandemvideo/icon.svg",
variant: "conferencing",
slug: "tandem",
category: "video",
logo: "/api/app-store/tandemvideo/icon.svg",
publisher: "",
url: "",
verified: true,
trending: true,
rating: 0,
reviews: 0,
isGlobal: false,
email: "help@cal.com",
locationType: LocationType.Tandem,
locationLabel: "Tandem Video",
} as App;
export default metadata;

View file

@ -1,30 +1,3 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Tandem Video",
description: _package.description,
installed: !!(process.env.TANDEM_CLIENT_ID && process.env.TANDEM_CLIENT_SECRET),
type: "tandem_video",
title: "Tandem Video",
imageSrc: "/api/app-store/tandemvideo/icon.svg",
variant: "conferencing",
slug: "tandem",
category: "video",
logo: "/api/app-store/tandemvideo/icon.svg",
publisher: "",
url: "",
verified: true,
trending: true,
rating: 0,
reviews: 0,
isGlobal: false,
email: "help@cal.com",
locationType: LocationType.Tandem,
locationLabel: "Tandem Video",
} as App;
export * as api from "./api";
export * as lib from "./lib";
export { metadata } from "./_metadata";

View file

@ -3,11 +3,13 @@ import { TFunction } from "next-i18next";
import type { App } from "@calcom/types/App";
import appStore from ".";
import { LocationType } from "./locations";
// If you import this file on any app it should produce circular dependency
// import appStore from "./index";
import { appStoreMetadata } from "./metadata";
const ALL_APPS_MAP = Object.keys(appStore).reduce((store, key) => {
store[key] = appStore[key as keyof typeof appStore].metadata;
const ALL_APPS_MAP = Object.keys(appStoreMetadata).reduce((store, key) => {
store[key] = appStoreMetadata[key as keyof typeof appStoreMetadata];
return store;
}, {} as Record<string, App>);

View file

@ -0,0 +1,28 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Zoom Video",
description: _package.description,
installed: !!(process.env.ZOOM_CLIENT_ID && process.env.ZOOM_CLIENT_SECRET),
type: "zoom_video",
imageSrc: "/api/app-store/zoomvideo/icon.svg",
variant: "conferencing",
logo: "/api/app-store/zoomvideo/icon.svg",
publisher: "Cal.com",
url: "https://zoom.us/",
verified: true,
rating: 4.3, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 69, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "video",
slug: "zoom",
title: "Zoom Video",
trending: true,
email: "help@cal.com",
locationType: LocationType.Zoom,
locationLabel: "Zoom Video",
} as App;
export default metadata;

View file

@ -1,29 +1,3 @@
import type { App } from "@calcom/types/App";
import { LocationType } from "../locations";
import _package from "./package.json";
export const metadata = {
name: "Zoom Video",
description: _package.description,
installed: !!(process.env.ZOOM_CLIENT_ID && process.env.ZOOM_CLIENT_SECRET),
type: "zoom_video",
imageSrc: "/api/app-store/zoomvideo/icon.svg",
variant: "conferencing",
logo: "/api/app-store/zoomvideo/icon.svg",
publisher: "Cal.com",
url: "https://zoom.us/",
verified: true,
rating: 4.3, // TODO: placeholder for now, pull this from TrustPilot or G2
reviews: 69, // TODO: placeholder for now, pull this from TrustPilot or G2
category: "video",
slug: "zoom",
title: "Zoom Video",
trending: true,
email: "help@cal.com",
locationType: LocationType.Zoom,
locationLabel: "Zoom Video",
} as App;
export * as api from "./api";
export * as lib from "./lib";
export { metadata } from "./_metadata";