Browse Source

Scroll next user avatars in media viewer

Don't save chat position if scrolled down
master
Eduard Kuzmenko 4 years ago
parent
commit
29b358c27e
  1. 4
      src/components/appMediaViewer.ts
  2. 14
      src/components/avatar.ts
  3. 4
      src/components/sidebarRight/tabs/sharedMedia.ts
  4. 18
      src/lib/appManagers/appImManager.ts

4
src/components/appMediaViewer.ts

@ -1546,13 +1546,13 @@ export class AppMediaViewerAvatar extends AppMediaViewerBase<'', 'delete', AppMe @@ -1546,13 +1546,13 @@ export class AppMediaViewerAvatar extends AppMediaViewerBase<'', 'delete', AppMe
return this.loadMediaPromiseDown = promise;
};
public async openMedia(photoId: string, target?: HTMLElement, fromRight = 0) {
public async openMedia(photoId: string, target?: HTMLElement, fromRight = 0, prevTargets?: AppMediaViewerAvatarTargetType[], nextTargets?: AppMediaViewerAvatarTargetType[]) {
if(this.setMoverPromise) return this.setMoverPromise;
const photo = appPhotosManager.getPhoto(photoId);
this.currentPhotoId = photo.id;
return super._openMedia(photo, photo.date, this.peerId, fromRight, target, false);
return super._openMedia(photo, photo.date, this.peerId, fromRight, target, false, prevTargets, nextTargets);
}
}

14
src/components/avatar.ts

@ -11,6 +11,7 @@ import { attachClickEvent, cancelEvent } from "../helpers/dom"; @@ -11,6 +11,7 @@ import { attachClickEvent, cancelEvent } from "../helpers/dom";
import AppMediaViewer, { AppMediaViewerAvatar } from "./appMediaViewer";
import { Message, Photo } from "../layer";
import appPeersManager from "../lib/appManagers/appPeersManager";
import appPhotosManager from "../lib/appManagers/appPhotosManager";
//import type { LazyLoadQueueIntersector } from "./lazyLoadQueue";
const onAvatarUpdate = (peerId: number) => {
@ -25,7 +26,7 @@ rootScope.on('avatar_update', onAvatarUpdate); @@ -25,7 +26,7 @@ rootScope.on('avatar_update', onAvatarUpdate);
rootScope.on('peer_title_edit', onAvatarUpdate);
export async function openAvatarViewer(target: HTMLElement, peerId: number, middleware: () => boolean, message?: any, prevTargets?: {element: HTMLElement, item: string | Message.messageService}[], nextTargets?: typeof prevTargets) {
const photo = await appProfileManager.getFullPhoto(peerId);
let photo = await appProfileManager.getFullPhoto(peerId);
if(!middleware() || !photo) {
return;
}
@ -84,7 +85,16 @@ export async function openAvatarViewer(target: HTMLElement, peerId: number, midd @@ -84,7 +85,16 @@ export async function openAvatarViewer(target: HTMLElement, peerId: number, midd
}
if(photo) {
new AppMediaViewerAvatar(peerId).openMedia(photo.id, getTarget());
if(typeof(message) === 'string') {
photo = appPhotosManager.getPhoto(message);
}
const f = (arr: typeof prevTargets) => arr.map(el => ({
element: el.element,
photoId: el.item as string
}));
new AppMediaViewerAvatar(peerId).openMedia(photo.id, getTarget(), undefined, prevTargets ? f(prevTargets) : undefined, nextTargets ? f(nextTargets) : undefined);
}
}

4
src/components/sidebarRight/tabs/sharedMedia.ts

@ -1090,8 +1090,8 @@ export default class AppSharedMediaTab extends SliderSuperTab { @@ -1090,8 +1090,8 @@ export default class AppSharedMediaTab extends SliderSuperTab {
}
}
public loadSidebarMedia(single: boolean) {
this.searchSuper.load(single);
public loadSidebarMedia(single: boolean, justLoad = false) {
this.searchSuper.load(single, justLoad);
}
onOpenAfterTimeout() {

18
src/lib/appManagers/appImManager.ts

@ -249,12 +249,20 @@ export class AppImManager { @@ -249,12 +249,20 @@ export class AppImManager {
const key = chat.peerId + (chat.threadId ? '_' + chat.threadId : '');
const chatPositions = sessionStorage.getFromCache('chatPositions');
chatPositions[key] = {
mids: getObjectKeysAndSort(chat.bubbles.bubbles, 'desc'),
top
} as ChatSavedPosition;
if(!(chat.bubbles.scrollable.getDistanceToEnd() <= 16 && chat.bubbles.scrollable.loadedAll.bottom)) {
const position = {
mids: getObjectKeysAndSort(chat.bubbles.bubbles, 'desc'),
top
};
this.log('saved chat position:', chatPositions[key]);
chatPositions[key] = position;
this.log('saved chat position:', position);
} else {
delete chatPositions[key];
this.log('deleted chat position');
}
sessionStorage.set({chatPositions}, true);
//}

Loading…
Cancel
Save