diff --git a/components/edit/revisions.vue b/components/edit/revisions.vue index 67c476a..2ce46ca 100644 --- a/components/edit/revisions.vue +++ b/components/edit/revisions.vue @@ -1,7 +1,7 @@ @@ -33,5 +40,23 @@ const scene = pageContext.pageProps.scene; display: flex; justify-content: space-between; align-items: center; + + .heading { + line-height: 1.5; + } +} + +.revs-actions { + display: flex; + gap: 2rem; + flex-shrink: 0; +} + +@media(--compact) { + .revs-header { + display: flex; + flex-direction: column; + margin-bottom: 1rem; + } } diff --git a/pages/users/@username/+Page.vue b/pages/users/@username/+Page.vue index bb53809..f7d7117 100644 --- a/pages/users/@username/+Page.vue +++ b/pages/users/@username/+Page.vue @@ -58,7 +58,7 @@ class="profile-section revisions" >

Revisions

- + diff --git a/src/scenes.js b/src/scenes.js index 7da561b..fbdba4a 100644 --- a/src/scenes.js +++ b/src/scenes.js @@ -114,6 +114,7 @@ function curateScene(rawScene, assets) { priority: tag.priority, })), qualities: rawScene.qualities?.sort((qualityA, qualityB) => qualityB - qualityA) || [], + photoCount: rawScene.photo_count, movies: assets.movies.map((movie) => ({ id: movie.id, slug: movie.slug, @@ -814,9 +815,9 @@ export async function reviewSceneRevision(revisionId, isApproved, { feedback }, throw new HttpError('You must either approve or reject the revision', 400); } - await knexOwner('scenes_revisions') + const updated = await knexOwner('scenes_revisions') .where('id', revisionId) - .whereRaw('approved is not true') // don't rerun approved and applied revision, must be forked into new revision instead + .whereNull('approved') // don't rerun reviewed revision, must be forked into new revision instead .whereNull('applied_at') .update({ approved: isApproved, @@ -825,6 +826,10 @@ export async function reviewSceneRevision(revisionId, isApproved, { feedback }, feedback, }); + if (updated === 0) { + throw new HttpError('This revision was already reviewed', 409); + } + if (isApproved) { await applySceneRevision([revisionId]); } diff --git a/static b/static index cb3f99c..0f7fc7c 160000 --- a/static +++ b/static @@ -1 +1 @@ -Subproject commit cb3f99c5dcc35c9d492658a228709f9e1af29398 +Subproject commit 0f7fc7c9f4ba7454bb92482eaffd93b345ea9834 diff --git a/utils/format.js b/utils/format.js index 9f4eac9..6c75d27 100644 --- a/utils/format.js +++ b/utils/format.js @@ -1,6 +1,10 @@ import { format } from 'date-fns'; export function formatDuration(duration, forceHours) { + if (typeof duration !== 'number') { + return duration; + } + const hours = Math.floor(duration / 3600); const minutes = Math.floor((duration % 3600) / 60); const seconds = Math.floor(duration % 60);