mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-11-29 10:28:53 +03:00
Fix version change check
This commit is contained in:
parent
dc237f10a8
commit
0662769696
4 changed files with 3 additions and 72 deletions
|
@ -2,7 +2,7 @@ import { createAction } from 'redux-actions';
|
||||||
import i18next from 'i18next';
|
import i18next from 'i18next';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
|
||||||
import { isVersionGreater, splitByNewLine, sortClients } from '../helpers/helpers';
|
import { splitByNewLine, sortClients } from '../helpers/helpers';
|
||||||
import { CHECK_TIMEOUT, SETTINGS_NAMES } from '../helpers/constants';
|
import { CHECK_TIMEOUT, SETTINGS_NAMES } from '../helpers/constants';
|
||||||
import { getTlsStatus } from './encryption';
|
import { getTlsStatus } from './encryption';
|
||||||
import apiClient from '../api/Api';
|
import apiClient from '../api/Api';
|
||||||
|
@ -121,7 +121,7 @@ export const getVersion = (recheck = false) => async (dispatch, getState) => {
|
||||||
const { dnsVersion } = getState().dashboard;
|
const { dnsVersion } = getState().dashboard;
|
||||||
const currentVersion = dnsVersion === 'undefined' ? 0 : dnsVersion;
|
const currentVersion = dnsVersion === 'undefined' ? 0 : dnsVersion;
|
||||||
|
|
||||||
if (data && isVersionGreater(currentVersion, data.new_version)) {
|
if (data && currentVersion !== data.new_version) {
|
||||||
dispatch(addSuccessToast('updates_checked'));
|
dispatch(addSuccessToast('updates_checked'));
|
||||||
} else {
|
} else {
|
||||||
dispatch(addSuccessToast('updates_version_equal'));
|
dispatch(addSuccessToast('updates_version_equal'));
|
||||||
|
|
|
@ -12,7 +12,6 @@ import i18n from 'i18next';
|
||||||
import uniqBy from 'lodash/uniqBy';
|
import uniqBy from 'lodash/uniqBy';
|
||||||
import ipaddr from 'ipaddr.js';
|
import ipaddr from 'ipaddr.js';
|
||||||
import queryString from 'query-string';
|
import queryString from 'query-string';
|
||||||
import versionCompare from './versionCompare';
|
|
||||||
import { getTrackerData } from './trackers/trackers';
|
import { getTrackerData } from './trackers/trackers';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
@ -418,10 +417,6 @@ export const secondsToMilliseconds = (seconds) => {
|
||||||
export const normalizeRulesTextarea = (text) => text?.replace(/^\n/g, '')
|
export const normalizeRulesTextarea = (text) => text?.replace(/^\n/g, '')
|
||||||
.replace(/\n\s*\n/g, '\n');
|
.replace(/\n\s*\n/g, '\n');
|
||||||
|
|
||||||
export const isVersionGreater = (currentVersion, previousVersion) => (
|
|
||||||
versionCompare(currentVersion, previousVersion) === -1
|
|
||||||
);
|
|
||||||
|
|
||||||
export const normalizeWhois = (whois) => {
|
export const normalizeWhois = (whois) => {
|
||||||
if (Object.keys(whois).length > 0) {
|
if (Object.keys(whois).length > 0) {
|
||||||
const {
|
const {
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
/*
|
|
||||||
* Project: tiny-version-compare https://github.com/bfred-it/tiny-version-compare
|
|
||||||
* License (MIT) https://github.com/bfred-it/tiny-version-compare/blob/master/LICENSE
|
|
||||||
*/
|
|
||||||
const split = (v) => String(v).replace(/^[vr]/, '') // Drop initial 'v' or 'r'
|
|
||||||
.replace(/([a-z]+)/gi, '.$1.') // Sort each word separately
|
|
||||||
.replace(/[-.]+/g, '.') // Consider dashes as separators (+ trim multiple separators)
|
|
||||||
.split('.');
|
|
||||||
|
|
||||||
// Development versions are considered "negative",
|
|
||||||
// but localeCompare doesn't handle negative numbers.
|
|
||||||
// This offset is applied to reset the lowest development version to 0
|
|
||||||
const offset = (part) => {
|
|
||||||
// Not numeric, return as is
|
|
||||||
if (Number.isNaN(part)) {
|
|
||||||
return part;
|
|
||||||
}
|
|
||||||
return 5 + Number(part);
|
|
||||||
};
|
|
||||||
|
|
||||||
const parsePart = (part) => {
|
|
||||||
// Missing, consider it zero
|
|
||||||
if (typeof part === 'undefined') {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
// Sort development versions
|
|
||||||
switch (part.toLowerCase()) {
|
|
||||||
case 'dev':
|
|
||||||
return -5;
|
|
||||||
case 'alpha':
|
|
||||||
return -4;
|
|
||||||
case 'beta':
|
|
||||||
return -3;
|
|
||||||
case 'rc':
|
|
||||||
return -2;
|
|
||||||
case 'pre':
|
|
||||||
return -1;
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
// Return as is, it’s either a plain number or text that will be sorted alphabetically
|
|
||||||
return part;
|
|
||||||
};
|
|
||||||
|
|
||||||
const versionCompare = (prev, next) => {
|
|
||||||
const a = split(prev);
|
|
||||||
const b = split(next);
|
|
||||||
for (let i = 0; i < a.length || i < b.length; i += 1) {
|
|
||||||
const ai = offset(parsePart(a[i]));
|
|
||||||
const bi = offset(parsePart(b[i]));
|
|
||||||
const sort = String(ai).localeCompare(bi, 'en', {
|
|
||||||
numeric: true,
|
|
||||||
});
|
|
||||||
// Once the difference is found,
|
|
||||||
// stop comparing the rest of the parts
|
|
||||||
if (sort !== 0) {
|
|
||||||
return sort;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// No difference found
|
|
||||||
return 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default versionCompare;
|
|
|
@ -2,7 +2,6 @@ import { combineReducers } from 'redux';
|
||||||
import { handleActions } from 'redux-actions';
|
import { handleActions } from 'redux-actions';
|
||||||
import { loadingBarReducer } from 'react-redux-loading-bar';
|
import { loadingBarReducer } from 'react-redux-loading-bar';
|
||||||
import { reducer as formReducer } from 'redux-form';
|
import { reducer as formReducer } from 'redux-form';
|
||||||
import { isVersionGreater } from '../helpers/helpers';
|
|
||||||
|
|
||||||
import * as actions from '../actions';
|
import * as actions from '../actions';
|
||||||
import toasts from './toasts';
|
import toasts from './toasts';
|
||||||
|
@ -82,7 +81,7 @@ const dashboard = handleActions(
|
||||||
[actions.getVersionSuccess]: (state, { payload }) => {
|
[actions.getVersionSuccess]: (state, { payload }) => {
|
||||||
const currentVersion = state.dnsVersion === 'undefined' ? 0 : state.dnsVersion;
|
const currentVersion = state.dnsVersion === 'undefined' ? 0 : state.dnsVersion;
|
||||||
|
|
||||||
if (!payload.disabled && isVersionGreater(currentVersion, payload.new_version)) {
|
if (!payload.disabled && currentVersion !== payload.new_version) {
|
||||||
const {
|
const {
|
||||||
announcement_url: announcementUrl,
|
announcement_url: announcementUrl,
|
||||||
new_version: newVersion,
|
new_version: newVersion,
|
||||||
|
|
Loading…
Reference in a new issue