Browse Source

Fix close animation on iOS Safari

Fix dividing screen after swiping back if input was focused
master
Eduard Kuzmenko 4 years ago
parent
commit
805b7bcf43
  1. 51
      src/components/appNavigationController.ts
  2. 11
      src/lib/appManagers/appMessagesManager.ts

51
src/components/appNavigationController.ts

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import { MOUNT_CLASS_TO } from "../config/debug";
import { isMobileSafari } from "../helpers/userAgent";
import { cancelEvent } from "../helpers/dom";
import { blurActiveElement, cancelEvent } from "../helpers/dom";
import { logger } from "../lib/logger";
import { doubleRaf } from "../helpers/schedulers";
@ -50,18 +50,45 @@ export class AppNavigationController { @@ -50,18 +50,45 @@ export class AppNavigationController {
}, {capture: true});
if(isMobileSafari) {
/* window.addEventListener('touchstart', (e) => {
const options = {passive: true};
window.addEventListener('touchstart', (e) => {
if(e.touches.length > 1) return;
this.debug && this.log('touchstart');
}, {passive: true}); */
window.addEventListener('touchend', (e) => {
this.debug && this.log('touchend');
if(e.touches.length > 1) return;
isPossibleSwipe = true;
doubleRaf().then(() => {
isPossibleSwipe = false;
});
}, {passive: true});
const detach = () => {
window.removeEventListener('touchend', onTouchEnd);
window.removeEventListener('touchmove', onTouchMove);
};
let moved = false;
const onTouchMove = (e: TouchEvent) => {
this.debug && this.log('touchmove');
if(e.touches.length > 1) {
detach();
return;
}
moved = true;
};
const onTouchEnd = (e: TouchEvent) => {
this.debug && this.log('touchend');
if(e.touches.length > 1 || !moved) {
detach();
return;
}
isPossibleSwipe = true;
doubleRaf().then(() => {
isPossibleSwipe = false;
});
detach();
};
window.addEventListener('touchend', onTouchEnd, options);
window.addEventListener('touchmove', onTouchMove, options);
}, options);
}
this.pushState(); // * push init state
@ -72,6 +99,8 @@ export class AppNavigationController { @@ -72,6 +99,8 @@ export class AppNavigationController {
this.debug && this.log('popstate, navigation:', item, this.navigations);
if(good === false) {
this.pushItem(item);
} else {
blurActiveElement(); // no better place for it
}
this.manual = false;

11
src/lib/appManagers/appMessagesManager.ts

@ -4582,11 +4582,8 @@ export class AppMessagesManager { @@ -4582,11 +4582,8 @@ export class AppMessagesManager {
let offset = 0;
let offsetNotFound = false;
let isMigrated = false;
let reqPeerId = peerId;
if(this.migratedToFrom[peerId]) {
isMigrated = true;
}
const isMigrated = !!this.migratedToFrom[peerId];
const reqPeerId = peerId;
if(maxId) {
offsetNotFound = true;
@ -4726,8 +4723,6 @@ export class AppMessagesManager { @@ -4726,8 +4723,6 @@ export class AppMessagesManager {
}
public requestHistory(peerId: number, maxId: number, limit = 0, offset = 0, offsetDate = 0, threadId = 0): Promise<Exclude<MessagesMessages, MessagesMessages.messagesMessagesNotModified>> {
const isChannel = appPeersManager.isChannel(peerId);
//console.trace('requestHistory', peerId, maxId, limit, offset);
//rootScope.broadcast('history_request');
@ -4758,7 +4753,7 @@ export class AppMessagesManager { @@ -4758,7 +4753,7 @@ export class AppMessagesManager {
appChatsManager.saveApiChats(historyResult.chats);
this.saveMessages(historyResult.messages);
if(isChannel) {
if(appPeersManager.isChannel(peerId)) {
apiUpdatesManager.addChannelState(-peerId, (historyResult as MessagesMessages.messagesChannelMessages).pts);
}

Loading…
Cancel
Save