1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-08-02 20:15:26 +02:00

Semver based in-app news and update notification

Ignore semver.patch for Whats New notifications.

Use semver.major.minor.patch for Admin notifications.

Changed endpoint to /news.
This commit is contained in:
McMatts 2018-03-23 11:52:19 +00:00
parent 8d65c2d571
commit 0b85657536
8 changed files with 715 additions and 681 deletions

View file

@ -25,7 +25,7 @@ export default Component.extend({
let self = this;
let cacheBuster = + new Date();
$.ajax({
url: `https://storage.googleapis.com/documize/downloads/updates/summary.html?cb=${cacheBuster}`,
url: `https://storage.googleapis.com/documize/news/summary.html?cb=${cacheBuster}`,
type: 'GET',
dataType: 'html',
success: function (response) {

View file

@ -48,7 +48,7 @@ export default Component.extend(ModalMixin, {
let self = this;
let cacheBuster = + new Date();
$.ajax({
url: `https://storage.googleapis.com/documize/downloads/updates/${version}.html?cb=${cacheBuster}`,
url: `https://storage.googleapis.com/documize/news/${version}.html?cb=${cacheBuster}`,
type: 'GET',
dataType: 'html',
success: function (response) {

View file

@ -13,6 +13,7 @@ import $ from 'jquery';
import { htmlSafe } from '@ember/string';
import { resolve } from 'rsvp';
import Service, { inject as service } from '@ember/service';
import miscUtil from '../utils/misc';
import config from '../config/environment';
import constants from '../utils/constants';
@ -28,6 +29,9 @@ export default Service.extend({
version: '',
message: '',
edition: 'Community',
// for major.minor semver release detection
// for bugfix releases, only admin is made aware of new release and end users see no Whats New messaging
updateAvailable: false,
valid: true,
allowAnonymousAccess: false,
authProvider: constants.AuthProvider.Documize,
@ -80,7 +84,7 @@ export default Service.extend({
let self = this;
let cacheBuster = + new Date();
$.getJSON(`https://storage.googleapis.com/documize/downloads/updates/meta.json?cb=${cacheBuster}`, function (versions) {
$.getJSON(`https://storage.googleapis.com/documize/news/meta.json?cb=${cacheBuster}`, function (versions) {
let cv = 'v' + versions.community.version;
let ev = 'v' + versions.enterprise.version;
let re = self.get('edition');
@ -90,12 +94,11 @@ export default Service.extend({
self.set('enterpriseLatest', ev);
self.set('updateAvailable', false); // set to true for testing
if (re === 'Community' && rv < cv) {
self.set('updateAvailable', true);
}
if (re === 'Enterprise' && rv < ev) {
self.set('updateAvailable', true);
}
let isNewCommunity = miscUtil.isNewVersion(rv, cv, true);
let isNewEnterprise = miscUtil.isNewVersion(rv, ev, true);
if (re === 'Community' && isNewCommunity) self.set('updateAvailable', true);
if (re === 'Enterprise' && isNewEnterprise) self.set('updateAvailable', true);
});
return response;

View file

@ -61,8 +61,41 @@ function insertAtCursor(myField, myValue) {
}
}
// Expects to receive semver version strings like "1.2.3" or "v1.2.3".
function isNewVersion(v1, v2, compareRevision) {
// Remove any "v" from version strings.
v1 = v1.replace('v', '');
v2 = v2.replace('v', '');
// Clean up strings.
v1 = v1.trim().toLowerCase();
v2 = v2.trim().toLowerCase();
// Format expected is "1.2.3".
let v1parts = v1.split('.');
let v2parts = v2.split('.');
// Must be 3+ parts per version string supporting
// v1.2.3 and v.1.2.3.beta1
if (v1parts.length < 3) return false;
if (v2parts.length < 3) return false;
// Compare Major and Minor verson parts.
if (v2parts[0] > v1parts[0]) return true;
if (v2parts[0] === v1parts[0] && v2parts[1] > v1parts[1]) return true;
if (compareRevision) {
if (v2parts[0] === v1parts[0] &&
v2parts[1] === v1parts[1] &&
v2parts[2] > v1parts[2]) return true;
}
return false;
}
export default {
interval,
wrapFunction,
insertAtCursor
insertAtCursor,
isNewVersion
};