load room on return

This commit is contained in:
Guilherme Gazzo 2017-11-28 16:18:39 -02:00
parent 4f9638b151
commit 0318366aef
No known key found for this signature in database
GPG Key ID: 1F85C9AD922D0829
5 changed files with 41 additions and 9 deletions

View File

@ -12,7 +12,8 @@ import * as NavigationService from './routes/NavigationService';
@connect(
state => ({
login: state.login,
app: state.app
app: state.app,
background: state.app.background
}),
dispatch => bindActionCreators({
appInit
@ -26,7 +27,7 @@ export default class Routes extends React.Component {
}
componentWillMount() {
this.props.appInit();
return !this.props.app.ready && this.props.appInit();
}
componentDidUpdate() {

View File

@ -1,4 +1,5 @@
import { NavigationActions } from 'react-navigation';
import reduxStore from '../../lib/createStore';
const config = {};
@ -31,6 +32,7 @@ export function goRoom({ rid, name }, counter = 0) {
if (!config.navigator) {
return setTimeout(() => goRoom({ rid, name }, counter + 1), 200);
}
const action = NavigationActions.reset({
index: 1,
actions: [
@ -39,5 +41,5 @@ export function goRoom({ rid, name }, counter = 0) {
]
});
return config.navigator.dispatch(action);
requestAnimationFrame(() => config.navigator.dispatch(action), reduxStore.getState().app.starting);
}

View File

@ -1,19 +1,46 @@
import { FOREGROUND, BACKGROUND, INACTIVE } from 'redux-enhancer-react-native-appstate';
import { APP } from '../actions/actionsTypes';
const initialState = {
starting: true
starting: true,
ready: false,
inactive: false,
background: false
};
export default function app(state = initialState, action) {
switch (action.type) {
case FOREGROUND:
return {
...state,
inactive: false,
foreground: true,
background: false
};
case BACKGROUND:
return {
...state,
inactive: false,
foreground: false,
background: true
};
case INACTIVE:
return {
...state,
inactive: true,
foreground: false,
background: false
};
case APP.INIT:
return {
...state,
ready: false,
starting: true
};
case APP.READY:
return {
...state,
ready: true,
starting: false
};
default:

View File

@ -11,6 +11,8 @@ const initialState = {
export default function login(state = initialState, action) {
switch (action.type) {
case types.APP.INIT:
return initialState;
case types.LOGIN.REQUEST:
return {
...state,

View File

@ -81,6 +81,9 @@ export default class RoomView extends React.Component {
this.rid =
props.rid ||
props.navigation.state.params.room.rid;
this.name = this.props.name ||
this.props.navigation.state.params.name ||
this.props.navigation.state.params.room.name;
this.data = realm
.objects('messages')
@ -96,12 +99,9 @@ export default class RoomView extends React.Component {
componentWillMount() {
this.props.navigation.setParams({
title:
this.props.name ||
this.props.navigation.state.params.name ||
this.props.navigation.state.params.room.name
title: this.name
});
this.props.openRoom({ rid: this.rid });
this.props.openRoom({ rid: this.rid, name: this.name });
this.data.addListener(this.updateState);
}
componentDidMount() {