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