<script setup lang="ts">
import ParameterSchemaFormComponent from "@/components/parameter-schema/ParameterSchemaFormComponent.vue";
import type { WorkflowVersionFull } from "@/client/workflow";
import { WorkflowVersionService } from "@/client/workflow";
import axios from "axios";
import { onMounted, ref, reactive } from "vue";
import type { JSONSchemaType } from "ajv";

const props = defineProps<{
  versionId: string;
  workflowId: string;
}>();

const parameterSchema = ref(undefined);

const versionState = reactive<{
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  parameterSchema?: JSONSchemaType<any>;
  workflowVersion?: WorkflowVersionFull;
}>({
  parameterSchema: undefined,
  workflowVersion: undefined,
});

function downloadVersion() {
  WorkflowVersionService.workflowVersionGetWorkflowVersion(
    props.versionId,
    props.workflowId
  )
    .then((version) => {
      versionState.workflowVersion = version;
      return version;
    })
    .then(downloadVersionFiles);
}

function downloadVersionFiles(version: WorkflowVersionFull) {
  axios.get(version.parameter_schema_url).then((response) => {
    parameterSchema.value = response.data;
  });
}

onMounted(() => {
  downloadVersion();
});
</script>

<template>
  <parameter-schema-form-component
    :workflow-version-id="versionId"
    :schema="parameterSchema"
  />
</template>

<style scoped></style>