Fix display of changelog

This commit is contained in:
Ingo Oppermann 2022-11-09 11:14:47 +01:00
parent 7ea182ce05
commit 4f01a364d3
No known key found for this signature in database
GPG Key ID: 2AB32426E9DD229E
4 changed files with 73 additions and 37 deletions

View File

@ -14,6 +14,7 @@ import ChannelList from './misc/ChannelList';
import Footer from './Footer';
import I18n from './I18n';
import Header from './Header';
import * as M from './utils/metadata';
import Restreamer from './utils/restreamer';
import Router from './Router';
import Views from './views';
@ -51,7 +52,6 @@ export default function RestreamerUI(props) {
password: false,
updates: false,
service: false,
changelog: false,
});
const [$ready, setReady] = React.useState(false);
const [$snack, setSnack] = React.useState({
@ -160,26 +160,49 @@ export default function RestreamerUI(props) {
};
const checkChangelog = async () => {
let showChangelog = false;
let showChangelog = true;
if (restreamer.current.IsConnected() === true) {
let metadata = await restreamer.current.GetMetadata();
let metadata = await restreamer.current.GetMetadata(false);
const channels = await restreamer.current.ListChannels();
let current = Version.replace('restreamer-', '');
let previous = '';
if ('version' in metadata.ui) {
if (SemverValid(metadata.ui.version) !== null) {
previous = metadata.ui.version;
} else {
showChangelog = true;
}
} else {
showChangelog = true;
if (SemverValid(current) === null) {
showChangelog = false;
}
if (showChangelog === false) {
if (SemverGt(current, previous)) {
showChangelog = true;
if (metadata === null) {
if (channels.length === 0) {
// assume fresh installation
await restreamer.current.SetMetadata({
...metadata,
bundle: {
...metadata.bundle,
version: current,
},
});
return false;
}
}
metadata = M.initMetadata(metadata);
if ('version' in metadata.bundle) {
if (SemverValid(metadata.bundle.version) !== null) {
previous = metadata.bundle.version;
}
}
if (showChangelog === true) {
if (SemverValid(previous) === null) {
previous = '';
}
if (previous.length !== 0) {
if (!SemverGt(current, previous)) {
showChangelog = false;
}
}
}
@ -199,6 +222,21 @@ export default function RestreamerUI(props) {
return showChangelog;
};
const handleCloseChangelog = async () => {
await restreamer.current.SetMetadata({
...$metadata,
bundle: {
...$metadata.bundle,
version: $changelog.current,
},
});
setChangelog({
...$changelog,
open: false,
});
};
const handleLogin = async (username, password) => {
const connected = await restreamer.current.Login(username, password);
@ -388,21 +426,6 @@ export default function RestreamerUI(props) {
});
};
const handleCloseChangelog = async () => {
await restreamer.current.SetMetadata({
...$metadata,
ui: {
...$metadata.ui,
version: $changelog.current,
},
});
setChangelog({
...$changelog,
open: false,
});
};
const handleResources = async () => {
return await restreamer.current.Resources();
};

View File

@ -7,6 +7,7 @@ import Grid from '@mui/material/Grid';
import ReactMarkdown from 'react-markdown';
import SemverGt from 'semver/functions/gt';
import SemverLte from 'semver/functions/lte';
import SemverEq from 'semver/functions/eq';
import SemverValid from 'semver/functions/valid';
import BoxText from './BoxText';
@ -110,10 +111,18 @@ export default function Changelog(props) {
previous = version;
}
if (SemverLte(version, current) && SemverGt(version, previous)) {
copy = true;
if (SemverEq(current, previous)) {
if (SemverEq(version, current)) {
copy = true;
} else {
copy = false;
}
} else {
copy = false;
if (SemverLte(version, current) && SemverGt(version, previous)) {
copy = true;
} else {
copy = false;
}
}
}

View File

@ -250,7 +250,7 @@ import * as version from '../version';
const defaultMetadata = {
version: version.Version,
playersite: {},
ui: {},
bundle: {},
};
const defaultIngestMetadata = {
@ -360,9 +360,9 @@ const mergeMetadata = (metadata, base) => {
...metadata.playersite,
};
metadata.ui = {
...base.ui,
...metadata.ui,
metadata.bundle = {
...base.bundle,
...metadata.bundle,
};
metadata = transformMetadata(metadata, defaultMetadata.version, transformers);

View File

@ -944,9 +944,13 @@ class Restreamer {
}
// Get system metadata
async GetMetadata() {
async GetMetadata(defaults = true) {
let metadata = await this._getMetadata();
if (defaults === false) {
return metadata;
}
return M.initMetadata(metadata);
}