@@ -351,7 +351,7 @@ class App {
|
||||
|
||||
// Handle next auto upload
|
||||
const nextAutoUpload = document.createElement("span");
|
||||
const startTimeStr = "Next scheduled check: ";
|
||||
const startTimeStr = this.tls.next_scheduled_check + ": ";
|
||||
this.actionsArea.appendChild(nextAutoUpload);
|
||||
|
||||
const options1 = {
|
||||
@@ -365,10 +365,21 @@ class App {
|
||||
const dateTimeFormat1 = new Intl.DateTimeFormat(this.lang, options1);
|
||||
const nextUploadTime = Date.parse(this.config.next_auto_upload);
|
||||
const now = new Date();
|
||||
const diffMs = nextUploadTime - now;
|
||||
|
||||
const diffMins = Math.round((diffMs % 86400000) / 60000); // minutes
|
||||
nextAutoUpload.textContent = dateTimeFormat1.format(nextUploadTime) + " (in " + diffMins + " mins)";
|
||||
setInterval(function() {
|
||||
const diffMs = nextUploadTime - now;
|
||||
const diffMins = Math.round((diffMs % 86400000) / 60000); // minutes
|
||||
nextAutoUpload.textContent = startTimeStr + dateTimeFormat1.format(nextUploadTime) + " (in " + diffMins + " mins)";
|
||||
}, 60);
|
||||
|
||||
// Version
|
||||
const vSpan = document.createElement("a");
|
||||
vSpan.textContent = this.tls.version + " " + this.config.version;
|
||||
if (this.config.update_available === true) {
|
||||
vSpan.style.color = "red";
|
||||
vSpan.href = "https://gitea.armuli.eu/museum-digital/museum-digital-webdav-uploader/releases";
|
||||
}
|
||||
this.actionsArea.appendChild(vSpan)
|
||||
|
||||
}
|
||||
|
||||
|
@@ -13,6 +13,7 @@ type getSettingsApiResponse struct {
|
||||
SetupRequired bool `json:"setup_required"`
|
||||
Settings configloader.MDWebDavUploaderConfig `json:"settings"`
|
||||
NextAutoUpload string `json:"next_auto_upload"`
|
||||
UpdateAvailable bool `json:"update_available"`
|
||||
}
|
||||
|
||||
// Generates the API output for listing current settings.
|
||||
@@ -27,7 +28,7 @@ func serveApiGetSettings(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
setHeadersForJson(w)
|
||||
output := getSettingsApiResponse{SetupRequired: setupRequired, Settings: config, Version: meta.GetVersion(), NextAutoUpload: nextAutoUpOut}
|
||||
output := getSettingsApiResponse{SetupRequired: setupRequired, Settings: config, Version: meta.GetVersion(), NextAutoUpload: nextAutoUpOut, UpdateAvailable: updateAvailable}
|
||||
|
||||
outputJson, encodeErr := json.Marshal(output)
|
||||
if encodeErr != nil {
|
||||
|
@@ -10,12 +10,14 @@ import (
|
||||
"github.com/go-co-op/gocron/v2"
|
||||
"gitea.armuli.eu/museum-digital/museum-digital-webdav-uploader/src/cli"
|
||||
"gitea.armuli.eu/museum-digital/museum-digital-webdav-uploader/src/configloader"
|
||||
"gitea.armuli.eu/museum-digital/museum-digital-webdav-uploader/src/meta"
|
||||
)
|
||||
|
||||
var config configloader.MDWebDavUploaderConfig
|
||||
var setupRequired bool
|
||||
var setupRequired bool
|
||||
var scheduler gocron.Scheduler
|
||||
var scheduledUpload gocron.Job
|
||||
var updateAvailable bool
|
||||
|
||||
// Opens the application in the default browser.
|
||||
func openInBrowser(port string) {
|
||||
@@ -69,9 +71,25 @@ func scheduleUploads() {
|
||||
|
||||
}
|
||||
|
||||
// Checks if a new update is available. If that can be confirmed, set updateAvailable
|
||||
// to true.
|
||||
func checkUpdateAvailable() {
|
||||
|
||||
output, err := meta.CheckVersionIsUpToDate()
|
||||
// If the RSS stream could not be fetched or parsed, don't say anything
|
||||
if err != nil || output.Title == "" {
|
||||
updateAvailable = false
|
||||
} else {
|
||||
updateAvailable = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Sets up the server and manages routing.
|
||||
func Run() {
|
||||
|
||||
checkUpdateAvailable()
|
||||
|
||||
config, setupRequired, _ = configloader.LoadFromFile("")
|
||||
|
||||
// Bind callable URLs
|
||||
|
Submodule src/webui/translation-json updated: 6803016b70...89deadcad0
Reference in New Issue
Block a user