X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=skyquake%2Fframework%2Fwidgets%2Fskyquake_container%2FskyquakeContainerStore.js;h=87651e59c6de46cc94d4b7ebe1b6c748f4bcd779;hb=c939d026fe2116d17370970e9359e93a440a5a5f;hp=fe4a7b059c16be508b1ee75d6ef9b601df10668a;hpb=e29efc315df33d546237e270470916e26df391d6;p=osm%2FUI.git diff --git a/skyquake/framework/widgets/skyquake_container/skyquakeContainerStore.js b/skyquake/framework/widgets/skyquake_container/skyquakeContainerStore.js index fe4a7b059..87651e59c 100644 --- a/skyquake/framework/widgets/skyquake_container/skyquakeContainerStore.js +++ b/skyquake/framework/widgets/skyquake_container/skyquakeContainerStore.js @@ -1,5 +1,5 @@ /* - * + * * Copyright 2016 RIFT.IO Inc * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -20,9 +20,12 @@ import Alt from './skyquakeAltInstance.js'; import SkyquakeContainerSource from './skyquakeContainerSource.js'; import SkyquakeContainerActions from './skyquakeContainerActions'; -import _ from 'lodash'; +let Utils = require('utils/utils.js'); +import _indexOf from 'lodash/indexOf'; +import _isEqual from 'lodash/isEqual'; //Temporary, until api server is on same port as webserver -var rw = require('utils/rw.js'); +import rw from 'utils/rw.js'; + var API_SERVER = rw.getSearchParams(window.location).api_server; var UPLOAD_SERVER = rw.getSearchParams(window.location).upload_server; @@ -32,9 +35,12 @@ class SkyquakeContainerStore { this.nav = {}; this.notifications = []; this.socket = null; + this.projects = []; + this.user = {}; //Notification defaults this.notificationMessage = ''; this.displayNotification = false; + this.notificationType = 'error'; //Screen Loader default this.displayScreenLoader = false; this.bindActions(SkyquakeContainerActions); @@ -81,9 +87,9 @@ class SkyquakeContainerStore { let connection = data.connection; let streamSource = data.streamSource; console.log('Success opening notification socket for stream ', streamSource); - + let ws = window.multiplexer.channel(connection); - + if (!connection) return; self.setState({ socket: ws.ws, @@ -99,7 +105,7 @@ class SkyquakeContainerStore { } else { // Temp to test before adding multi-sources data.notification.source = streamSource; - if (_.indexOf(self.notifications, data.notification) == -1) { + if (_indexOf(self.notifications, data.notification) == -1) { // newly appreared event. // Add to the notifications list and setState self.notifications.unshift(data.notification); @@ -160,22 +166,61 @@ class SkyquakeContainerStore { }) } + openProjectSocketSuccess = (connection) => { + var self = this; + var ws = window.multiplexer.channel(connection); + if (!connection) return; + self.setState({ + socket: ws.ws, + channelId: connection + }); + ws.onmessage = function(socket) { + try { + var data = JSON.parse(socket.data); + Utils.checkAuthentication(data.statusCode, function() { + self.closeSocket(); + }); + if (!_isEqual(data.project, self.projects)) { + let user = self.user; + user.projects = data.project; + self.setState({ + user: user, + projects: data.project + }); + } + } catch(e) { + console.log('HIT an exception in openProjectSocketSuccess', e); + } + }; + } + getUserProfileSuccess = (user) => { + this.alt.actions.global.hideScreenLoader.defer(); + this.setState({user}) + } + selectActiveProjectSuccess = (projectId) => { + let user = this.user; + user.projectId = projectId; + this.setState({user}); + window.location.reload(true); + } //Notifications showNotification = (data) => { - if(typeof(data) == 'string') { - this.setState({ + let state = { displayNotification: true, - notificationMessage: data - }); + notificationMessage: data, + notificationType: 'error', + displayScreenLoader: false + } + if(typeof(data) == 'string') { + } else { - if(data.type == 'error') { - this.setState({ - displayNotification: true, - notificationMessage: data.msg, - displayScreenLoader: false - }); + if(!data) data = {}; + state.notificationMessage = data.msg || 'Something wrong occurred. Check the network tab and console logs for more information.'; + if(data.type) { + state.notificationType = data.type; } } + this.setState(state); } hideNotification = () => { this.setState({ @@ -234,4 +279,4 @@ function getCurrentPlugin() { } } -export default Alt.createStore(SkyquakeContainerStore); +export default Alt.createStore(SkyquakeContainerStore, 'SkyquakeContainerStore');