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:
parent
94f64f9730
commit
ba73960a02
30 changed files with 446 additions and 362 deletions
|
@ -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">[]);
|
||||
|
|
26
packages/app-store/_example/_metadata.ts
Normal file
26
packages/app-store/_example/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
25
packages/app-store/applecalendar/_metadata.ts
Normal file
25
packages/app-store/applecalendar/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
25
packages/app-store/caldavcalendar/_metadata.ts
Normal file
25
packages/app-store/caldavcalendar/_metadata.ts
Normal 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;
|
30
packages/app-store/dailyvideo/_metadata.ts
Normal file
30
packages/app-store/dailyvideo/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
29
packages/app-store/googlecalendar/_metadata.ts
Normal file
29
packages/app-store/googlecalendar/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
29
packages/app-store/googlevideo/_metadata.ts
Normal file
29
packages/app-store/googlevideo/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
31
packages/app-store/huddle01video/_metadata.ts
Normal file
31
packages/app-store/huddle01video/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
29
packages/app-store/jitsivideo/_metadata.ts
Normal file
29
packages/app-store/jitsivideo/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
31
packages/app-store/metadata.ts
Normal file
31
packages/app-store/metadata.ts
Normal 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;
|
25
packages/app-store/office365calendar/_metadata.ts
Normal file
25
packages/app-store/office365calendar/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
28
packages/app-store/office365video/_metadata.ts
Normal file
28
packages/app-store/office365video/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
29
packages/app-store/slackmessaging/_metadata.ts
Normal file
29
packages/app-store/slackmessaging/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
30
packages/app-store/stripepayment/_metadata.ts
Normal file
30
packages/app-store/stripepayment/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
29
packages/app-store/tandemvideo/_metadata.ts
Normal file
29
packages/app-store/tandemvideo/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
|
@ -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>);
|
||||
|
||||
|
|
28
packages/app-store/zoomvideo/_metadata.ts
Normal file
28
packages/app-store/zoomvideo/_metadata.ts
Normal 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;
|
|
@ -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";
|
||||
|
|
Loading…
Reference in a new issue