diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 74c439b83..885900b6d 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -520,6 +520,12 @@ const RocketChat = { emitTyping(room, t = true) { const { login } = reduxStore.getState(); return call('stream-notify-room', `${ room }/typing`, login.user.username, t); + }, + setUserPresenceAway() { + return call('UserPresence:away'); + }, + setUserPresenceOnline() { + return call('UserPresence:online'); } }; diff --git a/app/sagas/state.js b/app/sagas/state.js index 0f58ae7f9..58b9b7b92 100644 --- a/app/sagas/state.js +++ b/app/sagas/state.js @@ -1,8 +1,22 @@ -import { takeLatest } from 'redux-saga/effects'; +import { takeLatest, select } from 'redux-saga/effects'; import { FOREGROUND, BACKGROUND, INACTIVE } from 'redux-enhancer-react-native-appstate'; +import RocketChat from '../lib/rocketchat'; + const appHasComeBackToForeground = function* appHasComeBackToForeground() { - yield console.log('appHasComeBackToForeground'); + const auth = yield select(state => state.login.isAuthenticated); + if (!auth) { + return; + } + return yield RocketChat.setUserPresenceOnline(); +}; + +const appHasComeBackToBackground = function* appHasComeBackToBackground() { + const auth = yield select(state => state.login.isAuthenticated); + if (!auth) { + return; + } + return yield RocketChat.setUserPresenceAway(); }; const root = function* root() { @@ -12,11 +26,11 @@ const root = function* root() { ); yield takeLatest( BACKGROUND, - appHasComeBackToForeground + appHasComeBackToBackground ); yield takeLatest( INACTIVE, - appHasComeBackToForeground + appHasComeBackToBackground ); };