Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Persist tagger settings and change defaults #5165

Merged
merged 3 commits into from
Aug 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.
Loading