WebConsole-Client-v2.4/client/scripts/WebConsolePersistenceManager.js
2020-01-12 16:00:53 +01:00

149 lines
3.1 KiB
JavaScript

/**
WebConsole Persistence Manager for WebConsole
Used to save your servers into your browser
https://github.com/mesacarlos
2019-2020 Carlos Mesa under MIT License.
*/
class WebConsolePersistenceManager{
/**
* Saves or updates server into WebStorage
*/
saveServer(serverObject){
this.initializeLocalStorage();
//Check if server exists
var i;
var found = false;
var servers = this.getAllServers();
for (i = 0; i < servers.length; i++) {
if(servers[i].serverName == serverObject.serverName){
//Exists, replacing it
servers[i] = serverObject;
found = true;
}
}
//Not found, adding it
if(found == false){
servers.push(serverObject);
}
this.replaceAllServers(servers);
}
/**
* Delete server from saved servers
*/
deleteServer(serverName){
this.initializeLocalStorage();
//Find server
var i;
var index = -1;
var servers = this.getAllServers();
for (i = 0; i < servers.length; i++) {
if(servers[i].serverName == serverName){
index = i;
}
}
//Delete it
if(index > -1){
servers.splice(index, 1);
}
//Save to WebStorage
this.replaceAllServers(servers);
}
/**
* Get server details as object
*/
getServer(serverName){
this.initializeLocalStorage();
var i;
var servers = this.getAllServers();
for (i = 0; i < servers.length; i++) {
if(servers[i].serverName == serverName){
return servers[i];
}
}
}
/**
* Get all servers
*/
getAllServers(){
this.initializeLocalStorage();
var storageObj = JSON.parse(window.localStorage.WebConsole);
return storageObj.servers;
}
/**
* Save language for this client
*/
setLanguage(lang){
this.initializeLocalStorage();
//Retrieve saved data
var storageObj = JSON.parse(window.localStorage.WebConsole);
storageObj.language = lang;
//Save to WebStorage
window.localStorage.WebConsole = JSON.stringify(storageObj);
}
/**
* Get saved language for this client
*/
getLanguage(){
this.initializeLocalStorage();
var storageObj = JSON.parse(window.localStorage.WebConsole);
if(!storageObj.language)
return "en_US";
return storageObj.language;
}
/**
* Create server list if not defined
*/
initializeLocalStorage(){
if (typeof window.localStorage.WebConsole === 'undefined') {
//Create empty object
var storageObj = new Object();
storageObj.servers = new Array();
storageObj.language = "en_US";
//Save to WebStorage
window.localStorage.WebConsole = JSON.stringify(storageObj);
}
}
/**
* Replaces all server list with provided list
*/
replaceAllServers(newServerList){
//Retrieve saved data
var storageObj = JSON.parse(window.localStorage.WebConsole);
storageObj.servers = newServerList;
//Save to WebStorage
window.localStorage.WebConsole = JSON.stringify(storageObj);
}
}
class WSServer{
constructor(serverName, serverURI){
this.serverName = serverName;
this.serverURI = serverURI;
}
setPassword(pwd){
this.serverPassword = pwd;
}
}