Fix wish cache being generated twice
This commit is contained in:
parent
a2611faf49
commit
42ae1e63bd
3 changed files with 24 additions and 13 deletions
|
@ -104,7 +104,7 @@ $(function () {
|
|||
var cards = $('.ui.card[data-cache="false"]');
|
||||
|
||||
cards.each(function (index, card) {
|
||||
generateCacheCard(card);
|
||||
generateCacheCard($(card));
|
||||
|
||||
if (index >= 0) {
|
||||
return false;
|
||||
|
@ -130,9 +130,7 @@ $(function () {
|
|||
});
|
||||
|
||||
function generateCacheCard(card) {
|
||||
card = $(card);
|
||||
|
||||
var href = card.find('.content [href]').prop('href');
|
||||
var href = card.find('.content [href]').prop('href');
|
||||
|
||||
if (!href) {
|
||||
return;
|
||||
|
@ -144,17 +142,16 @@ $(function () {
|
|||
var wishlistIndex = $('.ui.dropdown.wishlists select').prop('selectedIndex') - 1;
|
||||
var wishlist_user = wishlists[wishlistIndex].user;
|
||||
|
||||
fetch('/src/api/wishes.php?wish_id=' + card.data('id') + '&wishlist_user=' + wishlist_user, {
|
||||
fetch('/src/api/wishes.php?wish_id=' + card.attr('data-id') + '&wishlist_user=' + wishlist_user, {
|
||||
method: 'GET'
|
||||
})
|
||||
.then(handleFetchError)
|
||||
.then(handleFetchResponse)
|
||||
.then(function(response) {
|
||||
card.replaceWith(response.html);
|
||||
card.replaceWith(response.html.replace('data-cache="false"', 'data-cache="true"'));
|
||||
})
|
||||
.catch(handleFetchCatch)
|
||||
.finally(function() {
|
||||
card.attr('data-cache', 'true');
|
||||
card.removeClass('loading');
|
||||
|
||||
progress.progress('increment');
|
||||
|
|
|
@ -38,10 +38,8 @@ class EmbedCache
|
|||
public function get(bool $generateCache = false): \stdClass
|
||||
{
|
||||
$info = null;
|
||||
$maxAge = 2592000; // 30 days
|
||||
$age = file_exists($this->getFilepath()) ? time() - filemtime($this->getFilepath()) : $maxAge;
|
||||
|
||||
if ($this->exists() && $age <= $maxAge && false === $generateCache) {
|
||||
if ($this->generateCache() && false === $generateCache) {
|
||||
$info = json_decode(file_get_contents($this->getFilepath()));
|
||||
} else {
|
||||
/**
|
||||
|
@ -115,4 +113,20 @@ class EmbedCache
|
|||
{
|
||||
return file_exists($this->getFilepath());
|
||||
}
|
||||
|
||||
public function age(): int
|
||||
{
|
||||
return time() - filemtime($this->getFilepath());
|
||||
}
|
||||
|
||||
public function maxAge(): int
|
||||
{
|
||||
return 2592000; // 30 days
|
||||
}
|
||||
|
||||
public function generateCache(): bool
|
||||
{
|
||||
return !$this->exists()
|
||||
|| ($this->exists() && $this->age() <= $this->maxAge());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -101,13 +101,13 @@ class Wish
|
|||
$userIsCurrent = isset($_SESSION['user']['id']) && intval($_SESSION['user']['id']) === $ofUser;
|
||||
|
||||
if ($this->url) {
|
||||
$exists = $this->cache->exists() || !$this->url ? 'true' : 'false';
|
||||
$generateCache = $this->cache->generateCache() || !$this->url ? 'true' : 'false';
|
||||
} else {
|
||||
$exists = 'true';
|
||||
$generateCache = 'true';
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="ui fluid card stretch" data-id="<?= $this->id ?>" data-cache="<?= $exists ?>">
|
||||
<div class="ui fluid card stretch" data-id="<?= $this->id ?>" data-cache="<?= $generateCache ?>">
|
||||
<div class="image">
|
||||
<?php if ($this->priority && isset(Wish::$priorities[$this->priority])) { ?>
|
||||
<div class="ui small <?= Wish::$priorities[$this->priority]['color'] ?> right ribbon label">
|
||||
|
|
Loading…
Reference in a new issue