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() {
	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() {
	yield takeLatest(
		FOREGROUND,
		appHasComeBackToForeground
	);
	yield takeLatest(
		BACKGROUND,
		appHasComeBackToBackground
	);
	yield takeLatest(
		INACTIVE,
		appHasComeBackToBackground
	);
};

export default root;