Skip to content

Commit

Permalink
Persist tagger settings and change defaults (#5165)
Browse files Browse the repository at this point in the history
* Persist tagger settings in UIConfig
* Show males and set tags by default
* Add release note
  • Loading branch information
WithoutPants authored Aug 27, 2024
1 parent c74456c commit b1b223c
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 26 deletions.
20 changes: 20 additions & 0 deletions ui/v2.5/src/components/Tagger/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { useCallback, useContext } from "react";
import { ConfigurationContext } from "src/hooks/Config";
import { initialConfig, ITaggerConfig } from "./constants";
import { useConfigureUISetting } from "src/core/StashService";

export function useTaggerConfig() {
const { configuration: stashConfig } = useContext(ConfigurationContext);
const [saveUISetting] = useConfigureUISetting();

const config = stashConfig?.ui.taggerConfig ?? initialConfig;

const setConfig = useCallback(
(c: ITaggerConfig) => {
saveUISetting({ variables: { key: "taggerConfig", value: c } });
},
[saveUISetting]
);

return { config, setConfig };
}
5 changes: 2 additions & 3 deletions ui/v2.5/src/components/Tagger/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ export interface ITaggerSource {
supportSceneFragment?: boolean;
}

export const LOCAL_FORAGE_KEY = "tagger";
export const DEFAULT_BLACKLIST = [
"\\sXXX\\s",
"1080p",
Expand All @@ -28,10 +27,10 @@ export const DEFAULT_EXCLUDED_STUDIO_FIELDS = ["name"];

export const initialConfig: ITaggerConfig = {
blacklist: DEFAULT_BLACKLIST,
showMales: false,
showMales: true,
mode: "auto",
setCoverImage: true,
setTags: false,
setTags: true,
tagOperation: "merge",
fingerprintQueue: {},
excludedPerformerFields: DEFAULT_EXCLUDED_PERFORMER_FIELDS,
Expand Down
15 changes: 4 additions & 11 deletions ui/v2.5/src/components/Tagger/context.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
import React, { useState, useEffect, useRef } from "react";
import {
initialConfig,
ITaggerConfig,
LOCAL_FORAGE_KEY,
} from "src/components/Tagger/constants";
import { initialConfig, ITaggerConfig } from "src/components/Tagger/constants";
import * as GQL from "src/core/generated-graphql";
import {
queryFindPerformer,
Expand All @@ -20,12 +16,12 @@ import {
useStudioUpdate,
useTagCreate,
} from "src/core/StashService";
import { useLocalForage } from "src/hooks/LocalForage";
import { useToast } from "src/hooks/Toast";
import { ConfigurationContext } from "src/hooks/Config";
import { ITaggerSource, SCRAPER_PREFIX, STASH_BOX_PREFIX } from "./constants";
import { errorToString } from "src/utils";
import { mergeStudioStashIDs } from "./utils";
import { useTaggerConfig } from "./config";

export interface ITaggerContextState {
config: ITaggerConfig;
Expand Down Expand Up @@ -110,11 +106,6 @@ export interface ISceneQueryResult {
}

export const TaggerContext: React.FC = ({ children }) => {
const [{ data: config }, setConfig] = useLocalForage<ITaggerConfig>(
LOCAL_FORAGE_KEY,
initialConfig
);

const [loading, setLoading] = useState(false);
const [loadingMulti, setLoadingMulti] = useState(false);
const [sources, setSources] = useState<ITaggerSource[]>([]);
Expand All @@ -127,6 +118,8 @@ export const TaggerContext: React.FC = ({ children }) => {
const stopping = useRef(false);

const { configuration: stashConfig } = React.useContext(ConfigurationContext);
const { config, setConfig } = useTaggerConfig();

const Scrapers = useListSceneScrapers();

const Toast = useToast();
Expand Down
9 changes: 3 additions & 6 deletions ui/v2.5/src/components/Tagger/performers/PerformerTagger.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { Button, Card, Form, InputGroup, ProgressBar } from "react-bootstrap";
import { FormattedMessage, useIntl } from "react-intl";
import { Link } from "react-router-dom";
import { HashLink } from "react-router-hash-link";
import { useLocalForage } from "src/hooks/LocalForage";

import * as GQL from "src/core/generated-graphql";
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
Expand All @@ -21,12 +20,13 @@ import { ConfigurationContext } from "src/hooks/Config";

import StashSearchResult from "./StashSearchResult";
import PerformerConfig from "./Config";
import { LOCAL_FORAGE_KEY, ITaggerConfig, initialConfig } from "../constants";
import { ITaggerConfig } from "../constants";
import PerformerModal from "../PerformerModal";
import { useUpdatePerformer } from "../queries";
import { faStar, faTags } from "@fortawesome/free-solid-svg-icons";
import { mergeStashIDs } from "src/utils/stashbox";
import { ExternalLink } from "src/components/Shared/ExternalLink";
import { useTaggerConfig } from "../config";

type JobFragment = Pick<
GQL.Job,
Expand Down Expand Up @@ -621,10 +621,7 @@ export const PerformerTagger: React.FC<ITaggerProps> = ({ performers }) => {
const jobsSubscribe = useJobsSubscribe();
const intl = useIntl();
const { configuration: stashConfig } = React.useContext(ConfigurationContext);
const [{ data: config }, setConfig] = useLocalForage<ITaggerConfig>(
LOCAL_FORAGE_KEY,
initialConfig
);
const { config, setConfig } = useTaggerConfig();
const [showConfig, setShowConfig] = useState(false);
const [showManual, setShowManual] = useState(false);

Expand Down
9 changes: 3 additions & 6 deletions ui/v2.5/src/components/Tagger/studios/StudioTagger.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { Button, Card, Form, InputGroup, ProgressBar } from "react-bootstrap";
import { FormattedMessage, useIntl } from "react-intl";
import { Link } from "react-router-dom";
import { HashLink } from "react-router-hash-link";
import { useLocalForage } from "src/hooks/LocalForage";

import * as GQL from "src/core/generated-graphql";
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
Expand All @@ -22,13 +21,14 @@ import { ConfigurationContext } from "src/hooks/Config";

import StashSearchResult from "./StashSearchResult";
import StudioConfig from "./Config";
import { LOCAL_FORAGE_KEY, ITaggerConfig, initialConfig } from "../constants";
import { ITaggerConfig } from "../constants";
import StudioModal from "../scenes/StudioModal";
import { useUpdateStudio } from "../queries";
import { apolloError } from "src/utils";
import { faStar, faTags } from "@fortawesome/free-solid-svg-icons";
import { ExternalLink } from "src/components/Shared/ExternalLink";
import { mergeStudioStashIDs } from "../utils";
import { useTaggerConfig } from "../config";

type JobFragment = Pick<
GQL.Job,
Expand Down Expand Up @@ -670,10 +670,7 @@ export const StudioTagger: React.FC<ITaggerProps> = ({ studios }) => {
const jobsSubscribe = useJobsSubscribe();
const intl = useIntl();
const { configuration: stashConfig } = React.useContext(ConfigurationContext);
const [{ data: config }, setConfig] = useLocalForage<ITaggerConfig>(
LOCAL_FORAGE_KEY,
initialConfig
);
const { config, setConfig } = useTaggerConfig();
const [showConfig, setShowConfig] = useState(false);
const [showManual, setShowManual] = useState(false);

Expand Down
3 changes: 3 additions & 0 deletions ui/v2.5/src/core/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
SortDirectionEnum,
} from "./generated-graphql";
import { View } from "src/components/List/views";
import { ITaggerConfig } from "src/components/Tagger/constants";

// NOTE: double capitals aren't converted correctly in the backend

Expand Down Expand Up @@ -97,6 +98,8 @@ export interface IUIConfig {
taskDefaults?: Record<string, {}>;

defaultFilters?: DefaultFilters;

taggerConfig?: ITaggerConfig;
}

export function getFrontPageContent(
Expand Down
6 changes: 6 additions & 0 deletions ui/v2.5/src/docs/en/ReleaseNotes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import v0200 from "./v0200.md";
import v0240 from "./v0240.md";
import v0250 from "./v0250.md";
import v0260 from "./v0260.md";
import v0270 from "./v0270.md";

export interface IReleaseNotes {
// handle should be in the form of YYYYMMDD
Expand All @@ -12,6 +13,11 @@ export interface IReleaseNotes {
}

export const releaseNotes: IReleaseNotes[] = [
{
date: 20240826,
version: "v0.27.0",
content: v0270,
},
{
date: 20240510,
version: "v0.26.0",
Expand Down
1 change: 1 addition & 0 deletions ui/v2.5/src/docs/en/ReleaseNotes/v0270.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Tagger settings have been reset, but are now persisted between browser sessions. `Show male performers` and `Set Tags` are now defaulted to true. Please verify your settings before using the Tagger.

0 comments on commit b1b223c

Please sign in to comment.