mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various UI fixes
This commit is contained in:
parent
924be77a87
commit
d91ec1bac7
@ -1,4 +1,5 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
import UIKit
|
||||||
import Postbox
|
import Postbox
|
||||||
import SwiftSignalKit
|
import SwiftSignalKit
|
||||||
import TelegramCore
|
import TelegramCore
|
||||||
@ -18,9 +19,9 @@ public final class GalleryControllerActionInteraction {
|
|||||||
public let openBotCommand: (String) -> Void
|
public let openBotCommand: (String) -> Void
|
||||||
public let addContact: (String) -> Void
|
public let addContact: (String) -> Void
|
||||||
public let storeMediaPlaybackState: (MessageId, Double?) -> Void
|
public let storeMediaPlaybackState: (MessageId, Double?) -> Void
|
||||||
public let editMedia: (MessageId) -> Void
|
public let editMedia: (MessageId, [UIView], @escaping () -> Void) -> Void
|
||||||
|
|
||||||
public init(openUrl: @escaping (String, Bool) -> Void, openUrlIn: @escaping (String) -> Void, openPeerMention: @escaping (String) -> Void, openPeer: @escaping (PeerId) -> Void, openHashtag: @escaping (String?, String) -> Void, openBotCommand: @escaping (String) -> Void, addContact: @escaping (String) -> Void, storeMediaPlaybackState: @escaping (MessageId, Double?) -> Void, editMedia: @escaping (MessageId) -> Void) {
|
public init(openUrl: @escaping (String, Bool) -> Void, openUrlIn: @escaping (String) -> Void, openPeerMention: @escaping (String) -> Void, openPeer: @escaping (PeerId) -> Void, openHashtag: @escaping (String?, String) -> Void, openBotCommand: @escaping (String) -> Void, addContact: @escaping (String) -> Void, storeMediaPlaybackState: @escaping (MessageId, Double?) -> Void, editMedia: @escaping (MessageId, [UIView], @escaping () -> Void) -> Void) {
|
||||||
self.openUrl = openUrl
|
self.openUrl = openUrl
|
||||||
self.openUrlIn = openUrlIn
|
self.openUrlIn = openUrlIn
|
||||||
self.openPeerMention = openPeerMention
|
self.openPeerMention = openPeerMention
|
||||||
|
@ -913,8 +913,19 @@ public class GalleryController: ViewController, StandalonePresentableController
|
|||||||
}
|
}
|
||||||
}, editMedia: { [weak self] messageId in
|
}, editMedia: { [weak self] messageId in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
strongSelf.dismiss(forceAway: true)
|
var snapshots: [UIView] = []
|
||||||
strongSelf.actionInteraction?.editMedia(messageId)
|
if let navigationBar = strongSelf.navigationBar, let snapshotView = navigationBar.view.snapshotContentTree() {
|
||||||
|
snapshotView.frame = navigationBar.frame
|
||||||
|
snapshots.append(snapshotView)
|
||||||
|
}
|
||||||
|
if let snapshotView = strongSelf.galleryNode.footerNode.view.snapshotContentTree() {
|
||||||
|
snapshotView.frame = strongSelf.galleryNode.footerNode.frame
|
||||||
|
snapshots.append(snapshotView)
|
||||||
|
}
|
||||||
|
|
||||||
|
strongSelf.actionInteraction?.editMedia(messageId, snapshots, { [weak self] in
|
||||||
|
self?.dismiss(forceAway: true)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
self.displayNode = GalleryControllerNode(controllerInteraction: controllerInteraction)
|
self.displayNode = GalleryControllerNode(controllerInteraction: controllerInteraction)
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
- (void)setAllInterfaceHidden:(bool)hidden delay:(NSTimeInterval)__unused delay animated:(bool)animated;
|
- (void)setAllInterfaceHidden:(bool)hidden delay:(NSTimeInterval)__unused delay animated:(bool)animated;
|
||||||
- (void)setToolbarsHidden:(bool)hidden animated:(bool)animated;
|
- (void)setToolbarsHidden:(bool)hidden animated:(bool)animated;
|
||||||
|
|
||||||
|
- (void)immediateEditorTransitionIn;
|
||||||
- (void)editorTransitionIn;
|
- (void)editorTransitionIn;
|
||||||
- (void)editorTransitionOut;
|
- (void)editorTransitionOut;
|
||||||
|
|
||||||
|
@ -51,5 +51,6 @@
|
|||||||
- (instancetype)initWithContext:(id<LegacyComponentsContext>)context items:(NSArray *)items focusItem:(id<TGModernGalleryItem>)focusItem selectionContext:(TGMediaSelectionContext *)selectionContext editingContext:(TGMediaEditingContext *)editingContext hasCaptions:(bool)hasCaptions allowCaptionEntities:(bool)allowCaptionEntities hasTimer:(bool)hasTimer onlyCrop:(bool)onlyCrop inhibitDocumentCaptions:(bool)inhibitDocumentCaptions hasSelectionPanel:(bool)hasSelectionPanel hasCamera:(bool)hasCamera recipientName:(NSString *)recipientName;
|
- (instancetype)initWithContext:(id<LegacyComponentsContext>)context items:(NSArray *)items focusItem:(id<TGModernGalleryItem>)focusItem selectionContext:(TGMediaSelectionContext *)selectionContext editingContext:(TGMediaEditingContext *)editingContext hasCaptions:(bool)hasCaptions allowCaptionEntities:(bool)allowCaptionEntities hasTimer:(bool)hasTimer onlyCrop:(bool)onlyCrop inhibitDocumentCaptions:(bool)inhibitDocumentCaptions hasSelectionPanel:(bool)hasSelectionPanel hasCamera:(bool)hasCamera recipientName:(NSString *)recipientName;
|
||||||
|
|
||||||
- (void)presentPhotoEditorForItem:(id<TGModernGalleryEditableItem>)item tab:(TGPhotoEditorTab)tab;
|
- (void)presentPhotoEditorForItem:(id<TGModernGalleryEditableItem>)item tab:(TGPhotoEditorTab)tab;
|
||||||
|
- (void)presentPhotoEditorForItem:(id<TGModernGalleryEditableItem>)item tab:(TGPhotoEditorTab)tab snapshots:(NSArray *)snapshots;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
|
|
||||||
+ (void)presentWithContext:(id<LegacyComponentsContext>)context parentController:(TGViewController *)parentController image:(UIImage *)image video:(NSURL *)video didFinishWithImage:(void (^)(UIImage *image))didFinishWithImage didFinishWithVideo:(void (^)(UIImage *image, NSURL *url, TGVideoEditAdjustments *adjustments))didFinishWithVideo dismissed:(void (^)(void))dismissed;
|
+ (void)presentWithContext:(id<LegacyComponentsContext>)context parentController:(TGViewController *)parentController image:(UIImage *)image video:(NSURL *)video didFinishWithImage:(void (^)(UIImage *image))didFinishWithImage didFinishWithVideo:(void (^)(UIImage *image, NSURL *url, TGVideoEditAdjustments *adjustments))didFinishWithVideo dismissed:(void (^)(void))dismissed;
|
||||||
|
|
||||||
+ (void)presentWithContext:(id<LegacyComponentsContext>)context controller:(TGViewController *)controller caption:(NSString *)caption entities:(NSArray *)entities withItem:(id<TGMediaEditableItem, TGMediaSelectableItem>)item paint:(bool)paint recipientName:(NSString *)recipientName stickersContext:(id<TGPhotoPaintStickersContext>)stickersContext completion:(void (^)(id<TGMediaEditableItem>, TGMediaEditingContext *))completion dismissed:(void (^)())dismissed;
|
+ (void)presentWithContext:(id<LegacyComponentsContext>)context controller:(TGViewController *)controller caption:(NSString *)caption entities:(NSArray *)entities withItem:(id<TGMediaEditableItem, TGMediaSelectableItem>)item paint:(bool)paint recipientName:(NSString *)recipientName stickersContext:(id<TGPhotoPaintStickersContext>)stickersContext snapshots:(NSArray *)snapshots immediate:(bool)immediate appeared:(void (^)(void))appeared completion:(void (^)(id<TGMediaEditableItem>, TGMediaEditingContext *))completion dismissed:(void (^)())dismissed;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -1307,6 +1307,22 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)immediateEditorTransitionIn {
|
||||||
|
[self setSelectionInterfaceHidden:true animated:false];
|
||||||
|
_captionMixin.inputPanel.alpha = 0.0f;
|
||||||
|
_portraitToolbarView.doneButton.alpha = 0.0f;
|
||||||
|
_landscapeToolbarView.doneButton.alpha = 0.0f;
|
||||||
|
|
||||||
|
_portraitToolbarView.hidden = true;
|
||||||
|
_landscapeToolbarView.hidden = true;
|
||||||
|
|
||||||
|
TGDispatchAfter(0.5, dispatch_get_main_queue(), ^
|
||||||
|
{
|
||||||
|
_portraitToolbarView.hidden = false;
|
||||||
|
_landscapeToolbarView.hidden = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
- (void)editorTransitionIn
|
- (void)editorTransitionIn
|
||||||
{
|
{
|
||||||
[self setSelectionInterfaceHidden:true animated:true];
|
[self setSelectionInterfaceHidden:true animated:true];
|
||||||
|
@ -344,6 +344,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)presentPhotoEditorForItem:(id<TGModernGalleryEditableItem>)item tab:(TGPhotoEditorTab)tab
|
- (void)presentPhotoEditorForItem:(id<TGModernGalleryEditableItem>)item tab:(TGPhotoEditorTab)tab
|
||||||
|
{
|
||||||
|
[self presentPhotoEditorForItem:item tab:tab snapshots:@[]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)presentPhotoEditorForItem:(id<TGModernGalleryEditableItem>)item tab:(TGPhotoEditorTab)tab snapshots:(NSArray *)snapshots
|
||||||
{
|
{
|
||||||
__weak TGMediaPickerGalleryModel *weakSelf = self;
|
__weak TGMediaPickerGalleryModel *weakSelf = self;
|
||||||
|
|
||||||
@ -604,6 +609,15 @@
|
|||||||
|
|
||||||
[self.controller addChildViewController:controller];
|
[self.controller addChildViewController:controller];
|
||||||
[self.controller.view addSubview:controller.view];
|
[self.controller.view addSubview:controller.view];
|
||||||
|
|
||||||
|
for (UIView *view in snapshots) {
|
||||||
|
[self.controller.view addSubview:view];
|
||||||
|
[UIView animateWithDuration:0.3 animations:^{
|
||||||
|
view.alpha = 0.0;
|
||||||
|
} completion:^(__unused BOOL finished) {
|
||||||
|
[view removeFromSuperview];
|
||||||
|
}];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)_replaceItems:(NSArray *)items focusingOnItem:(id<TGModernGalleryItem>)item
|
- (void)_replaceItems:(NSArray *)items focusingOnItem:(id<TGModernGalleryItem>)item
|
||||||
|
@ -102,7 +102,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void)presentWithContext:(id<LegacyComponentsContext>)context controller:(TGViewController *)controller caption:(NSString *)caption entities:(NSArray *)entities withItem:(id<TGMediaEditableItem, TGMediaSelectableItem>)item paint:(bool)paint recipientName:(NSString *)recipientName stickersContext:(id<TGPhotoPaintStickersContext>)stickersContext completion:(void (^)(id<TGMediaEditableItem>, TGMediaEditingContext *))completion dismissed:(void (^)())dismissed
|
+ (void)presentWithContext:(id<LegacyComponentsContext>)context controller:(TGViewController *)controller caption:(NSString *)caption entities:(NSArray *)entities withItem:(id<TGMediaEditableItem, TGMediaSelectableItem>)item paint:(bool)paint recipientName:(NSString *)recipientName stickersContext:(id<TGPhotoPaintStickersContext>)stickersContext snapshots:(NSArray *)snapshots immediate:(bool)immediate appeared:(void (^)(void))appeared completion:(void (^)(id<TGMediaEditableItem>, TGMediaEditingContext *))completion dismissed:(void (^)())dismissed
|
||||||
{
|
{
|
||||||
id<LegacyComponentsOverlayWindowManager> windowManager = [context makeOverlayWindowManager];
|
id<LegacyComponentsOverlayWindowManager> windowManager = [context makeOverlayWindowManager];
|
||||||
id<LegacyComponentsContext> windowContext = [windowManager context];
|
id<LegacyComponentsContext> windowContext = [windowManager context];
|
||||||
@ -112,6 +112,10 @@
|
|||||||
|
|
||||||
TGModernGalleryController *galleryController = [[TGModernGalleryController alloc] initWithContext:windowContext];
|
TGModernGalleryController *galleryController = [[TGModernGalleryController alloc] initWithContext:windowContext];
|
||||||
galleryController.adjustsStatusBarVisibility = true;
|
galleryController.adjustsStatusBarVisibility = true;
|
||||||
|
galleryController.animateTransition = !immediate;
|
||||||
|
galleryController.finishedTransitionIn = ^(id<TGModernGalleryItem> item, TGModernGalleryItemView *itemView) {
|
||||||
|
appeared();
|
||||||
|
};
|
||||||
//galleryController.hasFadeOutTransition = true;
|
//galleryController.hasFadeOutTransition = true;
|
||||||
|
|
||||||
id<TGModernGalleryEditableItem> galleryItem = nil;
|
id<TGModernGalleryEditableItem> galleryItem = nil;
|
||||||
@ -200,13 +204,19 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
[model.interfaceView immediateEditorTransitionIn];
|
||||||
|
|
||||||
|
for (UIView *view in snapshots) {
|
||||||
|
[galleryController.view addSubview:view];
|
||||||
|
}
|
||||||
|
|
||||||
TGOverlayControllerWindow *controllerWindow = [[TGOverlayControllerWindow alloc] initWithManager:windowManager parentController:controller contentController:galleryController];
|
TGOverlayControllerWindow *controllerWindow = [[TGOverlayControllerWindow alloc] initWithManager:windowManager parentController:controller contentController:galleryController];
|
||||||
controllerWindow.hidden = false;
|
controllerWindow.hidden = false;
|
||||||
galleryController.view.clipsToBounds = true;
|
galleryController.view.clipsToBounds = true;
|
||||||
|
|
||||||
if (paint) {
|
if (paint) {
|
||||||
TGDispatchAfter(0.05, dispatch_get_main_queue(), ^{
|
TGDispatchAfter(0.05, dispatch_get_main_queue(), ^{
|
||||||
[model presentPhotoEditorForItem:galleryItem tab:TGPhotoEditorPaintTab];
|
[model presentPhotoEditorForItem:galleryItem tab:TGPhotoEditorPaintTab snapshots:snapshots];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ public enum LegacyAttachmentMenuMediaEditing {
|
|||||||
case file
|
case file
|
||||||
}
|
}
|
||||||
|
|
||||||
public func legacyMediaEditor(context: AccountContext, peer: Peer, media: AnyMediaReference, initialCaption: String, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> TGPhotoPaintStickersScreen?, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32) -> Void, present: @escaping (ViewController, Any?) -> Void) {
|
public func legacyMediaEditor(context: AccountContext, peer: Peer, media: AnyMediaReference, initialCaption: String, snapshots: [UIView], transitionCompletion: (() -> Void)?, presentStickers: @escaping (@escaping (TelegramMediaFile, Bool, UIView, CGRect) -> Void) -> TGPhotoPaintStickersScreen?, sendMessagesWithSignals: @escaping ([Any]?, Bool, Int32) -> Void, present: @escaping (ViewController, Any?) -> Void) {
|
||||||
let _ = (fetchMediaData(context: context, postbox: context.account.postbox, mediaReference: media)
|
let _ = (fetchMediaData(context: context, postbox: context.account.postbox, mediaReference: media)
|
||||||
|> deliverOnMainQueue).start(next: { (value, isImage) in
|
|> deliverOnMainQueue).start(next: { (value, isImage) in
|
||||||
guard case let .data(data) = value, data.complete else {
|
guard case let .data(data) = value, data.complete else {
|
||||||
@ -103,8 +103,9 @@ public func legacyMediaEditor(context: AccountContext, peer: Peer, media: AnyMed
|
|||||||
|
|
||||||
present(legacyController, nil)
|
present(legacyController, nil)
|
||||||
|
|
||||||
TGPhotoVideoEditor.present(with: legacyController.context, controller: emptyController, caption: initialCaption, entities: [], withItem: item, paint: true, recipientName: recipientName, stickersContext: paintStickersContext, completion: { result, editingContext in
|
TGPhotoVideoEditor.present(with: legacyController.context, controller: emptyController, caption: initialCaption, entities: [], withItem: item, paint: true, recipientName: recipientName, stickersContext: paintStickersContext, snapshots: snapshots as? [Any], immediate: transitionCompletion != nil, appeared: {
|
||||||
let intent: TGMediaAssetsControllerIntent = TGMediaAssetsControllerSendMediaIntent
|
transitionCompletion?()
|
||||||
|
}, completion: { result, editingContext in
|
||||||
let signals = TGCameraController.resultSignals(for: nil, editingContext: editingContext, currentItem: result as! TGMediaSelectableItem, storeAssets: false, saveEditedPhotos: false, descriptionGenerator: legacyAssetPickerItemGenerator())
|
let signals = TGCameraController.resultSignals(for: nil, editingContext: editingContext, currentItem: result as! TGMediaSelectableItem, storeAssets: false, saveEditedPhotos: false, descriptionGenerator: legacyAssetPickerItemGenerator())
|
||||||
sendMessagesWithSignals(signals, false, 0)
|
sendMessagesWithSignals(signals, false, 0)
|
||||||
}, dismissed: { [weak legacyController] in
|
}, dismissed: { [weak legacyController] in
|
||||||
@ -294,14 +295,6 @@ public func legacyAttachmentMenu(context: AccountContext, peer: Peer, chatLocati
|
|||||||
navigationController.setNavigationBarHidden(true, animated: false)
|
navigationController.setNavigationBarHidden(true, animated: false)
|
||||||
legacyController.bind(controller: navigationController)
|
legacyController.bind(controller: navigationController)
|
||||||
|
|
||||||
var hasTimer = false
|
|
||||||
var hasSilentPosting = false
|
|
||||||
if peer.id != context.account.peerId {
|
|
||||||
if peer is TelegramUser {
|
|
||||||
hasTimer = true
|
|
||||||
}
|
|
||||||
hasSilentPosting = true
|
|
||||||
}
|
|
||||||
let recipientName = peer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
let recipientName = peer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder)
|
||||||
|
|
||||||
legacyController.enableSizeClassSignal = true
|
legacyController.enableSizeClassSignal = true
|
||||||
@ -315,8 +308,8 @@ public func legacyAttachmentMenu(context: AccountContext, peer: Peer, chatLocati
|
|||||||
|
|
||||||
present(legacyController, nil)
|
present(legacyController, nil)
|
||||||
|
|
||||||
TGPhotoVideoEditor.present(with: legacyController.context, controller: emptyController, caption: "", entities: [], withItem: item, paint: false, recipientName: recipientName, stickersContext: paintStickersContext, completion: { result, editingContext in
|
TGPhotoVideoEditor.present(with: legacyController.context, controller: emptyController, caption: "", entities: [], withItem: item, paint: false, recipientName: recipientName, stickersContext: paintStickersContext, snapshots: [], immediate: false, appeared: {
|
||||||
let intent: TGMediaAssetsControllerIntent = TGMediaAssetsControllerSendMediaIntent
|
}, completion: { result, editingContext in
|
||||||
let signals = TGCameraController.resultSignals(for: nil, editingContext: editingContext, currentItem: result as! TGMediaSelectableItem, storeAssets: false, saveEditedPhotos: false, descriptionGenerator: legacyAssetPickerItemGenerator())
|
let signals = TGCameraController.resultSignals(for: nil, editingContext: editingContext, currentItem: result as! TGMediaSelectableItem, storeAssets: false, saveEditedPhotos: false, descriptionGenerator: legacyAssetPickerItemGenerator())
|
||||||
sendMessagesWithSignals(signals, false, 0)
|
sendMessagesWithSignals(signals, false, 0)
|
||||||
}, dismissed: { [weak legacyController] in
|
}, dismissed: { [weak legacyController] in
|
||||||
|
@ -688,7 +688,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
storedState = MediaPlaybackStoredState(timestamp: timestamp, playbackRate: .x1)
|
storedState = MediaPlaybackStoredState(timestamp: timestamp, playbackRate: .x1)
|
||||||
}
|
}
|
||||||
let _ = updateMediaPlaybackStoredStateInteractively(postbox: strongSelf.context.account.postbox, messageId: messageId, state: storedState).start()
|
let _ = updateMediaPlaybackStoredStateInteractively(postbox: strongSelf.context.account.postbox, messageId: messageId, state: storedState).start()
|
||||||
}, editMedia: { [weak self] messageId in
|
}, editMedia: { [weak self] messageId, snapshots, transitionCompletion in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -708,7 +708,9 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let mediaReference = mediaReference, let peer = message.peers[message.id.peerId] {
|
if let mediaReference = mediaReference, let peer = message.peers[message.id.peerId] {
|
||||||
legacyMediaEditor(context: strongSelf.context, peer: peer, media: mediaReference, initialCaption: message.text, presentStickers: { [weak self] completion in
|
legacyMediaEditor(context: strongSelf.context, peer: peer, media: mediaReference, initialCaption: message.text, snapshots: snapshots, transitionCompletion: {
|
||||||
|
transitionCompletion()
|
||||||
|
}, presentStickers: { [weak self] completion in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||||
completion(fileReference.media, fileReference.media.isAnimatedSticker, node.view, rect)
|
completion(fileReference.media, fileReference.media.isAnimatedSticker, node.view, rect)
|
||||||
@ -2377,7 +2379,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let mediaReference = mediaReference, let peer = message.peers[message.id.peerId] {
|
if let mediaReference = mediaReference, let peer = message.peers[message.id.peerId] {
|
||||||
legacyMediaEditor(context: strongSelf.context, peer: peer, media: mediaReference, initialCaption: message.text, presentStickers: { [weak self] completion in
|
legacyMediaEditor(context: strongSelf.context, peer: peer, media: mediaReference, initialCaption: message.text, snapshots: [], transitionCompletion: nil, presentStickers: { [weak self] completion in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
let controller = DrawingStickersScreen(context: strongSelf.context, selectSticker: { fileReference, node, rect in
|
||||||
completion(fileReference.media, fileReference.media.isAnimatedSticker, node.view, rect)
|
completion(fileReference.media, fileReference.media.isAnimatedSticker, node.view, rect)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user