Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marius-wieschollek/passwords-webextension.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/Helper/ServerRequirementCheck.js')
-rw-r--r--src/js/Helper/ServerRequirementCheck.js87
1 files changed, 80 insertions, 7 deletions
diff --git a/src/js/Helper/ServerRequirementCheck.js b/src/js/Helper/ServerRequirementCheck.js
index eceef09..1485b8b 100644
--- a/src/js/Helper/ServerRequirementCheck.js
+++ b/src/js/Helper/ServerRequirementCheck.js
@@ -11,6 +11,10 @@ export default class ServerRequirementCheck {
return [2021, 1];
}
+ get WARNING_APP_VERSION() {
+ return [2022, 2];
+ }
+
/**
*
* @param {PasswordsClient} api
@@ -34,6 +38,10 @@ export default class ServerRequirementCheck {
if(setting.getValue() === null || !this._versionCompare(setting.getValue())) {
if(disable) await this._disableServer(setting.getValue());
return false;
+ } else if(disable && !this._versionCompare(setting.getValue(), this.WARNING_APP_VERSION)) {
+ await this._markServerAsSoonIncompatible(setting.getValue());
+ } else {
+ this._removeFlags(disable);
}
} catch(e) {
@@ -53,9 +61,54 @@ export default class ServerRequirementCheck {
let server = this._api.getServer();
server.setEnabled(false);
server.setStatus(server.STATUS_DISABLED);
+ server.addFlag(server.FLAG_INCOMPATIBLE);
await ServerRepository.update(server);
let minVersion = this.MINIMUM_APP_VERSION.join('.');
+ ErrorManager.error('Disabled account with unsupported api version', {server: server.getLabel(), version: serverVersion, requiredVersion: minVersion});
+ this._sendServerDisabledToast(server, minVersion, serverVersion);
+ }
+
+ /**
+ *
+ * @return {Promise<void>}
+ * @private
+ */
+ async _markServerAsSoonIncompatible(serverVersion) {
+ let server = this._api.getServer();
+ server.addFlag(server.FLAG_SOON_INCOMPATIBLE);
+ await ServerRepository.update(server);
+
+ this._sendServerWarningToast(server, this.WARNING_APP_VERSION.join('.'), serverVersion);
+ }
+
+ /**
+ *
+ * @return {Promise<void>}
+ * @private
+ */
+ async _removeFlags(save) {
+ let server = this._api.getServer();
+ if(server.hasFlag(server.FLAG_SOON_INCOMPATIBLE)) {
+ server.removeFlag(server.FLAG_SOON_INCOMPATIBLE);
+ if(save) await ServerRepository.update(server);
+ }
+ if(server.hasFlag(server.FLAG_INCOMPATIBLE)) {
+ server.removeFlag(server.FLAG_INCOMPATIBLE);
+ server.setEnabled(true);
+ server.setStatus(server.STATUS_UNAUTHORIZED);
+ if(save) await ServerRepository.update(server);
+ }
+ }
+
+ /**
+ *
+ * @param {Server} server
+ * @param {String} minVersion
+ * @param {String} serverVersion
+ * @private
+ */
+ _sendServerDisabledToast(server, minVersion, serverVersion) {
let toast = new Toast()
.setTitle('ToastServerCheckTitle')
.setMessage('ToastServerCheckMessage')
@@ -65,20 +118,40 @@ export default class ServerRequirementCheck {
.setTags([this._api.getServer().getId(), 'server-error'])
.setTtl(0);
- ErrorManager.error('Disabled account with unsupported api version', {server: server.getLabel(), version: serverVersion, requiredVersion: minVersion});
+ ToastService.create(toast)
+ .then(() => {SystemService.getBrowserApi().tabs.create({active: true, url: server.getBaseUrl()});})
+ .catch(ErrorManager.catch);
+ }
+
+ /**
+ *
+ * @param {Server} server
+ * @param {String} minVersion
+ * @param {String} serverVersion
+ * @private
+ */
+ _sendServerWarningToast(server, minVersion, serverVersion) {
+ let toast = new Toast()
+ .setTitle('ToastServerCheckTitle')
+ .setMessage('ToastServerCheckWarning')
+ .setTitleVars([server.getLabel()])
+ .setMessageVars([server.getLabel(), minVersion, serverVersion])
+ .setType('warning')
+ .setTags([this._api.getServer().getId(), 'server-error'])
+ .setTtl(0);
ToastService.create(toast)
- .then(() => {SystemService.getBrowserApi().tabs.create({active: true, url: server.getBaseUrl()});})
- .catch(ErrorManager.catch);
+ .then(() => {SystemService.getBrowserApi().tabs.create({active: true, url: server.getBaseUrl()});})
+ .catch(ErrorManager.catch);
}
/**
- * @param version
+ * @param {String} version
+ * @param {Array} base
* @return {Boolean}
*/
- _versionCompare(version) {
- let base = this.MINIMUM_APP_VERSION,
- parts = version.split('.');
+ _versionCompare(version, base = this.MINIMUM_APP_VERSION) {
+ let parts = version.split('.');
for(let i = 0; i < base.length; i++) {
if(!parts.hasOwnProperty(i)) return false;