Telegram Web K with changes to work inside I2P https://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

92 lines
2.4 KiB

/*
* 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;
}
}