93 lines
2.4 KiB
TypeScript
93 lines
2.4 KiB
TypeScript
/*
|
|
* https://github.com/morethanwords/tweb
|
|
* Copyright (C) 2019-2021 Eduard Kuzmenko
|
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE
|
|
*/
|
|
|
|
import AvatarListLoader from '../helpers/avatarListLoader';
|
|
import {Photo} from '../layer';
|
|
import appDownloadManager from '../lib/appManagers/appDownloadManager';
|
|
import appImManager from '../lib/appManagers/appImManager';
|
|
import rootScope from '../lib/rootScope';
|
|
import AppMediaViewerBase from './appMediaViewerBase';
|
|
|
|
type AppMediaViewerAvatarTargetType = {element: HTMLElement, photoId: Photo.photo['id'], photo?: Photo.photo};
|
|
export default class AppMediaViewerAvatar extends AppMediaViewerBase<'', 'delete', AppMediaViewerAvatarTargetType> {
|
|
public peerId: PeerId;
|
|
|
|
constructor(peerId: PeerId) {
|
|
super(new AvatarListLoader({peerId, managers: rootScope.managers}), [/* 'delete' */]);
|
|
|
|
this.peerId = peerId;
|
|
|
|
this.setBtnMenuToggle([{
|
|
icon: 'download',
|
|
text: 'MediaViewer.Context.Download',
|
|
onClick: this.onDownloadClick
|
|
}/* , {
|
|
icon: 'delete danger btn-disabled',
|
|
text: 'Delete',
|
|
onClick: () => {}
|
|
} */]);
|
|
|
|
// * constructing html end
|
|
|
|
this.setListeners();
|
|
}
|
|
|
|
onPrevClick = (target: AppMediaViewerAvatarTargetType) => {
|
|
this.openMedia({
|
|
photoId: target.photoId,
|
|
target: target.element,
|
|
fromRight: -1
|
|
});
|
|
};
|
|
|
|
onNextClick = (target: AppMediaViewerAvatarTargetType) => {
|
|
this.openMedia({
|
|
photoId: target.photoId,
|
|
target: target.element,
|
|
fromRight: 1
|
|
});
|
|
};
|
|
|
|
onDownloadClick = () => {
|
|
appDownloadManager.downloadToDisc({
|
|
media: this.target.photo,
|
|
queueId: appImManager.chat.bubbles.lazyLoadQueue.queueId
|
|
});
|
|
};
|
|
|
|
public async openMedia({
|
|
photoId,
|
|
target,
|
|
fromRight = 0,
|
|
prevTargets,
|
|
nextTargets
|
|
}: {
|
|
photoId: Photo.photo['id'],
|
|
target?: HTMLElement,
|
|
fromRight?: number,
|
|
prevTargets?: AppMediaViewerAvatarTargetType[],
|
|
nextTargets?: AppMediaViewerAvatarTargetType[]
|
|
}) {
|
|
if(this.setMoverPromise) return this.setMoverPromise;
|
|
|
|
const photo = await this.managers.appPhotosManager.getPhoto(photoId);
|
|
const ret = super._openMedia({
|
|
media: photo,
|
|
timestamp: photo.date,
|
|
fromId: this.peerId,
|
|
fromRight,
|
|
target,
|
|
reverse: false,
|
|
prevTargets,
|
|
nextTargets
|
|
});
|
|
this.target.photoId = photo.id;
|
|
this.target.photo = photo;
|
|
|
|
return ret;
|
|
}
|
|
}
|