diff --git a/packages/hoppscotch-common/src/components/collections/AddRequest.vue b/packages/hoppscotch-common/src/components/collections/AddRequest.vue index 02870f2ef..ae3ebd537 100644 --- a/packages/hoppscotch-common/src/components/collections/AddRequest.vue +++ b/packages/hoppscotch-common/src/components/collections/AddRequest.vue @@ -6,13 +6,28 @@ @close="$emit('hide-modal')" > @@ -53,12 +53,7 @@ import { useI18n } from "@composables/i18n" import { useToast } from "@composables/toast" import { HoppRESTRequest } from "@hoppscotch/data" import { useVModel } from "@vueuse/core" -import * as E from "fp-ts/Either" -import { computed, ref } from "vue" - -import { useSetting } from "~/composables/settings" -import { useReadonlyStream } from "~/composables/stream" -import { platform } from "~/platform" +import { useRequestNameGeneration } from "~/composables/ai-experiments" import IconSparkle from "~icons/lucide/sparkles" const toast = useToast() @@ -84,58 +79,13 @@ const emit = defineEmits<{ (e: "update:modelValue", value: string): void }>() -const ENABLE_AI_EXPERIMENTS = useSetting("ENABLE_AI_EXPERIMENTS") - const editingName = useVModel(props, "modelValue") -const currentUser = useReadonlyStream( - platform.auth.getCurrentUserStream(), - platform.auth.getCurrentUser() -) - -const isGenerateRequestNamePending = ref(false) - -const showGenerateRequestNameButton = computed(() => { - // Request generation applies only to the authenticated state - if (!currentUser.value) { - return false - } - - return ENABLE_AI_EXPERIMENTS.value && !!platform.experiments?.aiExperiments -}) - -const generateRequestName = async () => { - const generateRequestNameForPlatform = - platform.experiments?.aiExperiments?.generateRequestName - - if (!props.requestContext || !generateRequestNameForPlatform) { - toast.error(t("request.generate_name_error")) - return - } - - isGenerateRequestNamePending.value = true - - platform.analytics?.logEvent({ - type: "EXPERIMENTS_GENERATE_REQUEST_NAME_WITH_AI", - platform: "rest", - }) - - const result = await generateRequestNameForPlatform( - JSON.stringify(props.requestContext) - ) - - if (result && E.isLeft(result)) { - toast.error(t("request.generate_name_error")) - - isGenerateRequestNamePending.value = false - - return - } - - editingName.value = result.right - - isGenerateRequestNamePending.value = false -} +const { + generateRequestName, + canDoRequestNameGeneration, + isGenerateRequestNamePending, +} = useRequestNameGeneration(editingName) const editRequest = () => { if (editingName.value.trim() === "") { diff --git a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue index 45e666995..2d03fa08d 100644 --- a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue +++ b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue @@ -8,14 +8,29 @@ >