diff --git a/components/actors/tile.vue b/components/actors/tile.vue index 007fa89..ff09e03 100644 --- a/components/actors/tile.vue +++ b/components/actors/tile.vue @@ -28,18 +28,13 @@ > - - - @@ -79,9 +74,8 @@ import { ref, inject } from 'vue'; import { formatDate } from '#/utils/format.js'; -import { post, del } from '#/src/api.js'; -import events from '#/src/events.js'; +import Heart from '#/components/stashes/heart.vue'; import Gender from './gender.vue'; const props = defineProps({ @@ -95,49 +89,7 @@ const pageContext = inject('pageContext'); const { user } = pageContext; const pageStash = pageContext.pageProps.stash; -// console.log(props.actor); - const favorited = ref(props.actor.stashes?.some((sceneStash) => sceneStash.isPrimary) || false); - -async function stash() { - try { - favorited.value = true; - await post(`/stashes/${user.primaryStash.id}/actors`, { actorId: props.actor.id }); - - events.emit('feedback', { - type: 'success', - message: `${props.actor.name} stashed to ${user.primaryStash.name}`, - }); - } catch (error) { - favorited.value = false; - - events.emit('feedback', { - type: 'error', - message: `Failed to stash ${props.actor.name} to ${user.primaryStash.name}`, - }); - } -} - -async function unstash() { - try { - favorited.value = false; - await del(`/stashes/${user.primaryStash.id}/actors/${props.actor.id}`); - - events.emit('feedback', { - type: 'remove', - message: `${props.actor.name} unstashed from ${user.primaryStash.name}`, - }); - } catch (error) { - favorited.value = true; - - console.error(error); - - events.emit('feedback', { - type: 'error', - message: `Failed to unstash ${props.actor.name} from ${user.primaryStash.name}`, - }); - } -} diff --git a/config/default.cjs b/config/default.cjs index bad08b2..32b0abf 100755 --- a/config/default.cjs +++ b/config/default.cjs @@ -67,7 +67,11 @@ module.exports = { stashes: { nameLength: [2, 24], namePattern: /^[a-zA-Z0-9!?$&\s_-]+$/, - viewRefreshCooldown: 60, // minutes + viewRefreshCron: '* * * * *', // every minute + viewRefreshCooldowns: { + actors: 60, // minutes + stashes: 1, + }, }, media: { path: './media', diff --git a/package-lock.json b/package-lock.json index 7cd740e..44c6678 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "config": "^3.3.9", "connect-redis": "^7.1.1", "convert": "^4.14.1", + "cron": "^3.1.6", "cross-env": "^7.0.3", "date-fns": "^3.0.0", "error-stack-parser": "^2.1.4", @@ -3475,6 +3476,11 @@ "dev": true, "peer": true }, + "node_modules/@types/luxon": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.8.tgz", + "integrity": "sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ==" + }, "node_modules/@types/triple-beam": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", @@ -4656,6 +4662,15 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "node_modules/cron": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/cron/-/cron-3.1.6.tgz", + "integrity": "sha512-cvFiQCeVzsA+QPM6fhjBtlKGij7tLLISnTSvFxVdnFGLdz+ZdXN37kNe0i2gefmdD17XuZA6n2uPVwzl4FxW/w==", + "dependencies": { + "@types/luxon": "~3.3.0", + "luxon": "~3.4.0" + } + }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -7060,6 +7075,14 @@ "yallist": "^3.0.2" } }, + "node_modules/luxon": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "engines": { + "node": ">=12" + } + }, "node_modules/m3u8-parser": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.1.0.tgz", @@ -12679,6 +12702,11 @@ "dev": true, "peer": true }, + "@types/luxon": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.8.tgz", + "integrity": "sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ==" + }, "@types/triple-beam": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", @@ -13532,6 +13560,15 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "cron": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/cron/-/cron-3.1.6.tgz", + "integrity": "sha512-cvFiQCeVzsA+QPM6fhjBtlKGij7tLLISnTSvFxVdnFGLdz+ZdXN37kNe0i2gefmdD17XuZA6n2uPVwzl4FxW/w==", + "requires": { + "@types/luxon": "~3.3.0", + "luxon": "~3.4.0" + } + }, "cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -15294,6 +15331,11 @@ "yallist": "^3.0.2" } }, + "luxon": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==" + }, "m3u8-parser": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.1.0.tgz", diff --git a/package.json b/package.json index 8599b8e..2b0123c 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "config": "^3.3.9", "connect-redis": "^7.1.1", "convert": "^4.14.1", + "cron": "^3.1.6", "cross-env": "^7.0.3", "date-fns": "^3.0.0", "error-stack-parser": "^2.1.4", diff --git a/pages/actors/@actorId/+Page.vue b/pages/actors/@actorId/+Page.vue index cf435dc..523f05d 100644 --- a/pages/actors/@actorId/+Page.vue +++ b/pages/actors/@actorId/+Page.vue @@ -25,18 +25,10 @@ - - - @@ -49,61 +41,16 @@ diff --git a/pages/movies/@movieId/+Page.vue b/pages/movies/@movieId/+Page.vue index 3f2473b..54e186a 100644 --- a/pages/movies/@movieId/+Page.vue +++ b/pages/movies/@movieId/+Page.vue @@ -111,26 +111,10 @@ >No title
-
- - - - - -
+