diff --git a/packages/hoppscotch-common/src/App.vue b/packages/hoppscotch-common/src/App.vue
index 8cf3e8e26..02dc8613b 100644
--- a/packages/hoppscotch-common/src/App.vue
+++ b/packages/hoppscotch-common/src/App.vue
@@ -18,6 +18,7 @@ import { HOPP_MODULES } from "@modules/."
import { isLoadingInitialRoute } from "@modules/router"
import { useI18n } from "@composables/i18n"
import { APP_IS_IN_DEV_MODE } from "@helpers/dev"
+import { platform } from "./platform"
const t = useI18n()
@@ -45,4 +46,5 @@ if (APP_IS_IN_DEV_MODE) {
// Run module root component setup code
HOPP_MODULES.forEach((mod) => mod.onRootSetup?.())
+platform.addedHoppModules?.forEach((mod) => mod.onRootSetup?.())
diff --git a/packages/hoppscotch-common/src/components/app/ActionHandler.vue b/packages/hoppscotch-common/src/components/app/ActionHandler.vue
index ff4a28271..e408d9673 100644
--- a/packages/hoppscotch-common/src/components/app/ActionHandler.vue
+++ b/packages/hoppscotch-common/src/components/app/ActionHandler.vue
@@ -17,7 +17,6 @@ import { pipe } from "fp-ts/function"
import * as TE from "fp-ts/TaskEither"
import { deleteTeam as backendDeleteTeam } from "~/helpers/backend/mutations/Team"
import { defineActionHandler, invokeAction } from "~/helpers/actions"
-import { showChat } from "~/modules/crisp"
import { useToast } from "~/composables/toast"
import { useI18n } from "~/composables/i18n"
@@ -62,10 +61,6 @@ defineActionHandler("modals.login.toggle", () => {
showLogin.value = !showLogin.value
})
-defineActionHandler("flyouts.chat.open", () => {
- showChat()
-})
-
defineActionHandler("modals.team.delete", ({ teamId }) => {
teamID.value = teamId
confirmRemove.value = true
diff --git a/packages/hoppscotch-common/src/components/app/Footer.vue b/packages/hoppscotch-common/src/components/app/Footer.vue
index 040289322..394fcc366 100644
--- a/packages/hoppscotch-common/src/components/app/Footer.vue
+++ b/packages/hoppscotch-common/src/components/app/Footer.vue
@@ -76,6 +76,7 @@
}
"
/>
+
+
+
+
+
+ {
+ // @ts-expect-error TypeScript not understanding the type
+ footerItem.action.do()
+ hide()
+ }
+ "
+ />
+
{
}
}
-const chatWithUs = () => {
- showChat()
-}
-
const showDeveloperOptionModal = () => {
if (currentUser.value) {
showDeveloperOptions.value = true
diff --git a/packages/hoppscotch-common/src/components/app/Options.vue b/packages/hoppscotch-common/src/components/app/Options.vue
index 4834c03fb..108b46470 100644
--- a/packages/hoppscotch-common/src/components/app/Options.vue
+++ b/packages/hoppscotch-common/src/components/app/Options.vue
@@ -30,105 +30,37 @@
{{ t("support.title") }}
-
-
-
-
-
- {{ t("settings.follow") }}
-
-
-
-
-
-
-
+
+
+ {
+ // @ts-expect-error Typescript isn't able to understand
+ item.action.do()
+ hideModal()
+ }
+ "
+ />
+
@@ -138,24 +70,12 @@
import { watch } from "vue"
import IconSidebar from "~icons/lucide/sidebar"
import IconSidebarOpen from "~icons/lucide/sidebar-open"
-import IconBook from "~icons/lucide/book"
-import IconGift from "~icons/lucide/gift"
-import IconActivity from "~icons/lucide/activity"
-import IconLock from "~icons/lucide/lock"
-import IconDiscord from "~icons/brands/discord"
-import IconTwitter from "~icons/brands/twitter"
-import IconGithub from "~icons/lucide/github"
-import IconMessageCircle from "~icons/lucide/message-circle"
-import IconUserPlus from "~icons/lucide/user-plus"
-import IconShare2 from "~icons/lucide/share-2"
import IconChevronRight from "~icons/lucide/chevron-right"
import { useSetting } from "@composables/settings"
-import { invokeAction } from "~/helpers/actions"
-import { showChat } from "@modules/crisp"
import { useI18n } from "@composables/i18n"
+import { platform } from "~/platform"
const t = useI18n()
-const navigatorShare = !!navigator.share
const ZEN_MODE = useSetting("ZEN_MODE")
const EXPAND_NAVIGATION = useSetting("EXPAND_NAVIGATION")
@@ -176,11 +96,6 @@ const emit = defineEmits<{
(e: "hide-modal"): void
}>()
-const chatWithUs = () => {
- showChat()
- hideModal()
-}
-
const expandNavigation = () => {
EXPAND_NAVIGATION.value = !EXPAND_NAVIGATION.value
hideModal()
@@ -191,24 +106,6 @@ const expandCollection = () => {
hideModal()
}
-const expandInvite = () => {
- invokeAction("modals.share.toggle")
-}
-
-const nativeShare = () => {
- if (navigator.share) {
- navigator
- .share({
- title: "Hoppscotch",
- text: "Hoppscotch • Open source API development ecosystem - Helps you create requests faster, saving precious time on development.",
- url: "https://hoppscotch.io",
- })
- .catch(console.error)
- } else {
- // fallback
- }
-}
-
const hideModal = () => {
emit("hide-modal")
}
diff --git a/packages/hoppscotch-common/src/components/app/Support.vue b/packages/hoppscotch-common/src/components/app/Support.vue
index ab1d3c1d8..b1c9c50af 100644
--- a/packages/hoppscotch-common/src/components/app/Support.vue
+++ b/packages/hoppscotch-common/src/components/app/Support.vue
@@ -8,89 +8,46 @@
>
-
-
-
-
-
-
-
+
+
+ {
+ // @ts-expect-error Typescript isn't able to understand
+ item.action.do()
+ hideModal()
+ }
+ "
+ />
+