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