overte-JulianGro/scripts/system/checkForUpdates.js

54 lines
1.8 KiB
JavaScript

// checkForUpdates.js
//
// Created by Kalila L. on 8/27/20
// Copyright 2020 Vircadia contributors.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
Script.include("/~/system/libraries/utils.js");
var networkingConstants = Script.require("./libraries/networkingConstants.js");
// We'll want a way to specify this later, auto detection can also be a thing, but strictly optional.
var currentBuildType = "latest";
var currentVersion = About.buildVersion;
// Notification Variables
var NOTIFICATION_CHANNEL = "System-Notifications";
var NOTIFICATION_TYPE = "Update-Notification";
var NOTIFICATION_CATEGORY = "Interface";
var notificationText = "An update is available: ";
var notificationColor = { red: 137, green: 63, blue: 255 };
function retrieveMetadata() {
var requireMetadata = Script.require(networkingConstants.INTERFACE_METADATA_SOURCE + '?' + Date.now());
if (requireMetadata) {
return requireMetadata;
} else {
return false;
}
}
function checkForUpdates() {
var vircadiaMetadata = retrieveMetadata();
// Don't check for updates on a dev build.
if (vircadiaMetadata && currentVersion !== "dev") {
var checkVersion = semanticVersionCompare(currentVersion, vircadiaMetadata[currentBuildType].version);
// An update is available!
if (checkVersion === -1) {
Messages.sendMessage(NOTIFICATION_CHANNEL, JSON.stringify({
type: NOTIFICATION_TYPE,
category: NOTIFICATION_CATEGORY,
channel: "Local",
position: MyAvatar.position,
colour: notificationColor,
message: notificationText + vircadiaMetadata[currentBuildType].version,
}));
}
}
}
checkForUpdates();