[FIX] Room subscription issues (#1255)

This commit is contained in:
Diego Mello 2019-09-27 17:29:25 -03:00 committed by GitHub
parent 3ee97881f3
commit b9485ad3f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 11 deletions

View File

@ -19,7 +19,6 @@ export default function subscribeRoom({ rid }) {
let disconnectedListener;
let notifyRoomListener;
let messageReceivedListener;
const typingTimeouts = {};
const handleConnection = () => {
this.loadMissedMessages({ rid }).catch(e => console.log(e));
@ -200,12 +199,6 @@ export default function subscribeRoom({ rid }) {
messageReceivedListener.then(removeListener);
messageReceivedListener = false;
}
Object.keys(typingTimeouts).forEach((key) => {
if (typingTimeouts[key]) {
clearTimeout(typingTimeouts[key]);
typingTimeouts[key] = null;
}
});
reduxStore.dispatch(clearUserTyping());
};

View File

@ -203,6 +203,9 @@ class RoomView extends React.Component {
this.init();
});
}
if (appState === 'background' && appState !== prevProps.appState) {
this.unsubscribe();
}
}
async componentWillUnmount() {
@ -234,9 +237,7 @@ class RoomView extends React.Component {
}
}
}
if (this.sub && this.sub.stop) {
this.sub.stop();
}
this.unsubscribe();
if (this.didFocusListener && this.didFocusListener.remove) {
this.didFocusListener.remove();
}
@ -282,6 +283,7 @@ class RoomView extends React.Component {
this.setLastOpen(null);
}
RocketChat.readMessages(room.rid, newLastOpen).catch(e => console.log(e));
this.unsubscribe();
this.sub = await RocketChat.subscribeRoom(room);
}
}
@ -324,6 +326,12 @@ class RoomView extends React.Component {
}
}
unsubscribe = () => {
if (this.sub && this.sub.stop) {
this.sub.stop();
}
}
observeRoom = (room) => {
const observable = room.observe();
this.subSubscription = observable

View File

@ -165,7 +165,7 @@ class RoomsListView extends React.Component {
this.willFocusListener = props.navigation.addListener('willFocus', () => {
// Check if there were changes while not focused (it's set on sCU)
if (this.shouldUpdate) {
animateNextTransition();
// animateNextTransition();
this.forceUpdate();
this.shouldUpdate = false;
}