dsg
Copy This
import {
    WasteAdd
} from "./api/waste.js";
import app, {
    showToast
} from "./app.js";
import store from "./store.js";

var $ = Dom7;

// input waste_image
$(document).on('change', 'input#fileuploadInput', function (e) {
  const file = e.target.files[0]
  const reader = new FileReader()

  reader.onload = function (e) {
    document.querySelector('.custom-file-upload label').style.backgroundImage = `url('${e.target.result}')`
    document.querySelector('.custom-file-upload label').style.backgroundSize = 'cover'
  }

  reader.readAsDataURL(file)
})

$(document).on('click', '#submit-waste-add-form', async function (e) {
  var view = app.views.current
  const form = $('form#WasteAddForm')

  const cover_image = form.find('input[name="waste_image"]').prop('files')[0]
  const category    = $('input[name="category"]').val().trim();
  const quantity    = $('input[name="quantity"]').val().trim();
  const location    = $('input[name="location"]').val().trim();
  //const label       = $('input[name="label"]').val().trim();
  const description = $('#waste_description').val();

  if (!cover_image) {
    showToast('Please upload a cover image')
    return
  }

  if (quantity === '') {
      showToast('Please enter quantity (kg)', 'Error');
      return;
  }
  if (category === '') {
      showToast('Please enter category', 'Error');
      return;
  }

  if (location === '') {
      showToast('Please enter your loaction', 'Error');
      return;
  }    

  let base64 = null

  if (cover_image) {
    // Wrap the FileReader in a Promise to wait for it to complete
    base64 = await new Promise((resolve, reject) => {
      const reader = new FileReader()
      reader.readAsDataURL(cover_image)

      reader.onload = () => resolve(reader.result)
      reader.onerror = () => reject(new Error('Failed to read image as base64'))
    })
  }

  const data = {
      description: description,
      cover_photo: base64,
      quantity: quantity,
      category: category,
      location: location,
  }

  try {
      app.preloader.show()

      const response = await WasteAdd(data)

      app.preloader.hide()

      if (!response || response.error) {
          throw new Error(response.error);
      }

      showToast('Add waste successfully')
      /*
      await store.dispatch('getMyWastes', {
        page: 1,
        clear: true
      })
      */
      view.router.back(`/profile/`, {
        force: true
      })

      //view.router.back()
  } catch (error) {
      app.notification.create({
          titleRightText: 'now',
          subtitle: 'Oops, something went wrong',
          text: error.message || 'Failed to add post',
      }).open()
      app.preloader.hide()
  }
})
Add JS Function Name