forked from stashapp/stash-box
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add proper dupe validation for scene draft submissions (stashapp#502)
- Loading branch information
1 parent
519faea
commit 1de270d
Showing
21 changed files
with
2,313 additions
and
56 deletions.
There are no files selected for viewing
1,553 changes: 1,553 additions & 0 deletions
1,553
frontend/src/graphql/definitions/QueryExistingScene.ts
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#import "../fragments/EditFragment.gql" | ||
#import "../fragments/SceneFragment.gql" | ||
query QueryExistingScene($input: QueryExistingSceneInput!) { | ||
queryExistingScene(input: $input) { | ||
scenes { | ||
...SceneFragment | ||
} | ||
edits { | ||
...EditFragment | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
79 changes: 79 additions & 0 deletions
79
frontend/src/pages/scenes/sceneForm/ExistingSceneAlert.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
import { FC } from "react"; | ||
import { Alert } from "react-bootstrap"; | ||
import { Link } from "react-router-dom"; | ||
import { faExclamationTriangle } from "@fortawesome/free-solid-svg-icons"; | ||
import { FingerprintAlgorithm, useQueryExistingScene } from "src/graphql"; | ||
import { Icon } from "src/components/fragments"; | ||
import { sceneHref, editHref } from "src/utils"; | ||
|
||
interface Props { | ||
title: string | null; | ||
studio_id: string | null; | ||
fingerprints: | ||
| { | ||
hash: string; | ||
algorithm: FingerprintAlgorithm; | ||
duration: number; | ||
}[] | ||
| undefined; | ||
} | ||
|
||
const ExistingSceneAlert: FC<Props> = ({ | ||
title, | ||
studio_id, | ||
fingerprints = [], | ||
}) => { | ||
const { data: existingData } = useQueryExistingScene({ | ||
input: { title, studio_id, fingerprints }, | ||
}); | ||
const existingScenes = existingData?.queryExistingScene.scenes ?? []; | ||
const existingEdits = existingData?.queryExistingScene.edits ?? []; | ||
|
||
if (existingScenes.length === 0 && existingEdits.length === 0) return null; | ||
|
||
return ( | ||
<Alert variant="warning"> | ||
<div className="mb-2"> | ||
<b>Warning: Scene match found</b> | ||
</div> | ||
|
||
{existingScenes.length > 0 && ( | ||
<div className="mb-2"> | ||
<span>Existing scenes that have the same title or fingerprints:</span> | ||
{existingScenes.map((s) => ( | ||
<div key={s.id}> | ||
<Icon icon={faExclamationTriangle} color="red" /> | ||
<Link to={sceneHref(s)} className="ms-2"> | ||
<b>{s.title}</b> | ||
</Link> | ||
</div> | ||
))} | ||
</div> | ||
)} | ||
|
||
{existingEdits.length > 0 && ( | ||
<div className="mb-2"> | ||
<span> | ||
Pending edits that submit scenes with the same title or | ||
fingerprints: | ||
</span> | ||
{existingEdits.map((e) => ( | ||
<div key={e.id}> | ||
<Icon icon={faExclamationTriangle} color="red" /> | ||
<Link to={editHref(e)} className="ms-2"> | ||
<b>{(e.details as { title: string }).title}</b> | ||
</Link> | ||
</div> | ||
))} | ||
</div> | ||
)} | ||
|
||
<div> | ||
Please verify your draft is not already in the database before | ||
submitting. | ||
</div> | ||
</Alert> | ||
); | ||
}; | ||
|
||
export default ExistingSceneAlert; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3 changes: 3 additions & 0 deletions
3
pkg/database/migrations/postgres/29_scene_edit_fingerprint_index.up.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
CREATE INDEX scene_edit_fingerprint_added_idx ON edits USING GIN | ||
(jsonb_path_query_array(data, '$.new_data.added_fingerprints[*].hash')) | ||
WHERE target_type = 'SCENE'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.