diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 48627c6..404b487 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -317,34 +317,49 @@ export default class RoomClient { const url = `/auth/login?id=${this._peerId}`; - this._loginWindow = window.open(url, 'loginWindow'); + window.open(url, 'loginWindow'); } logout() { - window.location = '/auth/logout'; + window.open('/auth/logout', 'logoutWindow'); } - receiveFromChildWindow(data) + receiveLoginChildWindow(data) { logger.debug('receiveFromChildWindow() | [data:"%o"]', data); const { displayName, picture } = data; - store.dispatch(stateActions.setDisplayName(displayName)); - store.dispatch(stateActions.setPicture(picture)); - store.dispatch(stateActions.loggedIn()); + if (store.getState().room.state === 'connected') + { + this.changeDisplayName(displayName); + this.changePicture(picture); + } + else + { + store.dispatch(stateActions.setDisplayName(displayName)); + store.dispatch(stateActions.setPicture(picture)); + } + + store.dispatch(stateActions.loggedIn(true)); store.dispatch(requestActions.notify( { text : 'You are logged in.' })); + } - if (store.getState().room.state !== 'new') // no socket yet - { - this.changeDisplayName(displayName); - this.changePicture(picture); - } + receiveLogoutChildWindow() + { + logger.debug('receiveLogoutChildWindow()'); + + store.dispatch(stateActions.loggedIn(false)); + + store.dispatch(requestActions.notify( + { + text : 'You are logged out.' + })); } _soundNotification() diff --git a/app/src/actions/stateActions.js b/app/src/actions/stateActions.js index 55ba6fb..89bc05a 100644 --- a/app/src/actions/stateActions.js +++ b/app/src/actions/stateActions.js @@ -165,6 +165,14 @@ export const setDisplayName = (displayName) => }; }; +export const setDisplayNameInProgress = (flag) => +{ + return { + type : 'SET_DISPLAY_NAME_IN_PROGRESS', + payload : { flag } + }; +}; + export const toggleAdvancedMode = () => { return { @@ -641,9 +649,10 @@ export const setPeerPicture = (peerId, picture) => payload : { peerId, picture } }); -export const loggedIn = () => +export const loggedIn = (flag) => ({ - type : 'LOGGED_IN' + type : 'LOGGED_IN', + payload : { flag } }); export const toggleJoined = () => diff --git a/app/src/reducers/me.js b/app/src/reducers/me.js index 4297de2..13219b0 100644 --- a/app/src/reducers/me.js +++ b/app/src/reducers/me.js @@ -12,6 +12,7 @@ const initialState = webcamInProgress : false, audioInProgress : false, screenShareInProgress : false, + displayNameInProgress : false, loginEnabled : false, raiseHand : false, raiseHandInProgress : false, @@ -39,7 +40,11 @@ const me = (state = initialState, action) => } case 'LOGGED_IN': - return { ...state, loggedIn: true }; + { + const { flag } = action.payload; + + return { ...state, loggedIn: flag }; + } case 'USER_LOGOUT': return { ...state, loggedIn: false }; @@ -114,6 +119,13 @@ const me = (state = initialState, action) => return { ...state, raiseHandInProgress: flag }; } + case 'SET_DISPLAY_NAME_IN_PROGRESS': + { + const { flag } = action.payload; + + return { ...state, displayNameInProgress: flag }; + } + default: return state; } diff --git a/server/httpHelper.js b/server/httpHelper.js index c45c93a..a39bf17 100644 --- a/server/httpHelper.js +++ b/server/httpHelper.js @@ -1,4 +1,4 @@ -function httpHelper(data) +exports.loginHelper = function(data) { const html = ` @@ -10,7 +10,7 @@ function httpHelper(data) @@ -18,6 +18,24 @@ function httpHelper(data) `; return html; -} +}; -module.exports = httpHelper; \ No newline at end of file +exports.logoutHelper = function() +{ + const html = ` + +
+ +