Filter out expiring ads

This commit is contained in:
Alex Gleason 2022-08-26 09:48:49 -05:00
parent c29bf4040a
commit f4af1687bf
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
3 changed files with 16 additions and 1 deletions

View File

@ -20,6 +20,8 @@ interface Ad {
card: Card,
/** Impression URL to fetch when displaying the ad. */
impression?: string,
/** Time when the ad expires and should no longer be displayed. */
expires?: Date,
}
/** Gets the current provider based on config. */

View File

@ -43,6 +43,7 @@ const RumbleAdProvider: AdProvider = {
image: item.asset,
url: item.click,
}),
expires: new Date(item.expires * 1000),
}));
}
}

View File

@ -17,7 +17,19 @@ export default function useAds() {
});
};
return useQuery<Ad[]>(['ads'], getAds, {
const result = useQuery<Ad[]>(['ads'], getAds, {
placeholderData: [],
});
// Filter out expired ads.
const data = result.data?.filter(ad => {
const now = new Date();
const isExpired = ad.expires && (now.getTime() > ad.expires.getTime());
return !isExpired;
});
return {
...result,
data,
};
}