diff --git a/packages/app-store/apps.metadata.generated.ts b/packages/app-store/apps.metadata.generated.ts index bff119d95f..c9e7999037 100644 --- a/packages/app-store/apps.metadata.generated.ts +++ b/packages/app-store/apps.metadata.generated.ts @@ -37,6 +37,7 @@ import { metadata as tandemvideo_meta } from "./tandemvideo/_metadata"; import { metadata as typeform_meta } from "./typeform/_metadata"; import { metadata as vital_meta } from "./vital/_metadata"; import { metadata as weather_in_your_calendar_meta } from "./weather_in_your_calendar/_metadata"; +import { metadata as whatsapp_meta } from "./whatsapp/_metadata"; import { metadata as whereby_meta } from "./whereby/_metadata"; import { metadata as wipemycalother_meta } from "./wipemycalother/_metadata"; import { metadata as zapier_meta } from "./zapier/_metadata"; @@ -78,6 +79,7 @@ export const appStoreMetadata = { typeform: typeform_meta, vital: vital_meta, weather_in_your_calendar: weather_in_your_calendar_meta, + whatsapp: whatsapp_meta, whereby: whereby_meta, wipemycalother: wipemycalother_meta, zapier: zapier_meta, diff --git a/packages/app-store/apps.server.generated.ts b/packages/app-store/apps.server.generated.ts index ad9e2e811d..097965b1ff 100644 --- a/packages/app-store/apps.server.generated.ts +++ b/packages/app-store/apps.server.generated.ts @@ -36,6 +36,7 @@ export const apiHandlers = { typeform: import("./typeform/api"), vital: import("./vital/api"), weather_in_your_calendar: import("./weather_in_your_calendar/api"), + whatsapp: import("./whatsapp/api"), whereby: import("./whereby/api"), wipemycalother: import("./wipemycalother/api"), zapier: import("./zapier/api"), diff --git a/packages/app-store/whatsapp/README.mdx b/packages/app-store/whatsapp/README.mdx new file mode 100644 index 0000000000..6fc6397a2e --- /dev/null +++ b/packages/app-store/whatsapp/README.mdx @@ -0,0 +1,8 @@ +--- +items: + - /api/app-store/whatsapp/1.jpg + - /api/app-store/whatsapp/2.jpg + - /api/app-store/whatsapp/3.jpg +--- + +Schedule a chat with your guests or have a WhatsApp Video call. \ No newline at end of file diff --git a/packages/app-store/whatsapp/_metadata.ts b/packages/app-store/whatsapp/_metadata.ts new file mode 100644 index 0000000000..9c7f2aa320 --- /dev/null +++ b/packages/app-store/whatsapp/_metadata.ts @@ -0,0 +1,10 @@ +import type { AppMeta } from "@calcom/types/App"; + +import config from "./config.json"; + +export const metadata = { + category: "other", + ...config, +} as AppMeta; + +export default metadata; diff --git a/packages/app-store/whatsapp/api/add.ts b/packages/app-store/whatsapp/api/add.ts new file mode 100644 index 0000000000..45c6741f36 --- /dev/null +++ b/packages/app-store/whatsapp/api/add.ts @@ -0,0 +1,17 @@ +import { AppDeclarativeHandler } from "@calcom/types/AppHandler"; + +import { createDefaultInstallation } from "../../_utils/installation"; +import appConfig from "../config.json"; + +const handler: AppDeclarativeHandler = { + // Instead of passing appType and slug from here, api/integrations/[..args] should be able to derive and pass these directly to createCredential + appType: appConfig.type, + variant: appConfig.variant, + slug: appConfig.slug, + supportsMultipleInstalls: false, + handlerType: "add", + createCredential: ({ appType, user, slug }) => + createDefaultInstallation({ appType, userId: user.id, slug, key: {} }), +}; + +export default handler; diff --git a/packages/app-store/whatsapp/api/index.ts b/packages/app-store/whatsapp/api/index.ts new file mode 100644 index 0000000000..4c0d2ead01 --- /dev/null +++ b/packages/app-store/whatsapp/api/index.ts @@ -0,0 +1 @@ +export { default as add } from "./add"; diff --git a/packages/app-store/whatsapp/components/.gitkeep b/packages/app-store/whatsapp/components/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/app-store/whatsapp/config.json b/packages/app-store/whatsapp/config.json new file mode 100644 index 0000000000..d18f8e792f --- /dev/null +++ b/packages/app-store/whatsapp/config.json @@ -0,0 +1,25 @@ +{ + "/*": "Don't modify slug - If required, do it using cli edit command", + "name": "WhatsApp", + "slug": "whatsapp", + "type": "whatsapp_video", + "imageSrc": "/api/app-store/whatsapp/icon.svg", + "logo": "/api/app-store/whatsapp/icon.svg", + "url": "https://cal.com/apps/whatsapp", + "variant": "conferencing", + "categories": ["video"], + "publisher": "Cal.com, Inc.", + "email": "support@cal.com", + "description": "Schedule a chat with your guests or have a WhatsApp Video call.", + "extendsFeature": "User", + "__createdUsingCli": true, + "appData": { + "location": { + "type": "integrations:whatsapp_video", + "label": "WhatsApp", + "linkType": "static", + "organizerInputPlaceholder": "https://wa.me/send?phone=1234567890", + "urlRegExp": "^http(s)?:\\/\\/(www\\.)?wa.me\\/[a-zA-Z0-9]*" + } + } +} diff --git a/packages/app-store/whatsapp/index.ts b/packages/app-store/whatsapp/index.ts new file mode 100644 index 0000000000..5d372ceda3 --- /dev/null +++ b/packages/app-store/whatsapp/index.ts @@ -0,0 +1,2 @@ +export * as api from "./api"; +export { metadata } from "./_metadata"; diff --git a/packages/app-store/whatsapp/package.json b/packages/app-store/whatsapp/package.json new file mode 100644 index 0000000000..39a1cba132 --- /dev/null +++ b/packages/app-store/whatsapp/package.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "private": true, + "name": "@calcom/whatsapp", + "version": "0.0.0", + "main": "./index.ts", + "description": "Schedule a chat with your guests or have a WhatsApp Video call.", + "dependencies": { + "@calcom/lib": "*" + }, + "devDependencies": { + "@calcom/types": "*" + } +} diff --git a/packages/app-store/whatsapp/static/1.jpg b/packages/app-store/whatsapp/static/1.jpg new file mode 100644 index 0000000000..0e8e82a284 Binary files /dev/null and b/packages/app-store/whatsapp/static/1.jpg differ diff --git a/packages/app-store/whatsapp/static/2.jpg b/packages/app-store/whatsapp/static/2.jpg new file mode 100644 index 0000000000..3338f52bf7 Binary files /dev/null and b/packages/app-store/whatsapp/static/2.jpg differ diff --git a/packages/app-store/whatsapp/static/3.jpg b/packages/app-store/whatsapp/static/3.jpg new file mode 100644 index 0000000000..988143c03f Binary files /dev/null and b/packages/app-store/whatsapp/static/3.jpg differ diff --git a/packages/app-store/whatsapp/static/icon.svg b/packages/app-store/whatsapp/static/icon.svg new file mode 100644 index 0000000000..c79479fe2a --- /dev/null +++ b/packages/app-store/whatsapp/static/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/prisma/seed-app-store.config.json b/packages/prisma/seed-app-store.config.json index 0c8594a081..a6a295b7d4 100644 --- a/packages/prisma/seed-app-store.config.json +++ b/packages/prisma/seed-app-store.config.json @@ -107,5 +107,11 @@ "categories": ["other"], "slug": "sendgrid", "type": "sendgrid_other_calendar" + }, + { + "dirName": "whatsapp", + "categories": ["video"], + "slug": "whatsapp", + "type": "whatsapp_video" } ]