<template>
  <div class="mainContent">
    <slot
      :response="response"
      :loading="loading"
      :fetchError="fetchError"
    />
  </div>
</template>

<script>
  // require modules
  /* eslint-disable no-unused-vars */
  const _ = require('lodash');
  let host = require('../js/const').host;
  const apikey = require('../js/const').apikey;

export default {
  name: 'FetchProtein',
  props: ['protein'],
  data() {
    return {
      response: null,
      loading: false,
      fetchError:'',
      isDev: process.env.NODE_ENV === 'development',
    };
  },
  computed: {
    jwt: function () {
      return this.$store.getters['User/jwt'];
    },
  },
  mounted() {
    const vm = this;
    // /* eslint-disable no-console */
    // console.log(vm.locus);
    vm.getItems();
  },
  methods: {
    async getItems() {
        const vm = this

        // /* eslint-disable no-console */
        // console.log(vm.incDesc);

        vm.loading = true

        if(vm.isDev) {
          host = require('../js/const').devHost;
        }

        let url = `${host}/proteins/${vm.protein}`;

        if (vm.protein && !_.isEmpty(vm.protein)) {
          try{
          const res = await fetch(url, {
            method: 'GET',
            mode: 'cors',
            cache: 'no-cache',
            headers: {
              Authorization: `Bearer ${apikey}`
            }
          })
          // console.log('protein res', res);
          if(!res.ok){
            vm.loading = false;
            vm.response = ''
            vm.fetchError = `${res.status} Internal Error, please write a mail to DDCode Admin.` 
            return;
          }
          vm.fetchError= '';
          const response = await res.json();
             setTimeout(() => {
              vm.loading = false;
              vm.response = response;
              // console.log(response);
              // if (response && !_.isEmpty(response)) {
              //   this.response = _.flatMap(response, (n) => [{ text: n.name, style: 'background-color: ' + n.color }]);
              // }
            }, 10);
          //   .then(response => response.json())
          //   .then((response) => {
          //     // /* eslint-disable no-console */
          //     // console.log(response);

          //   setTimeout(() => {
          //     vm.loading = false;
          //     vm.response = response;

          //     // console.log(response);
          //     // if (response && !_.isEmpty(response)) {
          //     //   this.response = _.flatMap(response, (n) => [{ text: n.name, style: 'background-color: ' + n.color }]);
          //     // }
          //   }, 10);
          // });
          }catch(err){
            vm.loading = false;
            vm.response = ''
            vm.fetchError = `${err.message} Internal Error, please write a mail to DDCode Admin.`
          }
          
      } else {
        vm.loading = false;
        vm.response = ''
      }
    },
  },
};
</script>

<style scoped>
    .mainContent {
        padding: 20px;
    }
</style>