dsg
Copy This
import {
  addPost
} from "./api/posts.js";
import app, {
  showToast
} from "./app.js";
import store from "./store.js";
var $ = Dom7;
// input post_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-add-post-form', async function(e) {
  var view = app.views.current
  const form = $('form#addPostForm')
  const cover_image = form.find('input[name="post_image"]').prop('files')[0]
  const description = $('#post_caption').val();
  if (!cover_image) {
    showToast('Please upload a cover image')
    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 = {
    caption: description,
    cover_photo: base64
  }
  try {
    app.preloader.show()
    const response = await addPost(data)
    app.preloader.hide()
    if (!response || response.error) {
      throw new Error(response.error);
    }
    showToast('Add post successfully')
    await store.dispatch('getMyPosts', {
      page: 1,
      clear: true
    })
    view.router.navigate('/')
    //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