From b62596ac3f5ec396acae605d41253ab34f7aef7f Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Mon, 4 Dec 2017 16:24:21 -0200 Subject: [PATCH] Set user presence (online/away) (#127) * - User presence away when app goes to background - User presence online when app comes back to foreground * test if user is connected before call userpresence * Update state.js --- app/lib/rocketchat.js | 6 ++++++ app/sagas/state.js | 22 ++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) 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 ); };