mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-06-20 15:40:29 +00:00
Update server.service.ts
This commit is contained in:
@ -3,26 +3,51 @@ import { IndexedDbService } from './indexed-db.service';
|
|||||||
import { Server } from '../models/server';
|
import { Server } from '../models/server';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { HttpServer } from './http-server.service';
|
import { HttpServer } from './http-server.service';
|
||||||
|
import { ToasterService } from './toaster.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ServerService {
|
export class ServerService {
|
||||||
private tablename = 'servers';
|
private tablename = 'servers';
|
||||||
private ready: Promise<any>;
|
private ready: Promise<any>;
|
||||||
|
private isIncognitoMode: boolean = false;
|
||||||
|
private serverIdsInIncognitoMode: string[] = [];
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private indexedDbService: IndexedDbService,
|
private indexedDbService: IndexedDbService,
|
||||||
private httpServer: HttpServer
|
private httpServer: HttpServer,
|
||||||
|
private toasterService: ToasterService
|
||||||
) {
|
) {
|
||||||
this.ready = indexedDbService.get().openDatabase(1, evt => {
|
this.ready = indexedDbService.get().openDatabase(1, evt => {
|
||||||
evt.currentTarget.result.createObjectStore(this.tablename, { keyPath: 'id', autoIncrement: true });
|
evt.currentTarget.result.createObjectStore(this.tablename, { keyPath: 'id', autoIncrement: true });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.ready.then(() => {}).catch(() => {
|
||||||
|
this.isIncognitoMode = true;
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
public get(id: number): Promise<Server> {
|
public get(id: number): Promise<Server> {
|
||||||
|
if (this.isIncognitoMode) {
|
||||||
|
let server: Server = JSON.parse(localStorage.getItem(`server-${id}`));
|
||||||
|
let promise = new Promise<Server>(resolve => {
|
||||||
|
return server;
|
||||||
|
});
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
||||||
return this.onReady(() => this.indexedDbService.get().getByKey(this.tablename, id)) as Promise<Server>;
|
return this.onReady(() => this.indexedDbService.get().getByKey(this.tablename, id)) as Promise<Server>;
|
||||||
}
|
}
|
||||||
|
|
||||||
public create(server: Server) {
|
public create(server: Server) {
|
||||||
|
if (this.isIncognitoMode) {
|
||||||
|
server.id = this.serverIdsInIncognitoMode.length + 1;
|
||||||
|
localStorage.setItem(`server-${server.id}`, JSON.stringify(server));
|
||||||
|
let promise = new Promise<Server>(resolve => {
|
||||||
|
return server;
|
||||||
|
});
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
||||||
return this.onReady(() => {
|
return this.onReady(() => {
|
||||||
const promise = new Promise((resolve, reject) => {
|
const promise = new Promise((resolve, reject) => {
|
||||||
this.indexedDbService
|
this.indexedDbService
|
||||||
@ -38,6 +63,13 @@ export class ServerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public update(server: Server) {
|
public update(server: Server) {
|
||||||
|
if (this.isIncognitoMode) {
|
||||||
|
let promise = new Promise<Server>(resolve => {
|
||||||
|
return [];
|
||||||
|
});
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
||||||
return this.onReady(() => {
|
return this.onReady(() => {
|
||||||
const promise = new Promise((resolve, reject) => {
|
const promise = new Promise((resolve, reject) => {
|
||||||
this.indexedDbService
|
this.indexedDbService
|
||||||
@ -52,10 +84,24 @@ export class ServerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public findAll() {
|
public findAll() {
|
||||||
|
if (this.isIncognitoMode) {
|
||||||
|
let promise = new Promise<Server[]>(resolve => {
|
||||||
|
return [];
|
||||||
|
});
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
||||||
return this.onReady(() => this.indexedDbService.get().getAll(this.tablename)) as Promise<Server[]>;
|
return this.onReady(() => this.indexedDbService.get().getAll(this.tablename)) as Promise<Server[]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
public delete(server: Server) {
|
public delete(server: Server) {
|
||||||
|
if (this.isIncognitoMode) {
|
||||||
|
let promise = new Promise(resolve => {
|
||||||
|
return [];
|
||||||
|
});
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
||||||
return this.onReady(() => this.indexedDbService.get().delete(this.tablename, server.id));
|
return this.onReady(() => this.indexedDbService.get().delete(this.tablename, server.id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,6 +114,13 @@ export class ServerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public getLocalServer(host: string, port: number) {
|
public getLocalServer(host: string, port: number) {
|
||||||
|
if (this.isIncognitoMode) {
|
||||||
|
let promise = new Promise(resolve => {
|
||||||
|
return [];
|
||||||
|
});
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
||||||
const promise = new Promise((resolve, reject) => {
|
const promise = new Promise((resolve, reject) => {
|
||||||
this.findAll().then((servers: Server[]) => {
|
this.findAll().then((servers: Server[]) => {
|
||||||
const local = servers.find(server => server.location === 'bundled');
|
const local = servers.find(server => server.location === 'bundled');
|
||||||
|
Reference in New Issue
Block a user