Add check version functionality (#296)

This commit is contained in:
Infinite
2020-01-23 14:24:30 +01:00
parent 63cc97d199
commit dda36f6b09
3 changed files with 106 additions and 3 deletions

View File

@@ -1,9 +1,10 @@
import React from "react";
import { Table, Spinner } from "react-bootstrap";
import { Button, Table, Spinner } from "react-bootstrap";
import { StashService } from "src/core/StashService";
export const SettingsAboutPanel: React.FC = () => {
const { data, error, loading } = StashService.useVersion();
const { data: dataLatest, error: errorLatest, loading: loadingLatest, refetch, networkStatus } = StashService.useLatestVersion();
function maybeRenderTag() {
if (!data || !data.version || !data.version.version) {
@@ -17,6 +18,44 @@ export const SettingsAboutPanel: React.FC = () => {
);
}
function maybeRenderLatestVersion() {
if (!dataLatest || !dataLatest.latestversion || !dataLatest.latestversion.shorthash || !dataLatest.latestversion.url) { return; }
if (!data || !data.version || !data.version.hash) {
return (
<>{dataLatest.latestversion.shorthash}</>
);
}
if (data.version.hash !== dataLatest.latestversion.shorthash) {
return (
<>
<strong>{dataLatest.latestversion.shorthash} [NEW] </strong><a href={dataLatest.latestversion.url}>Download</a>
</>
);
}
return (
<>{dataLatest.latestversion.shorthash}</>
);
}
function renderLatestVersion() {
if (!data || !data.version || !data.version.version) { return; } //if there is no "version" latest version check is obviously not supported
return (
<Table>
<tbody>
<tr>
<td>Latest Version Build Hash: </td>
<td>{maybeRenderLatestVersion()} </td>
</tr>
<tr>
<td><Button onClick={() => refetch()}>Check for new version</Button></td>
</tr>
</tbody>
</Table>
);
}
function renderVersion() {
if (!data || !data.version) {
return;
@@ -43,8 +82,10 @@ export const SettingsAboutPanel: React.FC = () => {
<>
<h4>About</h4>
{!data || loading ? <Spinner animation="border" variant="light" /> : ""}
{error ? <span>error.message</span> : ""}
{!!error ? <span>{error.message}</span> : undefined}
{!!errorLatest ? <span>{errorLatest.message}</span> : undefined}
{renderVersion()}
{!dataLatest || loadingLatest || networkStatus === 4 ? <Spinner animation="border" variant="light" /> : <>{renderLatestVersion()}</>}
</>
);
};