import { h } from 'preact';
import { useState, useEffect } from 'preact/hooks';
import { ListingRow } from './dashboard/listingRow';
export const ListingDashboard = () => {
const [listings, setListings] = useState([]);
const [orgListings, setOrgListings] = useState([]);
const [orgs, setOrgs] = useState([]);
const [userCredits, setUserCredits] = useState(0);
const [selectedListings, setSelectedListings] = useState('user');
const [filter, setFilter] = useState('');
const [sort, setSort] = useState('created_at');
useEffect(() => {
const container = document.getElementById('listings-dashboard');
const listings = JSON.parse(container.dataset.listings).sort((a, b) =>
a.created_at > b.created_at ? -1 : 1,
);
setListings(listings);
setOrgs(JSON.parse(container.dataset.orgs));
setOrgListings(JSON.parse(container.dataset.orglistings));
setUserCredits(container.dataset.usercredits);
}, []);
const isExpired = (listing) =>
listing.bumped_at && !listing.published
? (Date.now() - new Date(listing.bumped_at.toString()).getTime()) /
(1000 * 60 * 60 * 24) >
30
: false;
const isDraft = (listing) =>
listing.bumped_at ? !isExpired(listing) && !listing.published : true;
const filterListings = (listingsToFilter, selectedFilter) => {
if (selectedFilter === 'Draft') {
return listingsToFilter.filter((listing) => isDraft(listing));
}
if (selectedFilter === 'Expired') {
return listingsToFilter.filter((listing) => isExpired(listing));
}
if (selectedFilter === 'Active') {
return listingsToFilter.filter((listing) => listing.published === true);
}
return listingsToFilter;
};
const customSort = (a, b) => {
if (a[sort] === null) {
return 1;
}
if (b[sort] === null) {
return -1;
}
if (a[sort] > b[sort]) {
return -1;
}
return 1;
};
const showListings = (
selected,
userListings,
organizationListings,
selectedFilter,
) => {
let displayedListings;
if (selected === 'user') {
displayedListings = filterListings(userListings, selectedFilter).sort(
customSort,
);
return displayedListings.map((listing) => (