mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 04:14:39 +03:00
Add option to remove studio stash ids (#1378)
* Add option to remove studio stash ids * Add v0.8 changelog
This commit is contained in:
@@ -10,8 +10,12 @@ import V040 from "./versions/v040.md";
|
|||||||
import V050 from "./versions/v050.md";
|
import V050 from "./versions/v050.md";
|
||||||
import V060 from "./versions/v060.md";
|
import V060 from "./versions/v060.md";
|
||||||
import V070 from "./versions/v070.md";
|
import V070 from "./versions/v070.md";
|
||||||
|
import V080 from "./versions/v080.md";
|
||||||
import { MarkdownPage } from "../Shared/MarkdownPage";
|
import { MarkdownPage } from "../Shared/MarkdownPage";
|
||||||
|
|
||||||
|
// to avoid use of explicit any
|
||||||
|
type Module = typeof V010;
|
||||||
|
|
||||||
const Changelog: React.FC = () => {
|
const Changelog: React.FC = () => {
|
||||||
const [{ data, loading }, setOpenState] = useChangelogStorage();
|
const [{ data, loading }, setOpenState] = useChangelogStorage();
|
||||||
|
|
||||||
@@ -35,82 +39,89 @@ const Changelog: React.FC = () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
interface IStashRelease {
|
||||||
|
version: string;
|
||||||
|
date?: string;
|
||||||
|
page: Module;
|
||||||
|
defaultOpen?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
// after new release:
|
||||||
|
// add entry to releases, using the current* fields
|
||||||
|
// then update the current fields.
|
||||||
|
const currentVersion = stashVersion || "v0.8.0";
|
||||||
|
const currentDate = buildDate;
|
||||||
|
const currentPage = V080;
|
||||||
|
|
||||||
|
const releases: IStashRelease[] = [
|
||||||
|
{
|
||||||
|
version: currentVersion,
|
||||||
|
date: currentDate,
|
||||||
|
page: currentPage,
|
||||||
|
defaultOpen: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: "v0.7.0",
|
||||||
|
date: "2021-05-15",
|
||||||
|
page: V070,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: "v0.6.0",
|
||||||
|
date: "2021-03-29",
|
||||||
|
page: V060,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: "v0.5.0",
|
||||||
|
date: "2021-02-23",
|
||||||
|
page: V050,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: "v0.4.0",
|
||||||
|
date: "2020-11-24",
|
||||||
|
page: V040,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: "v0.3.0",
|
||||||
|
date: "2020-09-02",
|
||||||
|
page: V030,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: "v0.2.1",
|
||||||
|
date: "2020-06-10",
|
||||||
|
page: V021,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: "v0.2.0",
|
||||||
|
date: "2020-06-06",
|
||||||
|
page: V020,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: "v0.1.1",
|
||||||
|
date: "2020-02-25",
|
||||||
|
page: V011,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
version: "v0.1.0",
|
||||||
|
date: "2020-02-24",
|
||||||
|
page: V010,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h1 className="mb-4">Changelog:</h1>
|
<h1 className="mb-4">Changelog:</h1>
|
||||||
<Version
|
{releases.map((r) => (
|
||||||
version={stashVersion || "v0.7.0"}
|
<Version
|
||||||
date={buildDate}
|
key={r.version}
|
||||||
openState={openState}
|
version={r.version}
|
||||||
setOpenState={setVersionOpenState}
|
date={r.date}
|
||||||
defaultOpen
|
openState={openState}
|
||||||
>
|
setOpenState={setVersionOpenState}
|
||||||
<MarkdownPage page={V070} />
|
defaultOpen={r.defaultOpen}
|
||||||
</Version>
|
>
|
||||||
<Version
|
<MarkdownPage page={r.page} />
|
||||||
version="v0.6.0"
|
</Version>
|
||||||
date="2021-03-29"
|
))}
|
||||||
openState={openState}
|
|
||||||
setOpenState={setVersionOpenState}
|
|
||||||
>
|
|
||||||
<MarkdownPage page={V060} />
|
|
||||||
</Version>
|
|
||||||
<Version
|
|
||||||
version="v0.5.0"
|
|
||||||
date="2021-02-23"
|
|
||||||
openState={openState}
|
|
||||||
setOpenState={setVersionOpenState}
|
|
||||||
>
|
|
||||||
<MarkdownPage page={V050} />
|
|
||||||
</Version>
|
|
||||||
<Version
|
|
||||||
version="v0.4.0"
|
|
||||||
date="2020-11-24"
|
|
||||||
openState={openState}
|
|
||||||
setOpenState={setVersionOpenState}
|
|
||||||
>
|
|
||||||
<MarkdownPage page={V040} />
|
|
||||||
</Version>
|
|
||||||
<Version
|
|
||||||
version="v0.3.0"
|
|
||||||
date="2020-09-02"
|
|
||||||
openState={openState}
|
|
||||||
setOpenState={setVersionOpenState}
|
|
||||||
>
|
|
||||||
<MarkdownPage page={V030} />
|
|
||||||
</Version>
|
|
||||||
<Version
|
|
||||||
version="v0.2.1"
|
|
||||||
date="2020-06-10"
|
|
||||||
openState={openState}
|
|
||||||
setOpenState={setVersionOpenState}
|
|
||||||
>
|
|
||||||
<MarkdownPage page={V021} />
|
|
||||||
</Version>
|
|
||||||
<Version
|
|
||||||
version="v0.2.0"
|
|
||||||
date="2020-06-06"
|
|
||||||
openState={openState}
|
|
||||||
setOpenState={setVersionOpenState}
|
|
||||||
>
|
|
||||||
<MarkdownPage page={V020} />
|
|
||||||
</Version>
|
|
||||||
<Version
|
|
||||||
version="v0.1.1"
|
|
||||||
date="2020-02-25"
|
|
||||||
openState={openState}
|
|
||||||
setOpenState={setVersionOpenState}
|
|
||||||
>
|
|
||||||
<MarkdownPage page={V011} />
|
|
||||||
</Version>
|
|
||||||
<Version
|
|
||||||
version="v0.1.0"
|
|
||||||
date="2020-02-24"
|
|
||||||
openState={openState}
|
|
||||||
setOpenState={setVersionOpenState}
|
|
||||||
>
|
|
||||||
<MarkdownPage page={V010} />
|
|
||||||
</Version>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
2
ui/v2.5/src/components/Changelog/versions/v080.md
Normal file
2
ui/v2.5/src/components/Changelog/versions/v080.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
### 🎨 Improvements
|
||||||
|
* Add button to remove studio stash ID. ([#1378](https://github.com/stashapp/stash/pull/1378))
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Table, Tabs, Tab } from "react-bootstrap";
|
import { Button, Table, Tabs, Tab } from "react-bootstrap";
|
||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { useParams, useHistory, Link } from "react-router-dom";
|
import { useParams, useHistory, Link } from "react-router-dom";
|
||||||
import cx from "classnames";
|
import cx from "classnames";
|
||||||
@@ -14,6 +14,7 @@ import {
|
|||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import { ImageUtils, TableUtils } from "src/utils";
|
import { ImageUtils, TableUtils } from "src/utils";
|
||||||
import {
|
import {
|
||||||
|
Icon,
|
||||||
DetailsEditNavbar,
|
DetailsEditNavbar,
|
||||||
Modal,
|
Modal,
|
||||||
LoadingIndicator,
|
LoadingIndicator,
|
||||||
@@ -48,6 +49,7 @@ export const Studio: React.FC = () => {
|
|||||||
const [parentStudioId, setParentStudioId] = useState<string>();
|
const [parentStudioId, setParentStudioId] = useState<string>();
|
||||||
const [rating, setRating] = useState<number | undefined>(undefined);
|
const [rating, setRating] = useState<number | undefined>(undefined);
|
||||||
const [details, setDetails] = useState<string>();
|
const [details, setDetails] = useState<string>();
|
||||||
|
const [stashIDs, setStashIDs] = useState<GQL.StashIdInput[]>([]);
|
||||||
|
|
||||||
// Studio state
|
// Studio state
|
||||||
const [studio, setStudio] = useState<Partial<GQL.StudioDataFragment>>({});
|
const [studio, setStudio] = useState<Partial<GQL.StudioDataFragment>>({});
|
||||||
@@ -68,6 +70,7 @@ export const Studio: React.FC = () => {
|
|||||||
setParentStudioId(state?.parent_studio?.id ?? undefined);
|
setParentStudioId(state?.parent_studio?.id ?? undefined);
|
||||||
setRating(state.rating ?? undefined);
|
setRating(state.rating ?? undefined);
|
||||||
setDetails(state.details ?? undefined);
|
setDetails(state.details ?? undefined);
|
||||||
|
setStashIDs(state.stash_ids ?? []);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateStudioData(studioData: Partial<GQL.StudioDataFragment>) {
|
function updateStudioData(studioData: Partial<GQL.StudioDataFragment>) {
|
||||||
@@ -150,6 +153,10 @@ export const Studio: React.FC = () => {
|
|||||||
details,
|
details,
|
||||||
parent_id: parentStudioId ?? null,
|
parent_id: parentStudioId ?? null,
|
||||||
rating: rating ?? null,
|
rating: rating ?? null,
|
||||||
|
stash_ids: stashIDs.map((s) => ({
|
||||||
|
stash_id: s.stash_id,
|
||||||
|
endpoint: s.endpoint,
|
||||||
|
})),
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!isNew) {
|
if (!isNew) {
|
||||||
@@ -203,6 +210,15 @@ export const Studio: React.FC = () => {
|
|||||||
history.push(`/studios`);
|
history.push(`/studios`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const removeStashID = (stashID: GQL.StashIdInput) => {
|
||||||
|
setStashIDs(
|
||||||
|
stashIDs.filter(
|
||||||
|
(s) =>
|
||||||
|
!(s.endpoint === stashID.endpoint && s.stash_id === stashID.stash_id)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
function onImageChangeHandler(event: React.FormEvent<HTMLInputElement>) {
|
function onImageChangeHandler(event: React.FormEvent<HTMLInputElement>) {
|
||||||
ImageUtils.onImageChange(event, onImageLoad);
|
ImageUtils.onImageChange(event, onImageLoad);
|
||||||
}
|
}
|
||||||
@@ -230,7 +246,7 @@ export const Studio: React.FC = () => {
|
|||||||
<td>StashIDs</td>
|
<td>StashIDs</td>
|
||||||
<td>
|
<td>
|
||||||
<ul className="pl-0">
|
<ul className="pl-0">
|
||||||
{studio.stash_ids.map((stashID) => {
|
{stashIDs.map((stashID) => {
|
||||||
const base = stashID.endpoint.match(/https?:\/\/.*?\//)?.[0];
|
const base = stashID.endpoint.match(/https?:\/\/.*?\//)?.[0];
|
||||||
const link = base ? (
|
const link = base ? (
|
||||||
<a
|
<a
|
||||||
@@ -245,6 +261,16 @@ export const Studio: React.FC = () => {
|
|||||||
);
|
);
|
||||||
return (
|
return (
|
||||||
<li key={stashID.stash_id} className="row no-gutters">
|
<li key={stashID.stash_id} className="row no-gutters">
|
||||||
|
{isEditing && (
|
||||||
|
<Button
|
||||||
|
variant="danger"
|
||||||
|
className="mr-2 py-0"
|
||||||
|
title="Delete StashID"
|
||||||
|
onClick={() => removeStashID(stashID)}
|
||||||
|
>
|
||||||
|
<Icon icon="trash-alt" />
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
{link}
|
{link}
|
||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
@@ -353,7 +379,7 @@ export const Studio: React.FC = () => {
|
|||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{!isEditing && renderStashIDs()}
|
{renderStashIDs()}
|
||||||
</tbody>
|
</tbody>
|
||||||
</Table>
|
</Table>
|
||||||
<DetailsEditNavbar
|
<DetailsEditNavbar
|
||||||
|
|||||||
Reference in New Issue
Block a user