stash/ui/v2.5/src/components/Changelog/Changelog.tsx
WithoutPants 30877c75fb Release notes dialog (#2726)
* Move manual docs
* Move changelog docs
* Add migration notes
* Move changelog to settings
* Add release notes dialog
* Add new changelog
2022-09-06 07:03:40 +00:00

195 lines
4.4 KiB
TypeScript

import React from "react";
import { useChangelogStorage } from "src/hooks";
import Version from "./Version";
import V010 from "src/docs/en/Changelog/v010.md";
import V011 from "src/docs/en/Changelog/v011.md";
import V020 from "src/docs/en/Changelog/v020.md";
import V021 from "src/docs/en/Changelog/v021.md";
import V030 from "src/docs/en/Changelog/v030.md";
import V040 from "src/docs/en/Changelog/v040.md";
import V050 from "src/docs/en/Changelog/v050.md";
import V060 from "src/docs/en/Changelog/v060.md";
import V070 from "src/docs/en/Changelog/v070.md";
import V080 from "src/docs/en/Changelog/v080.md";
import V090 from "src/docs/en/Changelog/v090.md";
import V0100 from "src/docs/en/Changelog/v0100.md";
import V0110 from "src/docs/en/Changelog/v0110.md";
import V0120 from "src/docs/en/Changelog/v0120.md";
import V0130 from "src/docs/en/Changelog/v0130.md";
import V0131 from "src/docs/en/Changelog/v0131.md";
import V0140 from "src/docs/en/Changelog/v0140.md";
import V0150 from "src/docs/en/Changelog/v0150.md";
import V0160 from "src/docs/en/Changelog/v0160.md";
import V0161 from "src/docs/en/Changelog/v0161.md";
import V0170 from "src/docs/en/Changelog/v0170.md";
import { MarkdownPage } from "../Shared/MarkdownPage";
// to avoid use of explicit any
type Module = typeof V010;
const Changelog: React.FC = () => {
const [{ data, loading }, setOpenState] = useChangelogStorage();
const stashVersion = import.meta.env.VITE_APP_STASH_VERSION;
const buildTime = import.meta.env.VITE_APP_DATE;
let buildDate;
if (buildTime) {
buildDate = buildTime.substring(0, buildTime.indexOf(" "));
}
if (loading) return <></>;
const openState = data?.versions ?? {};
const setVersionOpenState = (key: string, state: boolean) =>
setOpenState({
versions: {
...openState,
[key]: state,
},
});
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.17.0";
const currentDate = buildDate;
const currentPage = V0170;
const releases: IStashRelease[] = [
{
version: currentVersion,
date: currentDate,
page: currentPage,
defaultOpen: true,
},
{
version: "v0.16.1",
date: "2022-07-26",
page: V0161,
},
{
version: "v0.16.0",
date: "2022-07-05",
page: V0160,
},
{
version: "v0.15.0",
date: "2022-05-18",
page: V0150,
},
{
version: "v0.14.0",
date: "2022-04-11",
page: V0140,
},
{
version: "v0.13.1",
date: "2022-03-16",
page: V0131,
},
{
version: "v0.13.0",
date: "2022-03-08",
page: V0130,
},
{
version: "v0.12.0",
date: "2021-12-29",
page: V0120,
},
{
version: "v0.11.0",
date: "2021-11-16",
page: V0110,
},
{
version: "v0.10.0",
date: "2021-10-11",
page: V0100,
},
{
version: "v0.9.0",
date: "2021-09-06",
page: V090,
},
{
version: "v0.8.0",
date: "2021-07-02",
page: V080,
},
{
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 (
<div className="changelog">
<h1 className="mb-4">Changelog:</h1>
{releases.map((r) => (
<Version
key={r.version}
version={r.version}
date={r.date}
openState={openState}
setOpenState={setVersionOpenState}
defaultOpen={r.defaultOpen}
>
<MarkdownPage page={r.page} />
</Version>
))}
</div>
);
};
export default Changelog;