dsg
Copy This
import {
    fetchEvent,
    maybeFavoriteEvent
} from "./api/discover.js";
import app from "./app.js";

var $ = Dom7;

//DISCOVER - VIEW EVENT
$(document).on('page:afterin', '.page[data-name="discover-view-event"]', async function (e) {

    var eventId = e.detail.route.params.id

    if (!eventId || eventId === '-1') {
        return;
    }


    $('.loading-fullscreen').show()

    const eventData = await fetchEvent(eventId)
    $('.loading-fullscreen').hide()

    const mainContainer = $('.discover-view-event.view-event');

    if (!eventData) {
        mainContainer.html('<div class="text-align-center">No event found</div>');
        return;
    }

    // Populating the Event Title
    mainContainer.find('.event-detail-title').text(eventData.title);

    // Populating the Event Date
    const dateText = `Sun, Aug 25th 2024`; // You can format this dynamically if needed
    mainContainer.find('.event-time-address:nth-child(1) span').text(dateText);

    // Populating the Event Time
    const timeText = `${eventData.dates[0].start_time} - ${eventData.dates[0].end_time}`;
    mainContainer.find('.event-time-address:nth-child(2) span').text(timeText);

    // Populating the Event Location
    mainContainer.find('.event-time-address:nth-child(3) span').text(eventData.location);

    // Populating the Event Description in "About" Tab
    mainContainer.find('#tab-about .event-des-wrap').html(`<p>${eventData.description}</p>`);
    mainContainer.find('#tab-entry-details .event-des-wrap').html(`<p>${eventData.entry_details}</p>`);

    if (eventData.has_tickets) {
        // Populating the Ticket Button URL
        mainContainer.find('.event-list-btn .btn.bg-dark').on('click', function () {
            window.location.href = eventData.ticket_url;
        });
    } else {
        // Hiding the Ticket Button
        mainContainer.find('.event-list-btn').hide();
    }

    // Populating the Swiper Images
    const swiperWrapper = mainContainer.find('.swiper-wrapper');
    swiperWrapper.empty(); // Clear existing placeholders

    const gallery = eventData.gallery || [];
    gallery.push({
        url: eventData.cover_photo.url
    });

    gallery.forEach(image => {
        const slide = `
        <div class="swiper-slide">
            <div class="swiper-image" style="background-image: url('${image.url}');"></div>
        </div>
    `;
        swiperWrapper.append(slide);
    });

    mainContainer.find('.event-des-wrap a').on('click', function (e) {
        console.log('clicked');
        e.preventDefault();
        window.open($(this).attr('href'), '_blank');
    });

    $('#copy-event-link').attr('data-event-id', eventId)
    $('#share-email-event-link').attr('data-event-id', eventId)

    // set the event id to the favourite button
    const faveBtn = $('#favourite_event')
    faveBtn.attr('data-event-id', eventId)

    if (eventData.is_liked) {
        faveBtn.addClass('favourite')
        faveBtn.innerHTML = `<i class="f7-icons">heart_fill</i> Favourite`
    } else {
        faveBtn.removeClass('favourite')
        faveBtn.innerHTML = `<i class="f7-icons">heart</i> Favourite`
    }
});

$(document).on('click', '#favourite_event', async function () {
    // get the event id from the button
    const eventId = $(this).attr('data-event-id');
    const isFavourite = $(this).hasClass('favourite');

    // optmisitically update the UI
    if (isFavourite) {
        $(this).removeClass('favourite')
        $(this).innerHTML = `<i class="f7-icons">heart</i> Favourite`
    } else {
        $(this).addClass('favourite')
        $(this).innerHTML = `<i class="f7-icons">heart_fill</i> Favourite`
    }

    // call the API to favourite the event
    await maybeFavoriteEvent(eventId);
})

$(document).on('click', '#copy-event-link', function () {
    const eventId = $(this).attr('data-event-id');
    const eventLink = `${window.location.origin}/discover-view-event/${eventId}`;

    navigator.clipboard.writeText(eventLink);


    app.toast.create({
        text: 'Link copied to clipboard',
        closeTimeout: 2000
    }).open()
});

$(document).on('click', '#share-email-event-link', function () {
    const eventId = $(this).attr('data-event-id');
    const eventLink = `${window.location.origin}/discover-view-event/${eventId}`;

    window.open(`mailto:?subject=Event Link&body=${eventLink}`, '_blank');
});
Add JS Function Name