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 @@
>
-
-
- { favorited = stash.isPrimary ? true : favorited; }"
+ @unstashed="(stash) => { favorited = stash.isPrimary ? false : favorited; }"
/>
@@ -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