Fix display of changelog
This commit is contained in:
parent
7ea182ce05
commit
4f01a364d3
@ -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();
|
||||
};
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user