From 55b0df2ff7847a62b2d6ae24046e67d677d84576 Mon Sep 17 00:00:00 2001 From: Peter <> Date: Sun, 11 Aug 2019 03:56:10 +0300 Subject: [PATCH] Refactor TelegramNotices, TelegramPermissions, PhotoResources, ImageTransparency, TinyThumbnail --- .../contents.xcworkspacedata | 37 +- .../project.pbxproj | 4 + .../Sources}/PresentationSurfaceLevels.swift | 0 .../project.pbxproj | 555 ++++++++++++++++ submodules/ImageTransparency/Info.plist | 22 + .../Sources/ImageTransparency.h | 19 + .../Sources}/ImageTransparency.swift | 5 +- .../project.pbxproj | 8 + .../Sources}/MapResources.swift | 2 +- .../MergeLists/Sources/MergeLists.swift | 2 + submodules/PhotoResources/Info.plist | 22 + .../project.pbxproj | 607 ++++++++++++++++++ .../Sources/FrameworkBundle.swift | 13 + .../PhotoResources/Sources/PhotoResources.h | 19 + .../Sources}/PhotoResources.swift | 67 +- .../Sources}/CallController.swift | 8 +- .../Sources}/CallControllerButton.swift | 0 .../Sources}/CallControllerButtonsNode.swift | 0 .../CallControllerKeyPreviewNode.swift | 0 .../Sources}/CallControllerNode.swift | 9 +- .../Sources}/CallControllerStatusNode.swift | 0 .../Sources}/CallDebugNode.swift | 0 .../Sources}/CallFeedbackController.swift | 0 .../Sources}/CallRatingController.swift | 2 +- .../Sources}/CallRouteActionSheetItem.swift | 0 .../Sources}/CallSuggestTabController.swift | 0 .../TelegramCallsUI/Sources/CallsEmoji.h | 8 + .../TelegramCallsUI/Sources/CallsEmoji.m | 28 + .../Sources/FrameworkBundle.swift | 13 + .../TelegramCallsUI/Sources/TelegramCallsUI.h | 2 +- .../project.pbxproj | 66 +- submodules/TelegramNotices/Info.plist | 22 + .../Sources}/Notices.swift | 129 ++-- .../TelegramNotices/Sources/TelegramNotices.h | 19 + .../project.pbxproj | 555 ++++++++++++++++ submodules/TelegramPermissions/Info.plist | 22 + .../Sources}/Permission.swift | 4 +- .../Sources/TelegramPermissions.h | 19 + .../project.pbxproj | 563 ++++++++++++++++ .../TelegramUI/ApplicationContext.swift | 2 + .../BotCheckoutControllerNode.swift | 1 + .../TelegramUI/BotCheckoutHeaderItem.swift | 1 + .../TelegramUI/CallListControllerNode.swift | 1 + .../ChannelVisibilityController.swift | 1 + .../ChatBubbleVideoDecoration.swift | 1 + .../ChatContextResultPeekContentNode.swift | 1 + .../TelegramUI/ChatController.swift | 2 + .../TelegramUI/ChatControllerNode.swift | 1 + .../TelegramUI/ChatImageGalleryItem.swift | 1 + .../TelegramUI/ChatLinkPreview.swift | 1 + .../TelegramUI/ChatListController.swift | 1 + .../TelegramUI/TelegramUI/ChatListItem.swift | 1 + .../TelegramUI/TelegramUI/ChatListNode.swift | 1 + .../ChatMessageActionItemNode.swift | 1 + .../ChatMessageAttachedContentNode.swift | 1 + .../ChatMessageInteractiveFileNode.swift | 1 + ...atMessageInteractiveInstantVideoNode.swift | 1 + .../ChatMessageInteractiveMediaNode.swift | 1 + .../ChatMessageMapBubbleContentNode.swift | 2 + .../ChatMessageNotificationItem.swift | 1 + .../TelegramUI/ChatMessageReplyInfoNode.swift | 1 + .../ChatPinnedMessageTitlePanelNode.swift | 1 + .../TelegramUI/ChatTextInputPanelNode.swift | 1 + .../TelegramUI/ContactListNode.swift | 2 + .../TelegramUI/ContactsController.swift | 2 + .../TelegramUI/CreateGroupController.swift | 2 + .../DataPrivacySettingsController.swift | 1 + .../TelegramUI/DeclareEncodables.swift | 1 + .../DeviceContactInfoController.swift | 2 + .../TelegramUI/EditAccessoryPanelNode.swift | 1 + .../FetchCachedRepresentations.swift | 1 + .../TelegramUI/GalleryVideoDecoration.swift | 1 + .../TelegramUI/GridMessageItem.swift | 1 + .../TelegramUI/GroupInfoController.swift | 2 + ...ListContextResultsChatInputPanelItem.swift | 1 + .../TelegramUI/ImageCompression.swift | 31 - .../TelegramUI/InChatPrefetchManager.swift | 1 + .../TelegramUI/InstantImageGalleryItem.swift | 1 + .../TelegramUI/InstantPageArticleNode.swift | 1 + .../TelegramUI/InstantPageImageNode.swift | 2 + .../TelegramUI/LegacyPreferencesImport.swift | 1 + .../TelegramUI/LegacyWebSearchGallery.swift | 1 + .../TelegramUI/ListMessageFileItemNode.swift | 1 + .../ListMessageSnippetItemNode.swift | 1 + .../TelegramUI/NativeVideoContent.swift | 1 + .../NotificationContentContext.swift | 1 + .../TelegramUI/NotificationsAndSounds.swift | 1 + .../OpenInActionSheetController.swift | 1 + .../OverlayPlayerControlsNode.swift | 1 + .../PeerAvatarImageGalleryItem.swift | 1 + .../TelegramUI/PermissionContentNode.swift | 1 + .../TelegramUI/PermissionControllerNode.swift | 1 + .../TelegramUI/PermissionSplitTest.swift | 1 + .../TelegramUI/PlatformVideoContent.swift | 1 + .../TelegramUI/PrefetchManager.swift | 1 + .../PrivacyAndSecurityController.swift | 1 + .../TelegramUI/ReplyAccessoryPanelNode.swift | 1 + .../TelegramUI/SecretChatKeyVisualization.h | 1 - .../TelegramUI/SecretChatKeyVisualization.m | 26 - .../SecureIdDocumentImageGalleryItem.swift | 1 + .../SecureIdValueFormFileItem.swift | 1 + .../TelegramUI/SettingsController.swift | 1 + .../TelegramUI/SharedAccountContext.swift | 2 +- .../SoftwareVideoThumbnailLayer.swift | 1 + .../TelegramUI/SuppressContactsWarning.swift | 1 + .../TelegramUI/SystemVideoContent.swift | 1 + .../TelegramAccountAuxiliaryMethods.swift | 1 + .../TelegramUI/ThemeGridSearchItem.swift | 1 + .../TransformOutgoingMessageMedia.swift | 1 + .../TelegramUI/UserInfoController.swift | 1 + ...ListContextResultsChatInputPanelItem.swift | 1 + .../TelegramUI/WallpaperGalleryItem.swift | 1 + .../TelegramUI/WallpaperResources.swift | 2 + .../TelegramUI/WatchRequestHandlers.swift | 1 + .../TelegramUI/WebEmbedVideoContent.swift | 1 + .../TelegramUI/TelegramUI/WebSearchItem.swift | 1 + .../project.pbxproj | 88 +-- submodules/TinyThumbnail/Info.plist | 22 + .../TinyThumbnail/Sources/TinyThumbnail.h | 19 + .../TinyThumbnail/Sources/TinyThumbnail.swift | 32 + .../project.pbxproj | 543 ++++++++++++++++ 121 files changed, 3449 insertions(+), 249 deletions(-) rename submodules/{TelegramUI/TelegramUI => AccountContext/Sources}/PresentationSurfaceLevels.swift (100%) create mode 100644 submodules/ImageTransparency/ImageTransparency_Xcode.xcodeproj/project.pbxproj create mode 100644 submodules/ImageTransparency/Info.plist create mode 100644 submodules/ImageTransparency/Sources/ImageTransparency.h rename submodules/{TelegramUI/TelegramUI => ImageTransparency/Sources}/ImageTransparency.swift (97%) rename submodules/{TelegramUI/TelegramUI => MediaResources/Sources}/MapResources.swift (96%) create mode 100644 submodules/PhotoResources/Info.plist create mode 100644 submodules/PhotoResources/PhotoResources_Xcode.xcodeproj/project.pbxproj create mode 100644 submodules/PhotoResources/Sources/FrameworkBundle.swift create mode 100644 submodules/PhotoResources/Sources/PhotoResources.h rename submodules/{TelegramUI/TelegramUI => PhotoResources/Sources}/PhotoResources.swift (96%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallController.swift (97%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallControllerButton.swift (100%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallControllerButtonsNode.swift (100%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallControllerKeyPreviewNode.swift (100%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallControllerNode.swift (99%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallControllerStatusNode.swift (100%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallDebugNode.swift (100%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallFeedbackController.swift (100%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallRatingController.swift (98%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallRouteActionSheetItem.swift (100%) rename submodules/{TelegramUI/TelegramUI => TelegramCallsUI/Sources}/CallSuggestTabController.swift (100%) create mode 100644 submodules/TelegramCallsUI/Sources/CallsEmoji.h create mode 100644 submodules/TelegramCallsUI/Sources/CallsEmoji.m create mode 100644 submodules/TelegramCallsUI/Sources/FrameworkBundle.swift create mode 100644 submodules/TelegramNotices/Info.plist rename submodules/{TelegramUI/TelegramUI => TelegramNotices/Sources}/Notices.swift (78%) create mode 100644 submodules/TelegramNotices/Sources/TelegramNotices.h create mode 100644 submodules/TelegramNotices/TelegramNotices_Xcode.xcodeproj/project.pbxproj create mode 100644 submodules/TelegramPermissions/Info.plist rename submodules/{TelegramUI/TelegramUI => TelegramPermissions/Sources}/Permission.swift (97%) create mode 100644 submodules/TelegramPermissions/Sources/TelegramPermissions.h create mode 100644 submodules/TelegramPermissions/TelegramPermissions_Xcode.xcodeproj/project.pbxproj create mode 100644 submodules/TinyThumbnail/Info.plist create mode 100644 submodules/TinyThumbnail/Sources/TinyThumbnail.h create mode 100644 submodules/TinyThumbnail/Sources/TinyThumbnail.swift create mode 100644 submodules/TinyThumbnail/TinyThumbnail_Xcode.xcodeproj/project.pbxproj diff --git a/Telegram-iOS.xcworkspace/contents.xcworkspacedata b/Telegram-iOS.xcworkspace/contents.xcworkspacedata index 411ff8e0b2..b9ffba4379 100644 --- a/Telegram-iOS.xcworkspace/contents.xcworkspacedata +++ b/Telegram-iOS.xcworkspace/contents.xcworkspacedata @@ -34,12 +34,28 @@ - - + + + + + + + + + + + + + + @@ -104,13 +123,13 @@ location = "container:" name = "Gestures"> + location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/TouchDownGesture/TouchDownGesture_Xcode.xcodeproj"> + location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/SwipeToDismissGesture/SwipeToDismissGesture_Xcode.xcodeproj"> + location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/DirectionalPanGesture/DirectionalPanGesture_Xcode.xcodeproj"> + location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/AlertUI/AlertUI_Xcode.xcodeproj"> @@ -220,10 +239,10 @@ location = "group:submodules/ContextUI/ContextUI_Xcode.xcodeproj"> + location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/ComposePollUI/ComposePollUI_Xcode.xcodeproj"> + location = "group:/Users/peter/build/telegram-temp/telegram-ios/submodules/UndoUI/UndoUI_Xcode.xcodeproj"> + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/ImageTransparency/Sources/ImageTransparency.h b/submodules/ImageTransparency/Sources/ImageTransparency.h new file mode 100644 index 0000000000..074d3cbba7 --- /dev/null +++ b/submodules/ImageTransparency/Sources/ImageTransparency.h @@ -0,0 +1,19 @@ +// +// ImageTransparency.h +// ImageTransparency +// +// Created by Peter on 8/10/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for ImageTransparency. +FOUNDATION_EXPORT double ImageTransparencyVersionNumber; + +//! Project version string for ImageTransparency. +FOUNDATION_EXPORT const unsigned char ImageTransparencyVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramUI/TelegramUI/ImageTransparency.swift b/submodules/ImageTransparency/Sources/ImageTransparency.swift similarity index 97% rename from submodules/TelegramUI/TelegramUI/ImageTransparency.swift rename to submodules/ImageTransparency/Sources/ImageTransparency.swift index 252896e3fb..3c0e71187e 100644 --- a/submodules/TelegramUI/TelegramUI/ImageTransparency.swift +++ b/submodules/ImageTransparency/Sources/ImageTransparency.swift @@ -1,7 +1,6 @@ import UIKit import Accelerate import Display -import TelegramCore private func generateHistogram(cgImage: CGImage) -> ([[vImagePixelCount]], Int)? { var sourceBuffer = vImage_Buffer() @@ -43,7 +42,7 @@ private func generateHistogram(cgImage: CGImage) -> ([[vImagePixelCount]], Int)? return (histogramBins, alphaBinIndex) } -func imageHasTransparency(_ cgImage: CGImage) -> Bool { +public func imageHasTransparency(_ cgImage: CGImage) -> Bool { guard cgImage.bitsPerComponent == 8, cgImage.bitsPerPixel == 32 else { return false } @@ -74,7 +73,7 @@ private func scaledDrawingContext(_ cgImage: CGImage, maxSize: CGSize) -> Drawin return context } -func imageRequiresInversion(_ cgImage: CGImage) -> Bool { +public func imageRequiresInversion(_ cgImage: CGImage) -> Bool { guard cgImage.bitsPerComponent == 8, cgImage.bitsPerPixel == 32 else { return false } diff --git a/submodules/MediaResources/MediaResources_Xcode.xcodeproj/project.pbxproj b/submodules/MediaResources/MediaResources_Xcode.xcodeproj/project.pbxproj index a56a3d3252..a7e656e838 100644 --- a/submodules/MediaResources/MediaResources_Xcode.xcodeproj/project.pbxproj +++ b/submodules/MediaResources/MediaResources_Xcode.xcodeproj/project.pbxproj @@ -13,6 +13,8 @@ D084FA1222F436D6004874CE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D084FA1122F436D6004874CE /* Foundation.framework */; }; D084FA1422F436DA004874CE /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D084FA1322F436DA004874CE /* Postbox.framework */; }; D084FA1622F436DE004874CE /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D084FA1522F436DE004874CE /* SwiftSignalKit.framework */; }; + D0C9C0D322FE3E7500FAB518 /* MapResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C0D222FE3E7500FAB518 /* MapResources.swift */; }; + D0C9C0D522FE3E8200FAB518 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0D422FE3E8200FAB518 /* MapKit.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -24,6 +26,8 @@ D084FA1122F436D6004874CE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; D084FA1322F436DA004874CE /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D084FA1522F436DE004874CE /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0D222FE3E7500FAB518 /* MapResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapResources.swift; sourceTree = ""; }; + D0C9C0D422FE3E8200FAB518 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -31,6 +35,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D0C9C0D522FE3E8200FAB518 /* MapKit.framework in Frameworks */, D084FA1622F436DE004874CE /* SwiftSignalKit.framework in Frameworks */, D084FA1422F436DA004874CE /* Postbox.framework in Frameworks */, D084FA1222F436D6004874CE /* Foundation.framework in Frameworks */, @@ -62,6 +67,7 @@ D084F9FF22F435FD004874CE /* Sources */ = { isa = PBXGroup; children = ( + D0C9C0D222FE3E7500FAB518 /* MapResources.swift */, D084FA0C22F436C9004874CE /* CachedResourceRepresentations.swift */, D084FA0022F435FD004874CE /* MediaResources.h */, ); @@ -71,6 +77,7 @@ D084FA0E22F436D2004874CE /* Frameworks */ = { isa = PBXGroup; children = ( + D0C9C0D422FE3E8200FAB518 /* MapKit.framework */, D084FA1522F436DE004874CE /* SwiftSignalKit.framework */, D084FA1322F436DA004874CE /* Postbox.framework */, D084FA1122F436D6004874CE /* Foundation.framework */, @@ -159,6 +166,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + D0C9C0D322FE3E7500FAB518 /* MapResources.swift in Sources */, D084FA0D22F436C9004874CE /* CachedResourceRepresentations.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/submodules/TelegramUI/TelegramUI/MapResources.swift b/submodules/MediaResources/Sources/MapResources.swift similarity index 96% rename from submodules/TelegramUI/TelegramUI/MapResources.swift rename to submodules/MediaResources/Sources/MapResources.swift index 5806475e29..53ee7e3213 100644 --- a/submodules/TelegramUI/TelegramUI/MapResources.swift +++ b/submodules/MediaResources/Sources/MapResources.swift @@ -84,7 +84,7 @@ private func adjustGMapLatitude(_ latitude: Double, offset: Int, zoom: Int) -> D return yToLatitude(latitudeToY(latitude) + t) } -func fetchMapSnapshotResource(resource: MapSnapshotMediaResource) -> Signal { +public func fetchMapSnapshotResource(resource: MapSnapshotMediaResource) -> Signal { return Signal { subscriber in let disposable = MetaDisposable() diff --git a/submodules/MergeLists/Sources/MergeLists.swift b/submodules/MergeLists/Sources/MergeLists.swift index 04c60ddd0a..f5f5c5bb8e 100644 --- a/submodules/MergeLists/Sources/MergeLists.swift +++ b/submodules/MergeLists/Sources/MergeLists.swift @@ -1,5 +1,6 @@ import Foundation +@inlinable public func mergeListsStableWithUpdates(leftList: [T], rightList: [T], allUpdated: Bool = false) -> ([Int], [(Int, T, Int?)], [(Int, T, Int)]) where T: Comparable, T: Identifiable { var removeIndices: [Int] = [] var insertItems: [(Int, T, Int?)] = [] @@ -180,6 +181,7 @@ public func mergeListsStableWithUpdates(leftList: [T], rightList: [T], allUpd return (removeIndices, insertItems, updatedIndices) } +@inlinable public func mergeListsStableWithUpdatesReversed(leftList: [T], rightList: [T], allUpdated: Bool = false) -> ([Int], [(Int, T, Int?)], [(Int, T, Int)]) where T: Comparable, T: Identifiable { var removeIndices: [Int] = [] var insertItems: [(Int, T, Int?)] = [] diff --git a/submodules/PhotoResources/Info.plist b/submodules/PhotoResources/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/PhotoResources/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/PhotoResources/PhotoResources_Xcode.xcodeproj/project.pbxproj b/submodules/PhotoResources/PhotoResources_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..4714e52419 --- /dev/null +++ b/submodules/PhotoResources/PhotoResources_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,607 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C0A522FE3D6200FAB518 /* PhotoResources.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C0A322FE3D6200FAB518 /* PhotoResources.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C0B022FE3DB800FAB518 /* PhotoResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C0AF22FE3DB800FAB518 /* PhotoResources.swift */; }; + D0C9C0B322FE3DD000FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0B222FE3DD000FAB518 /* Foundation.framework */; }; + D0C9C0B522FE3DD400FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0B422FE3DD400FAB518 /* UIKit.framework */; }; + D0C9C0B722FE3DD800FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0B622FE3DD800FAB518 /* Postbox.framework */; }; + D0C9C0B922FE3DDB00FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0B822FE3DDB00FAB518 /* SwiftSignalKit.framework */; }; + D0C9C0BB22FE3DE000FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0BA22FE3DE000FAB518 /* Display.framework */; }; + D0C9C0BD22FE3DE400FAB518 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0BC22FE3DE400FAB518 /* AVFoundation.framework */; }; + D0C9C0BF22FE3DEB00FAB518 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0BE22FE3DEB00FAB518 /* ImageIO.framework */; }; + D0C9C0C122FE3DF300FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0C022FE3DF300FAB518 /* TelegramCore.framework */; }; + D0C9C0C322FE3DF900FAB518 /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0C222FE3DF900FAB518 /* WebP.framework */; }; + D0C9C0C522FE3E0000FAB518 /* TelegramUIPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0C422FE3E0000FAB518 /* TelegramUIPreferences.framework */; }; + D0C9C0C722FE3E0500FAB518 /* MediaResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0C622FE3E0500FAB518 /* MediaResources.framework */; }; + D0C9C0C922FE3E0B00FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0C822FE3E0B00FAB518 /* AccountContext.framework */; }; + D0C9C0CB22FE3E1200FAB518 /* Tuples.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0CA22FE3E1200FAB518 /* Tuples.framework */; }; + D0C9C0CD22FE3E1700FAB518 /* ImageBlur.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0CC22FE3E1700FAB518 /* ImageBlur.framework */; }; + D0C9C0F522FE3F8400FAB518 /* TinyThumbnail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0F422FE3F8400FAB518 /* TinyThumbnail.framework */; }; + D0C9C0F922FE3FA500FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C0F822FE3FA500FAB518 /* FrameworkBundle.swift */; }; + D0C9C11F22FE40B500FAB518 /* ImageTransparency.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C11E22FE40B500FAB518 /* ImageTransparency.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C0A022FE3D6200FAB518 /* PhotoResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PhotoResources.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0A322FE3D6200FAB518 /* PhotoResources.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PhotoResources.h; sourceTree = ""; }; + D0C9C0A422FE3D6200FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C0AF22FE3DB800FAB518 /* PhotoResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoResources.swift; sourceTree = ""; }; + D0C9C0B222FE3DD000FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9C0B422FE3DD400FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + D0C9C0B622FE3DD800FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0B822FE3DDB00FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0BA22FE3DE000FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0BC22FE3DE400FAB518 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + D0C9C0BE22FE3DEB00FAB518 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = System/Library/Frameworks/ImageIO.framework; sourceTree = SDKROOT; }; + D0C9C0C022FE3DF300FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0C222FE3DF900FAB518 /* WebP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WebP.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0C422FE3E0000FAB518 /* TelegramUIPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramUIPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0C622FE3E0500FAB518 /* MediaResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = MediaResources.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0C822FE3E0B00FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0CA22FE3E1200FAB518 /* Tuples.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Tuples.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0CC22FE3E1700FAB518 /* ImageBlur.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ImageBlur.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0F422FE3F8400FAB518 /* TinyThumbnail.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TinyThumbnail.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0F822FE3FA500FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; + D0C9C11E22FE40B500FAB518 /* ImageTransparency.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ImageTransparency.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C09D22FE3D6200FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C11F22FE40B500FAB518 /* ImageTransparency.framework in Frameworks */, + D0C9C0F522FE3F8400FAB518 /* TinyThumbnail.framework in Frameworks */, + D0C9C0CD22FE3E1700FAB518 /* ImageBlur.framework in Frameworks */, + D0C9C0CB22FE3E1200FAB518 /* Tuples.framework in Frameworks */, + D0C9C0C922FE3E0B00FAB518 /* AccountContext.framework in Frameworks */, + D0C9C0C722FE3E0500FAB518 /* MediaResources.framework in Frameworks */, + D0C9C0C522FE3E0000FAB518 /* TelegramUIPreferences.framework in Frameworks */, + D0C9C0C322FE3DF900FAB518 /* WebP.framework in Frameworks */, + D0C9C0C122FE3DF300FAB518 /* TelegramCore.framework in Frameworks */, + D0C9C0BF22FE3DEB00FAB518 /* ImageIO.framework in Frameworks */, + D0C9C0BD22FE3DE400FAB518 /* AVFoundation.framework in Frameworks */, + D0C9C0BB22FE3DE000FAB518 /* Display.framework in Frameworks */, + D0C9C0B922FE3DDB00FAB518 /* SwiftSignalKit.framework in Frameworks */, + D0C9C0B722FE3DD800FAB518 /* Postbox.framework in Frameworks */, + D0C9C0B522FE3DD400FAB518 /* UIKit.framework in Frameworks */, + D0C9C0B322FE3DD000FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C09622FE3D6200FAB518 = { + isa = PBXGroup; + children = ( + D0C9C0A422FE3D6200FAB518 /* Info.plist */, + D0C9C0A222FE3D6200FAB518 /* Sources */, + D0C9C0A122FE3D6200FAB518 /* Products */, + D0C9C0B122FE3DD000FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C0A122FE3D6200FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C0A022FE3D6200FAB518 /* PhotoResources.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C0A222FE3D6200FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C0AF22FE3DB800FAB518 /* PhotoResources.swift */, + D0C9C0F822FE3FA500FAB518 /* FrameworkBundle.swift */, + D0C9C0A322FE3D6200FAB518 /* PhotoResources.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C0B122FE3DD000FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C11E22FE40B500FAB518 /* ImageTransparency.framework */, + D0C9C0F422FE3F8400FAB518 /* TinyThumbnail.framework */, + D0C9C0CC22FE3E1700FAB518 /* ImageBlur.framework */, + D0C9C0CA22FE3E1200FAB518 /* Tuples.framework */, + D0C9C0C822FE3E0B00FAB518 /* AccountContext.framework */, + D0C9C0C622FE3E0500FAB518 /* MediaResources.framework */, + D0C9C0C422FE3E0000FAB518 /* TelegramUIPreferences.framework */, + D0C9C0C222FE3DF900FAB518 /* WebP.framework */, + D0C9C0C022FE3DF300FAB518 /* TelegramCore.framework */, + D0C9C0BE22FE3DEB00FAB518 /* ImageIO.framework */, + D0C9C0BC22FE3DE400FAB518 /* AVFoundation.framework */, + D0C9C0BA22FE3DE000FAB518 /* Display.framework */, + D0C9C0B822FE3DDB00FAB518 /* SwiftSignalKit.framework */, + D0C9C0B622FE3DD800FAB518 /* Postbox.framework */, + D0C9C0B422FE3DD400FAB518 /* UIKit.framework */, + D0C9C0B222FE3DD000FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C09B22FE3D6200FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C0A522FE3D6200FAB518 /* PhotoResources.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C09F22FE3D6200FAB518 /* PhotoResources */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C0A822FE3D6200FAB518 /* Build configuration list for PBXNativeTarget "PhotoResources" */; + buildPhases = ( + D0C9C09B22FE3D6200FAB518 /* Headers */, + D0C9C09C22FE3D6200FAB518 /* Sources */, + D0C9C09D22FE3D6200FAB518 /* Frameworks */, + D0C9C09E22FE3D6200FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PhotoResources; + productName = PhotoResources; + productReference = D0C9C0A022FE3D6200FAB518 /* PhotoResources.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C09722FE3D6200FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C09F22FE3D6200FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C09A22FE3D6200FAB518 /* Build configuration list for PBXProject "PhotoResources_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C09622FE3D6200FAB518; + productRefGroup = D0C9C0A122FE3D6200FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C09F22FE3D6200FAB518 /* PhotoResources */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C09E22FE3D6200FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C09C22FE3D6200FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C0F922FE3FA500FAB518 /* FrameworkBundle.swift in Sources */, + D0C9C0B022FE3DB800FAB518 /* PhotoResources.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C0A622FE3D6200FAB518 /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0C9C0A722FE3D6200FAB518 /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C0A922FE3D6200FAB518 /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.PhotoResources; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0C9C0AA22FE3D6200FAB518 /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.PhotoResources; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C0AB22FE3D8C00FAB518 /* DebugHockeyapp */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugHockeyapp; + }; + D0C9C0AC22FE3D8C00FAB518 /* DebugHockeyapp */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.PhotoResources; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugHockeyapp; + }; + D0C9C0AD22FE3D9600FAB518 /* ReleaseHockeyappInternal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseHockeyappInternal; + }; + D0C9C0AE22FE3D9600FAB518 /* ReleaseHockeyappInternal */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.PhotoResources; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseHockeyappInternal; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0C9C09A22FE3D6200FAB518 /* Build configuration list for PBXProject "PhotoResources_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C0A622FE3D6200FAB518 /* DebugAppStoreLLC */, + D0C9C0AB22FE3D8C00FAB518 /* DebugHockeyapp */, + D0C9C0A722FE3D6200FAB518 /* ReleaseAppStoreLLC */, + D0C9C0AD22FE3D9600FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C0A822FE3D6200FAB518 /* Build configuration list for PBXNativeTarget "PhotoResources" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C0A922FE3D6200FAB518 /* DebugAppStoreLLC */, + D0C9C0AC22FE3D8C00FAB518 /* DebugHockeyapp */, + D0C9C0AA22FE3D6200FAB518 /* ReleaseAppStoreLLC */, + D0C9C0AE22FE3D9600FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C09722FE3D6200FAB518 /* Project object */; +} diff --git a/submodules/PhotoResources/Sources/FrameworkBundle.swift b/submodules/PhotoResources/Sources/FrameworkBundle.swift new file mode 100644 index 0000000000..8ca13d7d92 --- /dev/null +++ b/submodules/PhotoResources/Sources/FrameworkBundle.swift @@ -0,0 +1,13 @@ +import Foundation +import UIKit + +private class FrameworkBundleClass: NSObject { +} + +let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self) + +extension UIImage { + convenience init?(bundleImageName: String) { + self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil) + } +} diff --git a/submodules/PhotoResources/Sources/PhotoResources.h b/submodules/PhotoResources/Sources/PhotoResources.h new file mode 100644 index 0000000000..5ce333e0e7 --- /dev/null +++ b/submodules/PhotoResources/Sources/PhotoResources.h @@ -0,0 +1,19 @@ +// +// PhotoResources.h +// PhotoResources +// +// Created by Peter on 8/10/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for PhotoResources. +FOUNDATION_EXPORT double PhotoResourcesVersionNumber; + +//! Project version string for PhotoResources. +FOUNDATION_EXPORT const unsigned char PhotoResourcesVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramUI/TelegramUI/PhotoResources.swift b/submodules/PhotoResources/Sources/PhotoResources.swift similarity index 96% rename from submodules/TelegramUI/TelegramUI/PhotoResources.swift rename to submodules/PhotoResources/Sources/PhotoResources.swift index d6d448de67..5fb4f32511 100644 --- a/submodules/TelegramUI/TelegramUI/PhotoResources.swift +++ b/submodules/PhotoResources/Sources/PhotoResources.swift @@ -5,7 +5,6 @@ import SwiftSignalKit import Display import AVFoundation import ImageIO -import TelegramUIPrivateModule import TelegramCore #if BUCK import WebPImage @@ -17,6 +16,8 @@ import MediaResources import AccountContext import Tuples import ImageBlur +import TinyThumbnail +import ImageTransparency private enum ResourceFileData { case data(Data) @@ -27,7 +28,7 @@ public func largestRepresentationForPhoto(_ photo: TelegramMediaImage) -> Telegr return photo.representationForDisplayAtSize(CGSize(width: 1280.0, height: 1280.0)) } -func chatMessagePhotoDatas(postbox: Postbox, photoReference: ImageMediaReference, fullRepresentationSize: CGSize = CGSize(width: 1280.0, height: 1280.0), autoFetchFullSize: Bool = false, tryAdditionalRepresentations: Bool = false, synchronousLoad: Bool = false) -> Signal, NoError> { +public func chatMessagePhotoDatas(postbox: Postbox, photoReference: ImageMediaReference, fullRepresentationSize: CGSize = CGSize(width: 1280.0, height: 1280.0), autoFetchFullSize: Bool = false, tryAdditionalRepresentations: Bool = false, synchronousLoad: Bool = false) -> Signal, NoError> { if let smallestRepresentation = smallestImageRepresentation(photoReference.media.representations), let largestRepresentation = photoReference.media.representationForDisplayAtSize(fullRepresentationSize) { let maybeFullSize = postbox.mediaBox.resourceData(largestRepresentation.resource, option: .complete(waitUntilFetchStatus: false), attemptSynchronously: synchronousLoad) @@ -601,7 +602,7 @@ private func tailContext(_ tail: Tail) -> DrawingContext { } } -func addCorners(_ context: DrawingContext, arguments: TransformImageArguments) { +public func addCorners(_ context: DrawingContext, arguments: TransformImageArguments) { let corners = arguments.corners let drawingRect = arguments.drawingRect if case let .Corner(radius) = corners.topLeft, radius > CGFloat.ulpOfOne { @@ -664,7 +665,7 @@ func addCorners(_ context: DrawingContext, arguments: TransformImageArguments) { } } -func rawMessagePhoto(postbox: Postbox, photoReference: ImageMediaReference) -> Signal { +public func rawMessagePhoto(postbox: Postbox, photoReference: ImageMediaReference) -> Signal { return chatMessagePhotoDatas(postbox: postbox, photoReference: photoReference, autoFetchFullSize: true) |> map { value -> UIImage? in let thumbnailData = value._0 @@ -1123,7 +1124,7 @@ public func chatMessageVideoThumbnail(account: Account, fileReference: FileMedia } } -func chatSecretPhoto(account: Account, photoReference: ImageMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func chatSecretPhoto(account: Account, photoReference: ImageMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { let signal = chatMessagePhotoDatas(postbox: account.postbox, photoReference: photoReference) return signal |> map { value in @@ -1298,7 +1299,7 @@ private func avatarGalleryThumbnailDatas(postbox: Postbox, representations: [Ima } } -func avatarGalleryThumbnailPhoto(account: Account, representations: [ImageRepresentationWithReference]) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func avatarGalleryThumbnailPhoto(account: Account, representations: [ImageRepresentationWithReference]) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { let signal = avatarGalleryThumbnailDatas(postbox: account.postbox, representations: representations, fullRepresentationSize: CGSize(width: 127.0, height: 127.0), autoFetchFullSize: true) return signal |> map { value in @@ -1383,7 +1384,7 @@ func avatarGalleryThumbnailPhoto(account: Account, representations: [ImageRepres } } -func mediaGridMessagePhoto(account: Account, photoReference: ImageMediaReference, fullRepresentationSize: CGSize = CGSize(width: 127.0, height: 127.0), synchronousLoad: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func mediaGridMessagePhoto(account: Account, photoReference: ImageMediaReference, fullRepresentationSize: CGSize = CGSize(width: 127.0, height: 127.0), synchronousLoad: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { let signal = chatMessagePhotoDatas(postbox: account.postbox, photoReference: photoReference, fullRepresentationSize: fullRepresentationSize, autoFetchFullSize: true, synchronousLoad: synchronousLoad) return signal @@ -1468,7 +1469,7 @@ func mediaGridMessagePhoto(account: Account, photoReference: ImageMediaReference } } -func gifPaneVideoThumbnail(account: Account, videoReference: FileMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func gifPaneVideoThumbnail(account: Account, videoReference: FileMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { if let smallestRepresentation = smallestImageRepresentation(videoReference.media.previewRepresentations) { let thumbnailResource = smallestRepresentation.resource @@ -1537,14 +1538,14 @@ func gifPaneVideoThumbnail(account: Account, videoReference: FileMediaReference) } } -func mediaGridMessageVideo(postbox: Postbox, videoReference: FileMediaReference, onlyFullSize: Bool = false, synchronousLoad: Bool = false, autoFetchFullSizeThumbnail: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func mediaGridMessageVideo(postbox: Postbox, videoReference: FileMediaReference, onlyFullSize: Bool = false, synchronousLoad: Bool = false, autoFetchFullSizeThumbnail: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { return internalMediaGridMessageVideo(postbox: postbox, videoReference: videoReference, onlyFullSize: onlyFullSize, synchronousLoad: synchronousLoad, autoFetchFullSizeThumbnail: autoFetchFullSizeThumbnail) |> map { return $0.1 } } -func internalMediaGridMessageVideo(postbox: Postbox, videoReference: FileMediaReference, imageReference: ImageMediaReference? = nil, onlyFullSize: Bool = false, synchronousLoad: Bool = false, autoFetchFullSizeThumbnail: Bool = false) -> Signal<(() -> CGSize?, (TransformImageArguments) -> DrawingContext?), NoError> { +public func internalMediaGridMessageVideo(postbox: Postbox, videoReference: FileMediaReference, imageReference: ImageMediaReference? = nil, onlyFullSize: Bool = false, synchronousLoad: Bool = false, autoFetchFullSizeThumbnail: Bool = false) -> Signal<(() -> CGSize?, (TransformImageArguments) -> DrawingContext?), NoError> { let signal: Signal?, Bool>, NoError> if let imageReference = imageReference { signal = chatMessagePhotoDatas(postbox: postbox, photoReference: imageReference, tryAdditionalRepresentations: true, synchronousLoad: synchronousLoad) @@ -1757,7 +1758,7 @@ func internalMediaGridMessageVideo(postbox: Postbox, videoReference: FileMediaRe } } -func chatMessagePhotoStatus(context: AccountContext, messageId: MessageId, photoReference: ImageMediaReference) -> Signal { +public func chatMessagePhotoStatus(context: AccountContext, messageId: MessageId, photoReference: ImageMediaReference) -> Signal { if let largestRepresentation = largestRepresentationForPhoto(photoReference.media) { return context.fetchManager.fetchStatus(category: .image, location: .chat(messageId.peerId), locationKey: .messageId(messageId), resource: largestRepresentation.resource) } else { @@ -1795,21 +1796,21 @@ public func chatMessagePhotoInteractiveFetched(context: AccountContext, photoRef } } -func chatMessagePhotoCancelInteractiveFetch(account: Account, photoReference: ImageMediaReference) { +public func chatMessagePhotoCancelInteractiveFetch(account: Account, photoReference: ImageMediaReference) { if let largestRepresentation = largestRepresentationForPhoto(photoReference.media) { return account.postbox.mediaBox.cancelInteractiveResourceFetch(largestRepresentation.resource) } } -func chatMessageWebFileInteractiveFetched(account: Account, image: TelegramMediaWebFile) -> Signal { +public func chatMessageWebFileInteractiveFetched(account: Account, image: TelegramMediaWebFile) -> Signal { return fetchedMediaResource(mediaBox: account.postbox.mediaBox, reference: .standalone(resource: image.resource), statsCategory: .image) } -func chatMessageWebFileCancelInteractiveFetch(account: Account, image: TelegramMediaWebFile) { +public func chatMessageWebFileCancelInteractiveFetch(account: Account, image: TelegramMediaWebFile) { return account.postbox.mediaBox.cancelInteractiveResourceFetch(image.resource) } -func chatWebpageSnippetFileData(account: Account, fileReference: FileMediaReference, resource: MediaResource) -> Signal { +public func chatWebpageSnippetFileData(account: Account, fileReference: FileMediaReference, resource: MediaResource) -> Signal { let resourceData = account.postbox.mediaBox.resourceData(resource) |> map { next in return next.size == 0 ? nil : try? Data(contentsOf: URL(fileURLWithPath: next.path), options: .mappedIfSafe) @@ -1829,7 +1830,7 @@ func chatWebpageSnippetFileData(account: Account, fileReference: FileMediaRefere } } -func chatWebpageSnippetPhotoData(account: Account, photoReference: ImageMediaReference) -> Signal { +public func chatWebpageSnippetPhotoData(account: Account, photoReference: ImageMediaReference) -> Signal { if let closestRepresentation = photoReference.media.representationForDisplayAtSize(CGSize(width: 120.0, height: 120.0)) { let resourceData = account.postbox.mediaBox.resourceData(closestRepresentation.resource) |> map { next in @@ -1896,7 +1897,7 @@ public func chatWebpageSnippetFile(account: Account, fileReference: FileMediaRef } } -func chatWebpageSnippetPhoto(account: Account, photoReference: ImageMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func chatWebpageSnippetPhoto(account: Account, photoReference: ImageMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { let signal = chatWebpageSnippetPhotoData(account: account, photoReference: photoReference) return signal |> map { fullSizeData in @@ -1939,7 +1940,7 @@ func chatWebpageSnippetPhoto(account: Account, photoReference: ImageMediaReferen } } -func chatMessageVideo(postbox: Postbox, videoReference: FileMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func chatMessageVideo(postbox: Postbox, videoReference: FileMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { return mediaGridMessageVideo(postbox: postbox, videoReference: videoReference) } @@ -1969,7 +1970,7 @@ private func chatSecretMessageVideoData(account: Account, fileReference: FileMed } } -func chatSecretMessageVideo(account: Account, videoReference: FileMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func chatSecretMessageVideo(account: Account, videoReference: FileMediaReference) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { let signal = chatSecretMessageVideoData(account: account, fileReference: videoReference) return signal @@ -2061,7 +2062,7 @@ private func orientationFromExif(orientation: Int) -> UIImage.Orientation { } } -func imageOrientationFromSource(_ source: CGImageSource) -> UIImage.Orientation { +public func imageOrientationFromSource(_ source: CGImageSource) -> UIImage.Orientation { if let properties = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) { let dict = properties as NSDictionary if let value = dict.object(forKey: kCGImagePropertyOrientation) as? NSNumber { @@ -2085,7 +2086,7 @@ private func rotationFor(_ orientation: UIImage.Orientation) -> CGFloat { } } -func drawImage(context: CGContext, image: CGImage, orientation: UIImage.Orientation, in rect: CGRect) { +public func drawImage(context: CGContext, image: CGImage, orientation: UIImage.Orientation, in rect: CGRect) { var restore = true var drawRect = rect switch orientation { @@ -2123,7 +2124,7 @@ func drawImage(context: CGContext, image: CGImage, orientation: UIImage.Orientat } } -func chatMessageImageFile(account: Account, fileReference: FileMediaReference, thumbnail: Bool, fetched: Bool = false, autoFetchFullSizeThumbnail: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func chatMessageImageFile(account: Account, fileReference: FileMediaReference, thumbnail: Bool, fetched: Bool = false, autoFetchFullSizeThumbnail: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { let signal: Signal, NoError> if thumbnail { signal = chatMessageImageFileThumbnailDatas(account: account, fileReference: fileReference, autoFetchFullSizeThumbnail: true) @@ -2257,7 +2258,7 @@ func chatMessageImageFile(account: Account, fileReference: FileMediaReference, t } } -func instantPageImageFile(account: Account, fileReference: FileMediaReference, fetched: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func instantPageImageFile(account: Account, fileReference: FileMediaReference, fetched: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { return chatMessageFileDatas(account: account, fileReference: fileReference, progressive: false, fetched: fetched) |> map { value in let thumbnailData = value._0 @@ -2367,7 +2368,7 @@ private func avatarGalleryPhotoDatas(account: Account, fileReference: FileMediaR } } -func chatAvatarGalleryPhoto(account: Account, representations: [ImageRepresentationWithReference], autoFetchFullSize: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func chatAvatarGalleryPhoto(account: Account, representations: [ImageRepresentationWithReference], autoFetchFullSize: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { let signal = avatarGalleryPhotoDatas(account: account, representations: representations, autoFetchFullSize: autoFetchFullSize) return signal @@ -2490,7 +2491,7 @@ func chatAvatarGalleryPhoto(account: Account, representations: [ImageRepresentat } } -func chatMapSnapshotData(account: Account, resource: MapSnapshotMediaResource) -> Signal { +public func chatMapSnapshotData(account: Account, resource: MapSnapshotMediaResource) -> Signal { return Signal { subscriber in let fetchedDisposable = account.postbox.mediaBox.fetchedResource(resource, parameters: nil).start() let dataDisposable = account.postbox.mediaBox.resourceData(resource).start(next: { next in @@ -2508,7 +2509,7 @@ func chatMapSnapshotData(account: Account, resource: MapSnapshotMediaResource) - private let locationPinImage = UIImage(named: "ModernMessageLocationPin")?.precomposed() -func chatMapSnapshotImage(account: Account, resource: MapSnapshotMediaResource) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func chatMapSnapshotImage(account: Account, resource: MapSnapshotMediaResource) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { let signal = chatMapSnapshotData(account: account, resource: resource) return signal |> map { fullSizeData in @@ -2576,7 +2577,7 @@ func chatMapSnapshotImage(account: Account, resource: MapSnapshotMediaResource) } } -func chatWebFileImage(account: Account, file: TelegramMediaWebFile) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func chatWebFileImage(account: Account, file: TelegramMediaWebFile) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { return account.postbox.mediaBox.resourceData(file.resource) |> map { fullSizeData in return { arguments in @@ -2774,7 +2775,7 @@ private func drawAlbumArtPlaceholder(into c: CGContext, arguments: TransformImag } } -func playerAlbumArt(postbox: Postbox, fileReference: FileMediaReference?, albumArt: SharedMediaPlaybackAlbumArt?, thumbnail: Bool) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func playerAlbumArt(postbox: Postbox, fileReference: FileMediaReference?, albumArt: SharedMediaPlaybackAlbumArt?, thumbnail: Bool) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { var fileArtworkData: Signal = .single(nil) if let fileReference = fileReference { let size = thumbnail ? CGSize(width: 48.0, height: 48.0) : CGSize(width: 320.0, height: 320.0) @@ -2859,11 +2860,11 @@ func playerAlbumArt(postbox: Postbox, fileReference: FileMediaReference?, albumA } } -func securePhoto(account: Account, resource: TelegramMediaResource, accessContext: SecureIdAccessContext) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func securePhoto(account: Account, resource: TelegramMediaResource, accessContext: SecureIdAccessContext) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { return securePhotoInternal(account: account, resource: resource, accessContext: accessContext) |> map { $0.1 } } -func securePhotoInternal(account: Account, resource: TelegramMediaResource, accessContext: SecureIdAccessContext) -> Signal<(() -> CGSize?, (TransformImageArguments) -> DrawingContext?), NoError> { +public func securePhotoInternal(account: Account, resource: TelegramMediaResource, accessContext: SecureIdAccessContext) -> Signal<(() -> CGSize?, (TransformImageArguments) -> DrawingContext?), NoError> { let signal = Signal { subscriber in let fetched = account.postbox.mediaBox.fetchedResource(resource, parameters: nil).start() let data = account.postbox.mediaBox.resourceData(resource, option: .complete(waitUntilFetchStatus: false)).start(next: { next in @@ -2994,12 +2995,12 @@ private func drawOpenInAppIconBorder(into c: CGContext, arguments: TransformImag c.strokePath() } -enum OpenInAppIcon { +public enum OpenInAppIcon { case resource(resource: TelegramMediaResource) case image(image: UIImage) } -func openInAppIcon(postbox: Postbox, appIcon: OpenInAppIcon) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func openInAppIcon(postbox: Postbox, appIcon: OpenInAppIcon) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { switch appIcon { case let .resource(resource): return openInAppIconData(postbox: postbox, appIcon: resource) |> map { data in @@ -3044,7 +3045,7 @@ func openInAppIcon(postbox: Postbox, appIcon: OpenInAppIcon) -> Signal<(Transfor } } -func callDefaultBackground() -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { +public func callDefaultBackground() -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> { return .single({ arguments in let context = DrawingContext(size: arguments.drawingSize, clear: true) context.withFlippedContext { c in diff --git a/submodules/TelegramUI/TelegramUI/CallController.swift b/submodules/TelegramCallsUI/Sources/CallController.swift similarity index 97% rename from submodules/TelegramUI/TelegramUI/CallController.swift rename to submodules/TelegramCallsUI/Sources/CallController.swift index 0adb4cfad5..1d1bcf0cee 100644 --- a/submodules/TelegramUI/TelegramUI/CallController.swift +++ b/submodules/TelegramCallsUI/Sources/CallController.swift @@ -8,9 +8,9 @@ import SwiftSignalKit import TelegramPresentationData import TelegramUIPreferences import TelegramVoip -import TelegramCallsUI import TelegramAudio import AccountContext +import TelegramNotices public final class CallController: ViewController { private var controllerNode: CallControllerNode { @@ -25,6 +25,7 @@ public final class CallController: ViewController { private let sharedContext: SharedAccountContext private let account: Account public let call: PresentationCall + private let easyDebugAccess: Bool private var presentationData: PresentationData private var didPlayPresentationAnimation = false @@ -42,10 +43,11 @@ public final class CallController: ViewController { private var audioOutputStateDisposable: Disposable? private var audioOutputState: ([AudioSessionOutput], AudioSessionOutput?)? - public init(sharedContext: SharedAccountContext, account: Account, call: PresentationCall) { + public init(sharedContext: SharedAccountContext, account: Account, call: PresentationCall, easyDebugAccess: Bool) { self.sharedContext = sharedContext self.account = account self.call = call + self.easyDebugAccess = easyDebugAccess self.presentationData = sharedContext.currentPresentationData.with { $0 } @@ -102,7 +104,7 @@ public final class CallController: ViewController { } override public func loadDisplayNode() { - self.displayNode = CallControllerNode(sharedContext: self.sharedContext, account: self.account, presentationData: self.presentationData, statusBar: self.statusBar, debugInfo: self.call.debugInfo(), shouldStayHiddenUntilConnection: !self.call.isOutgoing && self.call.isIntegratedWithCallKit) + self.displayNode = CallControllerNode(sharedContext: self.sharedContext, account: self.account, presentationData: self.presentationData, statusBar: self.statusBar, debugInfo: self.call.debugInfo(), shouldStayHiddenUntilConnection: !self.call.isOutgoing && self.call.isIntegratedWithCallKit, easyDebugAccess: self.easyDebugAccess) self.displayNodeDidLoad() self.controllerNode.toggleMute = { [weak self] in diff --git a/submodules/TelegramUI/TelegramUI/CallControllerButton.swift b/submodules/TelegramCallsUI/Sources/CallControllerButton.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/CallControllerButton.swift rename to submodules/TelegramCallsUI/Sources/CallControllerButton.swift diff --git a/submodules/TelegramUI/TelegramUI/CallControllerButtonsNode.swift b/submodules/TelegramCallsUI/Sources/CallControllerButtonsNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/CallControllerButtonsNode.swift rename to submodules/TelegramCallsUI/Sources/CallControllerButtonsNode.swift diff --git a/submodules/TelegramUI/TelegramUI/CallControllerKeyPreviewNode.swift b/submodules/TelegramCallsUI/Sources/CallControllerKeyPreviewNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/CallControllerKeyPreviewNode.swift rename to submodules/TelegramCallsUI/Sources/CallControllerKeyPreviewNode.swift diff --git a/submodules/TelegramUI/TelegramUI/CallControllerNode.swift b/submodules/TelegramCallsUI/Sources/CallControllerNode.swift similarity index 99% rename from submodules/TelegramUI/TelegramUI/CallControllerNode.swift rename to submodules/TelegramCallsUI/Sources/CallControllerNode.swift index 51e0dd25d3..94e9872336 100644 --- a/submodules/TelegramUI/TelegramUI/CallControllerNode.swift +++ b/submodules/TelegramCallsUI/Sources/CallControllerNode.swift @@ -5,13 +5,12 @@ import AsyncDisplayKit import Postbox import TelegramCore import SwiftSignalKit -import TelegramCallsUI -import TelegramUIPrivateModule import TelegramPresentationData import TelegramUIPreferences import TelegramAudio import AccountContext import LocalizedPeerData +import PhotoResources final class CallControllerNode: ASDisplayNode { private let sharedContext: SharedAccountContext @@ -23,6 +22,7 @@ final class CallControllerNode: ASDisplayNode { private var peer: Peer? private let debugInfo: Signal<(String, String), NoError> private var forceReportRating = false + private let easyDebugAccess: Bool private let containerNode: ASDisplayNode @@ -62,13 +62,14 @@ final class CallControllerNode: ASDisplayNode { var callEnded: ((Bool) -> Void)? var dismissedInteractively: (() -> Void)? - init(sharedContext: SharedAccountContext, account: Account, presentationData: PresentationData, statusBar: StatusBar, debugInfo: Signal<(String, String), NoError>, shouldStayHiddenUntilConnection: Bool = false) { + init(sharedContext: SharedAccountContext, account: Account, presentationData: PresentationData, statusBar: StatusBar, debugInfo: Signal<(String, String), NoError>, shouldStayHiddenUntilConnection: Bool = false, easyDebugAccess: Bool) { self.sharedContext = sharedContext self.account = account self.presentationData = presentationData self.statusBar = statusBar self.debugInfo = debugInfo self.shouldStayHiddenUntilConnection = shouldStayHiddenUntilConnection + self.easyDebugAccess = easyDebugAccess self.containerNode = ASDisplayNode() if self.shouldStayHiddenUntilConnection { @@ -460,7 +461,7 @@ final class CallControllerNode: ASDisplayNode { } else { let point = recognizer.location(in: recognizer.view) if self.statusNode.frame.contains(point) { - if !GlobalExperimentalSettings.isAppStoreBuild { + if self.easyDebugAccess { self.presentDebugNode() } else { let timestamp = CACurrentMediaTime() diff --git a/submodules/TelegramUI/TelegramUI/CallControllerStatusNode.swift b/submodules/TelegramCallsUI/Sources/CallControllerStatusNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/CallControllerStatusNode.swift rename to submodules/TelegramCallsUI/Sources/CallControllerStatusNode.swift diff --git a/submodules/TelegramUI/TelegramUI/CallDebugNode.swift b/submodules/TelegramCallsUI/Sources/CallDebugNode.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/CallDebugNode.swift rename to submodules/TelegramCallsUI/Sources/CallDebugNode.swift diff --git a/submodules/TelegramUI/TelegramUI/CallFeedbackController.swift b/submodules/TelegramCallsUI/Sources/CallFeedbackController.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/CallFeedbackController.swift rename to submodules/TelegramCallsUI/Sources/CallFeedbackController.swift diff --git a/submodules/TelegramUI/TelegramUI/CallRatingController.swift b/submodules/TelegramCallsUI/Sources/CallRatingController.swift similarity index 98% rename from submodules/TelegramUI/TelegramUI/CallRatingController.swift rename to submodules/TelegramCallsUI/Sources/CallRatingController.swift index 35b4ca5681..d099fc36d2 100644 --- a/submodules/TelegramUI/TelegramUI/CallRatingController.swift +++ b/submodules/TelegramCallsUI/Sources/CallRatingController.swift @@ -264,7 +264,7 @@ func rateCallAndSendLogs(account: Account, callId: CallId, starsCount: Int, comm } } -func callRatingController(sharedContext: SharedAccountContext, account: Account, callId: CallId, userInitiated: Bool, present: @escaping (ViewController, Any) -> Void) -> AlertController { +public func callRatingController(sharedContext: SharedAccountContext, account: Account, callId: CallId, userInitiated: Bool, present: @escaping (ViewController, Any) -> Void) -> AlertController { let presentationData = sharedContext.currentPresentationData.with { $0 } let theme = presentationData.theme let strings = presentationData.strings diff --git a/submodules/TelegramUI/TelegramUI/CallRouteActionSheetItem.swift b/submodules/TelegramCallsUI/Sources/CallRouteActionSheetItem.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/CallRouteActionSheetItem.swift rename to submodules/TelegramCallsUI/Sources/CallRouteActionSheetItem.swift diff --git a/submodules/TelegramUI/TelegramUI/CallSuggestTabController.swift b/submodules/TelegramCallsUI/Sources/CallSuggestTabController.swift similarity index 100% rename from submodules/TelegramUI/TelegramUI/CallSuggestTabController.swift rename to submodules/TelegramCallsUI/Sources/CallSuggestTabController.swift diff --git a/submodules/TelegramCallsUI/Sources/CallsEmoji.h b/submodules/TelegramCallsUI/Sources/CallsEmoji.h new file mode 100644 index 0000000000..d46ac50e5d --- /dev/null +++ b/submodules/TelegramCallsUI/Sources/CallsEmoji.h @@ -0,0 +1,8 @@ +#ifndef CallsEmoji_h +#define CallsEmoji_h + +#import + +NSString *stringForEmojiHashOfData(NSData *data, NSInteger count); + +#endif /* CallsEmoji_h */ diff --git a/submodules/TelegramCallsUI/Sources/CallsEmoji.m b/submodules/TelegramCallsUI/Sources/CallsEmoji.m new file mode 100644 index 0000000000..e187e5c81d --- /dev/null +++ b/submodules/TelegramCallsUI/Sources/CallsEmoji.m @@ -0,0 +1,28 @@ +#import +#import "CallsEmoji.h" + +static int32_t positionExtractor(uint8_t *bytes, int32_t i, int32_t count) { + int offset = i * 8; + int64_t num = (((int64_t)bytes[offset] & 0x7F) << 56) | (((int64_t)bytes[offset+1] & 0xFF) << 48) | (((int64_t)bytes[offset+2] & 0xFF) << 40) | (((int64_t)bytes[offset+3] & 0xFF) << 32) | (((int64_t)bytes[offset+4] & 0xFF) << 24) | (((int64_t)bytes[offset+5] & 0xFF) << 16) | (((int64_t)bytes[offset+6] & 0xFF) << 8) | (((int64_t)bytes[offset+7] & 0xFF)); + return num % count; +} + +NSString *stringForEmojiHashOfData(NSData *data, NSInteger count) { + if (data.length != 32) + return @""; + + NSArray *emojis = @[ @"😉", @"😍", @"😛", @"😭", @"😱", @"😡", @"😎", @"😴", @"😵", @"😈", @"😬", @"😇", @"😏", @"👮", @"👷", @"💂", @"👶", @"👨", @"👩", @"👴", @"👵", @"😻", @"😽", @"🙀", @"👺", @"🙈", @"🙉", @"🙊", @"💀", @"👽", @"💩", @"🔥", @"💥", @"💤", @"👂", @"👀", @"👃", @"👅", @"👄", @"👍", @"👎", @"👌", @"👊", @"✌️", @"✋️", @"👐", @"👆", @"👇", @"👉", @"👈", @"🙏", @"👏", @"💪", @"🚶", @"🏃", @"💃", @"👫", @"👪", @"👬", @"👭", @"💅", @"🎩", @"👑", @"👒", @"👟", @"👞", @"👠", @"👕", @"👗", @"👖", @"👙", @"👜", @"👓", @"🎀", @"💄", @"💛", @"💙", @"💜", @"💚", @"💍", @"💎", @"🐶", @"🐺", @"🐱", @"🐭", @"🐹", @"🐰", @"🐸", @"🐯", @"🐨", @"🐻", @"🐷", @"🐮", @"🐗", @"🐴", @"🐑", @"🐘", @"🐼", @"🐧", @"🐥", @"🐔", @"🐍", @"🐢", @"🐛", @"🐝", @"🐜", @"🐞", @"🐌", @"🐙", @"🐚", @"🐟", @"🐬", @"🐋", @"🐐", @"🐊", @"🐫", @"🍀", @"🌹", @"🌻", @"🍁", @"🌾", @"🍄", @"🌵", @"🌴", @"🌳", @"🌞", @"🌚", @"🌙", @"🌎", @"🌋", @"⚡️", @"☔️", @"❄️", @"⛄️", @"🌀", @"🌈", @"🌊", @"🎓", @"🎆", @"🎃", @"👻", @"🎅", @"🎄", @"🎁", @"🎈", @"🔮", @"🎥", @"📷", @"💿", @"💻", @"☎️", @"📡", @"📺", @"📻", @"🔉", @"🔔", @"⏳", @"⏰", @"⌚️", @"🔒", @"🔑", @"🔎", @"💡", @"🔦", @"🔌", @"🔋", @"🚿", @"🚽", @"🔧", @"🔨", @"🚪", @"🚬", @"💣", @"🔫", @"🔪", @"💊", @"💉", @"💰", @"💵", @"💳", @"✉️", @"📫", @"📦", @"📅", @"📁", @"✂️", @"📌", @"📎", @"✒️", @"✏️", @"📐", @"📚", @"🔬", @"🔭", @"🎨", @"🎬", @"🎤", @"🎧", @"🎵", @"🎹", @"🎻", @"🎺", @"🎸", @"👾", @"🎮", @"🃏", @"🎲", @"🎯", @"🏈", @"🏀", @"⚽️", @"⚾️", @"🎾", @"🎱", @"🏉", @"🎳", @"🏁", @"🏇", @"🏆", @"🏊", @"🏄", @"☕️", @"🍼", @"🍺", @"🍷", @"🍴", @"🍕", @"🍔", @"🍟", @"🍗", @"🍱", @"🍚", @"🍜", @"🍡", @"🍳", @"🍞", @"🍩", @"🍦", @"🎂", @"🍰", @"🍪", @"🍫", @"🍭", @"🍯", @"🍎", @"🍏", @"🍊", @"🍋", @"🍒", @"🍇", @"🍉", @"🍓", @"🍑", @"🍌", @"🍐", @"🍍", @"🍆", @"🍅", @"🌽", @"🏡", @"🏥", @"🏦", @"⛪️", @"🏰", @"⛺️", @"🏭", @"🗻", @"🗽", @"🎠", @"🎡", @"⛲️", @"🎢", @"🚢", @"🚤", @"⚓️", @"🚀", @"✈️", @"🚁", @"🚂", @"🚋", @"🚎", @"🚌", @"🚙", @"🚗", @"🚕", @"🚛", @"🚨", @"🚔", @"🚒", @"🚑", @"🚲", @"🚠", @"🚜", @"🚦", @"⚠️", @"🚧", @"⛽️", @"🎰", @"🗿", @"🎪", @"🎭", @"🇯🇵", @"🇰🇷", @"🇩🇪", @"🇨🇳", @"🇺🇸", @"🇫🇷", @"🇪🇸", @"🇮🇹", @"🇷🇺", @"🇬🇧", @"1️⃣", @"2️⃣", @"3️⃣", @"4️⃣", @"5️⃣", @"6️⃣", @"7️⃣", @"8️⃣", @"9️⃣", @"0️⃣", @"🔟", @"❗️", @"❓", @"♥️", @"♦️", @"💯", @"🔗", @"🔱", @"🔴", @"🔵", @"🔶", @"🔷" ]; + + uint8_t bytes[32]; + [data getBytes:bytes length:32]; + + NSString *result = @""; + for (int32_t i = 0; i < count; i++) + { + int32_t position = positionExtractor(bytes, i, (int32_t)emojis.count); + NSString *emoji = emojis[position]; + result = [result stringByAppendingString:emoji]; + } + + return result; +} diff --git a/submodules/TelegramCallsUI/Sources/FrameworkBundle.swift b/submodules/TelegramCallsUI/Sources/FrameworkBundle.swift new file mode 100644 index 0000000000..8ca13d7d92 --- /dev/null +++ b/submodules/TelegramCallsUI/Sources/FrameworkBundle.swift @@ -0,0 +1,13 @@ +import Foundation +import UIKit + +private class FrameworkBundleClass: NSObject { +} + +let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self) + +extension UIImage { + convenience init?(bundleImageName: String) { + self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil) + } +} diff --git a/submodules/TelegramCallsUI/Sources/TelegramCallsUI.h b/submodules/TelegramCallsUI/Sources/TelegramCallsUI.h index a87d7596b8..e897dc32a1 100644 --- a/submodules/TelegramCallsUI/Sources/TelegramCallsUI.h +++ b/submodules/TelegramCallsUI/Sources/TelegramCallsUI.h @@ -14,6 +14,6 @@ FOUNDATION_EXPORT double TelegramCallsUIVersionNumber; //! Project version string for TelegramCallsUI. FOUNDATION_EXPORT const unsigned char TelegramCallsUIVersionString[]; -// In this header, you should import all the public headers of your framework using statements like #import +#import diff --git a/submodules/TelegramCallsUI/TelegramCallsUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramCallsUI/TelegramCallsUI_Xcode.xcodeproj/project.pbxproj index 4205ecb76e..5cd9614efa 100644 --- a/submodules/TelegramCallsUI/TelegramCallsUI_Xcode.xcodeproj/project.pbxproj +++ b/submodules/TelegramCallsUI/TelegramCallsUI_Xcode.xcodeproj/project.pbxproj @@ -18,6 +18,22 @@ D0AE319B22B270D60058D3BC /* TelegramAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE319A22B270D60058D3BC /* TelegramAudio.framework */; }; D0AE31C122B274BA0058D3BC /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE31C022B274BA0058D3BC /* TelegramPresentationData.framework */; }; D0AE320722B281AE0058D3BC /* DeviceAccess.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AE320622B281AE0058D3BC /* DeviceAccess.framework */; }; + D0C9C08A22FE3CF300FAB518 /* CallDebugNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08022FE3CF200FAB518 /* CallDebugNode.swift */; }; + D0C9C08B22FE3CF300FAB518 /* CallControllerStatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08122FE3CF200FAB518 /* CallControllerStatusNode.swift */; }; + D0C9C08C22FE3CF300FAB518 /* CallControllerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08222FE3CF300FAB518 /* CallControllerButton.swift */; }; + D0C9C08D22FE3CF300FAB518 /* CallController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08322FE3CF300FAB518 /* CallController.swift */; }; + D0C9C08E22FE3CF300FAB518 /* CallControllerButtonsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08422FE3CF300FAB518 /* CallControllerButtonsNode.swift */; }; + D0C9C08F22FE3CF300FAB518 /* CallFeedbackController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08522FE3CF300FAB518 /* CallFeedbackController.swift */; }; + D0C9C09022FE3CF300FAB518 /* CallControllerKeyPreviewNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08622FE3CF300FAB518 /* CallControllerKeyPreviewNode.swift */; }; + D0C9C09122FE3CF300FAB518 /* CallRatingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08722FE3CF300FAB518 /* CallRatingController.swift */; }; + D0C9C09222FE3CF300FAB518 /* CallRouteActionSheetItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08822FE3CF300FAB518 /* CallRouteActionSheetItem.swift */; }; + D0C9C09322FE3CF300FAB518 /* CallControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C08922FE3CF300FAB518 /* CallControllerNode.swift */; }; + D0C9C09522FE3D1700FAB518 /* FrameworkBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C09422FE3D1700FAB518 /* FrameworkBundle.swift */; }; + D0C9C0CF22FE3E2400FAB518 /* PhotoResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0CE22FE3E2400FAB518 /* PhotoResources.framework */; }; + D0C9C12522FE41C600FAB518 /* CallsEmoji.m in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C12422FE41C600FAB518 /* CallsEmoji.m */; }; + D0C9C12722FE41DB00FAB518 /* CallsEmoji.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C12622FE41D200FAB518 /* CallsEmoji.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C14B22FE439300FAB518 /* TelegramNotices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C14A22FE439300FAB518 /* TelegramNotices.framework */; }; + D0C9C17B22FEF26C00FAB518 /* CallSuggestTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C17A22FEF26C00FAB518 /* CallSuggestTabController.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -34,6 +50,22 @@ D0AE319A22B270D60058D3BC /* TelegramAudio.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramAudio.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0AE31C022B274BA0058D3BC /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0AE320622B281AE0058D3BC /* DeviceAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeviceAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C08022FE3CF200FAB518 /* CallDebugNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallDebugNode.swift; sourceTree = ""; }; + D0C9C08122FE3CF200FAB518 /* CallControllerStatusNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerStatusNode.swift; sourceTree = ""; }; + D0C9C08222FE3CF300FAB518 /* CallControllerButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerButton.swift; sourceTree = ""; }; + D0C9C08322FE3CF300FAB518 /* CallController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallController.swift; sourceTree = ""; }; + D0C9C08422FE3CF300FAB518 /* CallControllerButtonsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerButtonsNode.swift; sourceTree = ""; }; + D0C9C08522FE3CF300FAB518 /* CallFeedbackController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallFeedbackController.swift; sourceTree = ""; }; + D0C9C08622FE3CF300FAB518 /* CallControllerKeyPreviewNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerKeyPreviewNode.swift; sourceTree = ""; }; + D0C9C08722FE3CF300FAB518 /* CallRatingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallRatingController.swift; sourceTree = ""; }; + D0C9C08822FE3CF300FAB518 /* CallRouteActionSheetItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallRouteActionSheetItem.swift; sourceTree = ""; }; + D0C9C08922FE3CF300FAB518 /* CallControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerNode.swift; sourceTree = ""; }; + D0C9C09422FE3D1700FAB518 /* FrameworkBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; + D0C9C0CE22FE3E2400FAB518 /* PhotoResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PhotoResources.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C12422FE41C600FAB518 /* CallsEmoji.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CallsEmoji.m; sourceTree = ""; }; + D0C9C12622FE41D200FAB518 /* CallsEmoji.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CallsEmoji.h; sourceTree = ""; }; + D0C9C14A22FE439300FAB518 /* TelegramNotices.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramNotices.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C17A22FEF26C00FAB518 /* CallSuggestTabController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallSuggestTabController.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -41,6 +73,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D0C9C14B22FE439300FAB518 /* TelegramNotices.framework in Frameworks */, + D0C9C0CF22FE3E2400FAB518 /* PhotoResources.framework in Frameworks */, D0750C6A22B28A8000BE5F6E /* UniversalMediaPlayer.framework in Frameworks */, D0AE320722B281AE0058D3BC /* DeviceAccess.framework in Frameworks */, D0AE31C122B274BA0058D3BC /* TelegramPresentationData.framework in Frameworks */, @@ -74,10 +108,24 @@ D0AE30F822B1DC3F0058D3BC /* Sources */ = { isa = PBXGroup; children = ( + D0C9C08322FE3CF300FAB518 /* CallController.swift */, + D0C9C08222FE3CF300FAB518 /* CallControllerButton.swift */, + D0C9C08422FE3CF300FAB518 /* CallControllerButtonsNode.swift */, + D0C9C08622FE3CF300FAB518 /* CallControllerKeyPreviewNode.swift */, + D0C9C08922FE3CF300FAB518 /* CallControllerNode.swift */, + D0C9C08122FE3CF200FAB518 /* CallControllerStatusNode.swift */, + D0C9C08022FE3CF200FAB518 /* CallDebugNode.swift */, + D0C9C08522FE3CF300FAB518 /* CallFeedbackController.swift */, + D0C9C08722FE3CF300FAB518 /* CallRatingController.swift */, + D0C9C08822FE3CF300FAB518 /* CallRouteActionSheetItem.swift */, D0AE310C22B1DD160058D3BC /* CallKitIntegration.swift */, D0AE310A22B1DD160058D3BC /* PresentationCall.swift */, D0AE310922B1DD160058D3BC /* PresentationCallManager.swift */, D0AE310B22B1DD160058D3BC /* PresentationCallToneData.swift */, + D0C9C09422FE3D1700FAB518 /* FrameworkBundle.swift */, + D0C9C17A22FEF26C00FAB518 /* CallSuggestTabController.swift */, + D0C9C12622FE41D200FAB518 /* CallsEmoji.h */, + D0C9C12422FE41C600FAB518 /* CallsEmoji.m */, D0AE30F922B1DC3F0058D3BC /* TelegramCallsUI.h */, ); path = Sources; @@ -86,6 +134,8 @@ D0AE315522B1DEF10058D3BC /* Frameworks */ = { isa = PBXGroup; children = ( + D0C9C14A22FE439300FAB518 /* TelegramNotices.framework */, + D0C9C0CE22FE3E2400FAB518 /* PhotoResources.framework */, D0750C6922B28A8000BE5F6E /* UniversalMediaPlayer.framework */, D0AE320622B281AE0058D3BC /* DeviceAccess.framework */, D0AE31C022B274BA0058D3BC /* TelegramPresentationData.framework */, @@ -104,6 +154,7 @@ buildActionMask = 2147483647; files = ( D0AE30FB22B1DC3F0058D3BC /* TelegramCallsUI.h in Headers */, + D0C9C12722FE41DB00FAB518 /* CallsEmoji.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -140,7 +191,7 @@ TargetAttributes = { D0AE30F522B1DC3F0058D3BC = { CreatedOnToolsVersion = 10.1; - LastSwiftMigration = 1010; + LastSwiftMigration = 1030; }; }; }; @@ -177,9 +228,22 @@ buildActionMask = 2147483647; files = ( D0AE310D22B1DD160058D3BC /* PresentationCallManager.swift in Sources */, + D0C9C08B22FE3CF300FAB518 /* CallControllerStatusNode.swift in Sources */, + D0C9C09122FE3CF300FAB518 /* CallRatingController.swift in Sources */, D0AE310E22B1DD160058D3BC /* PresentationCall.swift in Sources */, + D0C9C08A22FE3CF300FAB518 /* CallDebugNode.swift in Sources */, + D0C9C09322FE3CF300FAB518 /* CallControllerNode.swift in Sources */, + D0C9C08F22FE3CF300FAB518 /* CallFeedbackController.swift in Sources */, + D0C9C09222FE3CF300FAB518 /* CallRouteActionSheetItem.swift in Sources */, + D0C9C17B22FEF26C00FAB518 /* CallSuggestTabController.swift in Sources */, D0AE310F22B1DD160058D3BC /* PresentationCallToneData.swift in Sources */, + D0C9C09022FE3CF300FAB518 /* CallControllerKeyPreviewNode.swift in Sources */, + D0C9C12522FE41C600FAB518 /* CallsEmoji.m in Sources */, D0AE311022B1DD160058D3BC /* CallKitIntegration.swift in Sources */, + D0C9C08E22FE3CF300FAB518 /* CallControllerButtonsNode.swift in Sources */, + D0C9C08C22FE3CF300FAB518 /* CallControllerButton.swift in Sources */, + D0C9C08D22FE3CF300FAB518 /* CallController.swift in Sources */, + D0C9C09522FE3D1700FAB518 /* FrameworkBundle.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/submodules/TelegramNotices/Info.plist b/submodules/TelegramNotices/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/TelegramNotices/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/TelegramUI/TelegramUI/Notices.swift b/submodules/TelegramNotices/Sources/Notices.swift similarity index 78% rename from submodules/TelegramUI/TelegramUI/Notices.swift rename to submodules/TelegramNotices/Sources/Notices.swift index a636676413..2984959039 100644 --- a/submodules/TelegramUI/TelegramUI/Notices.swift +++ b/submodules/TelegramNotices/Sources/Notices.swift @@ -1,18 +1,19 @@ import Foundation import Postbox import SwiftSignalKit +import TelegramPermissions -final class ApplicationSpecificBoolNotice: NoticeEntry { - init() { +public final class ApplicationSpecificBoolNotice: NoticeEntry { + public init() { } - init(decoder: PostboxDecoder) { + public init(decoder: PostboxDecoder) { } - func encode(_ encoder: PostboxEncoder) { + public func encode(_ encoder: PostboxEncoder) { } - func isEqual(to: NoticeEntry) -> Bool { + public func isEqual(to: NoticeEntry) -> Bool { if let _ = to as? ApplicationSpecificBoolNotice { return true } else { @@ -21,22 +22,22 @@ final class ApplicationSpecificBoolNotice: NoticeEntry { } } -final class ApplicationSpecificVariantNotice: NoticeEntry { - let value: Bool +public final class ApplicationSpecificVariantNotice: NoticeEntry { + public let value: Bool - init(value: Bool) { + public init(value: Bool) { self.value = value } - init(decoder: PostboxDecoder) { + public init(decoder: PostboxDecoder) { self.value = decoder.decodeInt32ForKey("v", orElse: 0) != 0 } - func encode(_ encoder: PostboxEncoder) { + public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(self.value ? 1 : 0, forKey: "v") } - func isEqual(to: NoticeEntry) -> Bool { + public func isEqual(to: NoticeEntry) -> Bool { if let to = to as? ApplicationSpecificVariantNotice { if self.value != to.value { return false @@ -48,22 +49,22 @@ final class ApplicationSpecificVariantNotice: NoticeEntry { } } -final class ApplicationSpecificCounterNotice: NoticeEntry { - let value: Int32 +public final class ApplicationSpecificCounterNotice: NoticeEntry { + public let value: Int32 - init(value: Int32) { + public init(value: Int32) { self.value = value } - init(decoder: PostboxDecoder) { + public init(decoder: PostboxDecoder) { self.value = decoder.decodeInt32ForKey("v", orElse: 0) } - func encode(_ encoder: PostboxEncoder) { + public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(self.value, forKey: "v") } - func isEqual(to: NoticeEntry) -> Bool { + public func isEqual(to: NoticeEntry) -> Bool { if let to = to as? ApplicationSpecificCounterNotice { if self.value != to.value { return false @@ -75,22 +76,22 @@ final class ApplicationSpecificCounterNotice: NoticeEntry { } } -final class ApplicationSpecificTimestampNotice: NoticeEntry { - let value: Int32 +public final class ApplicationSpecificTimestampNotice: NoticeEntry { + public let value: Int32 - init(value: Int32) { + public init(value: Int32) { self.value = value } - init(decoder: PostboxDecoder) { + public init(decoder: PostboxDecoder) { self.value = decoder.decodeInt32ForKey("v", orElse: 0) } - func encode(_ encoder: PostboxEncoder) { + public func encode(_ encoder: PostboxEncoder) { encoder.encodeInt32(self.value, forKey: "v") } - func isEqual(to: NoticeEntry) -> Bool { + public func isEqual(to: NoticeEntry) -> Bool { if let to = to as? ApplicationSpecificTimestampNotice { if self.value != to.value { return false @@ -141,14 +142,14 @@ private enum ApplicationSpecificGlobalNotice: Int32 { private extension PermissionKind { var noticeKey: NoticeEntryKey? { switch self { - case .contacts: - return ApplicationSpecificNoticeKeys.contactsPermissionWarning() - case .notifications: - return ApplicationSpecificNoticeKeys.notificationsPermissionWarning() - case .cellularData: - return ApplicationSpecificNoticeKeys.cellularDataPermissionWarning() - default: - return nil + case .contacts: + return ApplicationSpecificNoticeKeys.contactsPermissionWarning() + case .notifications: + return ApplicationSpecificNoticeKeys.notificationsPermissionWarning() + case .cellularData: + return ApplicationSpecificNoticeKeys.cellularDataPermissionWarning() + default: + return nil } } } @@ -230,17 +231,17 @@ private struct ApplicationSpecificNoticeKeys { } public struct ApplicationSpecificNotice { - static func irrelevantPeerGeoReportKey(peerId: PeerId) -> NoticeEntryKey { + public static func irrelevantPeerGeoReportKey(peerId: PeerId) -> NoticeEntryKey { return ApplicationSpecificNoticeKeys.irrelevantPeerGeoNotice(peerId: peerId) } - static func setIrrelevantPeerGeoReport(postbox: Postbox, peerId: PeerId) -> Signal { + public static func setIrrelevantPeerGeoReport(postbox: Postbox, peerId: PeerId) -> Signal { return postbox.transaction { transaction -> Void in transaction.setNoticeEntry(key: ApplicationSpecificNoticeKeys.irrelevantPeerGeoNotice(peerId: peerId), value: ApplicationSpecificBoolNotice()) } } - static func getBotPaymentLiability(accountManager: AccountManager, peerId: PeerId) -> Signal { + public static func getBotPaymentLiability(accountManager: AccountManager, peerId: PeerId) -> Signal { return accountManager.transaction { transaction -> Bool in if let _ = transaction.getNotice(ApplicationSpecificNoticeKeys.botPaymentLiabilityNotice(peerId: peerId)) as? ApplicationSpecificBoolNotice { return true @@ -250,13 +251,13 @@ public struct ApplicationSpecificNotice { } } - static func setBotPaymentLiability(accountManager: AccountManager, peerId: PeerId) -> Signal { + public static func setBotPaymentLiability(accountManager: AccountManager, peerId: PeerId) -> Signal { return accountManager.transaction { transaction -> Void in transaction.setNotice(ApplicationSpecificNoticeKeys.botPaymentLiabilityNotice(peerId: peerId), ApplicationSpecificBoolNotice()) } } - static func getInlineBotLocationRequest(accountManager: AccountManager, peerId: PeerId) -> Signal { + public static func getInlineBotLocationRequest(accountManager: AccountManager, peerId: PeerId) -> Signal { return accountManager.transaction { transaction -> Int32? in if let notice = transaction.getNotice(ApplicationSpecificNoticeKeys.inlineBotLocationRequestNotice(peerId: peerId)) as? ApplicationSpecificTimestampNotice { return notice.value @@ -266,13 +267,13 @@ public struct ApplicationSpecificNotice { } } - static func setInlineBotLocationRequest(accountManager: AccountManager, peerId: PeerId, value: Int32) -> Signal { + public static func setInlineBotLocationRequest(accountManager: AccountManager, peerId: PeerId, value: Int32) -> Signal { return accountManager.transaction { transaction -> Void in transaction.setNotice(ApplicationSpecificNoticeKeys.inlineBotLocationRequestNotice(peerId: peerId), ApplicationSpecificTimestampNotice(value: value)) } } - static func getSecretChatInlineBotUsage(accountManager: AccountManager) -> Signal { + public static func getSecretChatInlineBotUsage(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Bool in if let _ = transaction.getNotice(ApplicationSpecificNoticeKeys.secretChatInlineBotUsage()) as? ApplicationSpecificBoolNotice { return true @@ -282,7 +283,7 @@ public struct ApplicationSpecificNotice { } } - static func setSecretChatInlineBotUsage(accountManager: AccountManager) -> Signal { + public static func setSecretChatInlineBotUsage(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Void in transaction.setNotice(ApplicationSpecificNoticeKeys.secretChatInlineBotUsage(), ApplicationSpecificBoolNotice()) } @@ -292,7 +293,7 @@ public struct ApplicationSpecificNotice { transaction.setNotice(ApplicationSpecificNoticeKeys.secretChatInlineBotUsage(), ApplicationSpecificBoolNotice()) } - static func getSecretChatLinkPreviews(accountManager: AccountManager) -> Signal { + public static func getSecretChatLinkPreviews(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Bool? in if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.secretChatLinkPreviews()) as? ApplicationSpecificVariantNotice { return value.value @@ -302,7 +303,7 @@ public struct ApplicationSpecificNotice { } } - static func getSecretChatLinkPreviews(_ entry: NoticeEntry) -> Bool? { + public static func getSecretChatLinkPreviews(_ entry: NoticeEntry) -> Bool? { if let value = entry as? ApplicationSpecificVariantNotice { return value.value } else { @@ -310,7 +311,7 @@ public struct ApplicationSpecificNotice { } } - static func setSecretChatLinkPreviews(accountManager: AccountManager, value: Bool) -> Signal { + public static func setSecretChatLinkPreviews(accountManager: AccountManager, value: Bool) -> Signal { return accountManager.transaction { transaction -> Void in transaction.setNotice(ApplicationSpecificNoticeKeys.secretChatLinkPreviews(), ApplicationSpecificVariantNotice(value: value)) } @@ -320,11 +321,11 @@ public struct ApplicationSpecificNotice { transaction.setNotice(ApplicationSpecificNoticeKeys.secretChatLinkPreviews(), ApplicationSpecificVariantNotice(value: value)) } - static func secretChatLinkPreviewsKey() -> NoticeEntryKey { + public static func secretChatLinkPreviewsKey() -> NoticeEntryKey { return ApplicationSpecificNoticeKeys.secretChatLinkPreviews() } - static func getChatMediaMediaRecordingTips(accountManager: AccountManager) -> Signal { + public static func getChatMediaMediaRecordingTips(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Int32 in if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.chatMediaMediaRecordingTips()) as? ApplicationSpecificCounterNotice { return value.value @@ -334,7 +335,7 @@ public struct ApplicationSpecificNotice { } } - static func incrementChatMediaMediaRecordingTips(accountManager: AccountManager, count: Int32 = 1) -> Signal { + public static func incrementChatMediaMediaRecordingTips(accountManager: AccountManager, count: Int32 = 1) -> Signal { return accountManager.transaction { transaction -> Void in var currentValue: Int32 = 0 if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.chatMediaMediaRecordingTips()) as? ApplicationSpecificCounterNotice { @@ -346,7 +347,7 @@ public struct ApplicationSpecificNotice { } } - static func getArchiveChatTips(accountManager: AccountManager) -> Signal { + public static func getArchiveChatTips(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Int32 in if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.archiveChatTips()) as? ApplicationSpecificCounterNotice { return value.value @@ -356,7 +357,7 @@ public struct ApplicationSpecificNotice { } } - static func incrementArchiveChatTips(accountManager: AccountManager, count: Int = 1) -> Signal { + public static func incrementArchiveChatTips(accountManager: AccountManager, count: Int = 1) -> Signal { return accountManager.transaction { transaction -> Int in var currentValue: Int32 = 0 if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.archiveChatTips()) as? ApplicationSpecificCounterNotice { @@ -375,11 +376,11 @@ public struct ApplicationSpecificNotice { transaction.setNotice(ApplicationSpecificNoticeKeys.archiveIntroDismissed(), ApplicationSpecificVariantNotice(value: value)) } - static func archiveIntroDismissedKey() -> NoticeEntryKey { + public static func archiveIntroDismissedKey() -> NoticeEntryKey { return ApplicationSpecificNoticeKeys.archiveIntroDismissed() } - static func getProfileCallTips(accountManager: AccountManager) -> Signal { + public static func getProfileCallTips(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Int32 in if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.profileCallTips()) as? ApplicationSpecificCounterNotice { return value.value @@ -389,7 +390,7 @@ public struct ApplicationSpecificNotice { } } - static func incrementProfileCallTips(accountManager: AccountManager, count: Int32 = 1) -> Signal { + public static func incrementProfileCallTips(accountManager: AccountManager, count: Int32 = 1) -> Signal { return accountManager.transaction { transaction -> Void in var currentValue: Int32 = 0 if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.profileCallTips()) as? ApplicationSpecificCounterNotice { @@ -401,7 +402,7 @@ public struct ApplicationSpecificNotice { } } - static func getSetPublicChannelLink(accountManager: AccountManager) -> Signal { + public static func getSetPublicChannelLink(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Bool in if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.profileCallTips()) as? ApplicationSpecificCounterNotice { return value.value < 1 @@ -411,13 +412,13 @@ public struct ApplicationSpecificNotice { } } - static func markAsSeenSetPublicChannelLink(accountManager: AccountManager) -> Signal { + public static func markAsSeenSetPublicChannelLink(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Void in transaction.setNotice(ApplicationSpecificNoticeKeys.profileCallTips(), ApplicationSpecificCounterNotice(value: 1)) } } - static func getProxyAdsAcknowledgment(accountManager: AccountManager) -> Signal { + public static func getProxyAdsAcknowledgment(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Bool in if let _ = transaction.getNotice(ApplicationSpecificNoticeKeys.proxyAdsAcknowledgment()) as? ApplicationSpecificBoolNotice { return true @@ -427,13 +428,13 @@ public struct ApplicationSpecificNotice { } } - static func setProxyAdsAcknowledgment(accountManager: AccountManager) -> Signal { + public static func setProxyAdsAcknowledgment(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Void in transaction.setNotice(ApplicationSpecificNoticeKeys.proxyAdsAcknowledgment(), ApplicationSpecificBoolNotice()) } } - static func getPasscodeLockTips(accountManager: AccountManager) -> Signal { + public static func getPasscodeLockTips(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Bool in if let _ = transaction.getNotice(ApplicationSpecificNoticeKeys.passcodeLockTips()) as? ApplicationSpecificBoolNotice { return true @@ -443,7 +444,7 @@ public struct ApplicationSpecificNotice { } } - static func setPasscodeLockTips(accountManager: AccountManager) -> Signal { + public static func setPasscodeLockTips(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Void in transaction.setNotice(ApplicationSpecificNoticeKeys.passcodeLockTips(), ApplicationSpecificBoolNotice()) } @@ -459,7 +460,7 @@ public struct ApplicationSpecificNotice { } let _ = accountManager.transaction { transaction -> Void in transaction.setNotice(noticeKey, ApplicationSpecificTimestampNotice(value: value)) - }.start() + }.start() } public static func getTimestampValue(_ entry: NoticeEntry) -> Int32? { @@ -470,7 +471,7 @@ public struct ApplicationSpecificNotice { } } - static func getVolumeButtonToUnmute(accountManager: AccountManager) -> Signal { + public static func getVolumeButtonToUnmute(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Bool in if let _ = transaction.getNotice(ApplicationSpecificNoticeKeys.volumeButtonToUnmuteTip()) as? ApplicationSpecificBoolNotice { return true @@ -483,10 +484,10 @@ public struct ApplicationSpecificNotice { public static func setVolumeButtonToUnmute(accountManager: AccountManager) { let _ = accountManager.transaction { transaction -> Void in transaction.setNotice(ApplicationSpecificNoticeKeys.volumeButtonToUnmuteTip(), ApplicationSpecificBoolNotice()) - }.start() + }.start() } - static func getCallsTabTip(accountManager: AccountManager) -> Signal { + public static func getCallsTabTip(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Int32 in if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.callsTabTip()) as? ApplicationSpecificCounterNotice { return value.value @@ -496,7 +497,7 @@ public struct ApplicationSpecificNotice { } } - static func incrementCallsTabTips(accountManager: AccountManager, count: Int = 1) -> Signal { + public static func incrementCallsTabTips(accountManager: AccountManager, count: Int = 1) -> Signal { return accountManager.transaction { transaction -> Int in var currentValue: Int32 = 0 if let value = transaction.getNotice(ApplicationSpecificNoticeKeys.callsTabTip()) as? ApplicationSpecificCounterNotice { @@ -511,13 +512,13 @@ public struct ApplicationSpecificNotice { } } - static func setCallsTabTip(accountManager: AccountManager) -> Signal { + public static func setCallsTabTip(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Void in transaction.setNotice(ApplicationSpecificNoticeKeys.callsTabTip(), ApplicationSpecificBoolNotice()) } } - - static func reset(accountManager: AccountManager) -> Signal { + + public static func reset(accountManager: AccountManager) -> Signal { return accountManager.transaction { transaction -> Void in } } diff --git a/submodules/TelegramNotices/Sources/TelegramNotices.h b/submodules/TelegramNotices/Sources/TelegramNotices.h new file mode 100644 index 0000000000..b500e6e0ee --- /dev/null +++ b/submodules/TelegramNotices/Sources/TelegramNotices.h @@ -0,0 +1,19 @@ +// +// TelegramNotices.h +// TelegramNotices +// +// Created by Peter on 8/10/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for TelegramNotices. +FOUNDATION_EXPORT double TelegramNoticesVersionNumber; + +//! Project version string for TelegramNotices. +FOUNDATION_EXPORT const unsigned char TelegramNoticesVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramNotices/TelegramNotices_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramNotices/TelegramNotices_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..4fca8032b9 --- /dev/null +++ b/submodules/TelegramNotices/TelegramNotices_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,555 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C13722FE42B200FAB518 /* TelegramNotices.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C13522FE42B200FAB518 /* TelegramNotices.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C14222FE430500FAB518 /* Notices.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C14122FE430500FAB518 /* Notices.swift */; }; + D0C9C14522FE437C00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C14422FE437C00FAB518 /* Foundation.framework */; }; + D0C9C14722FE437F00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C14622FE437F00FAB518 /* Postbox.framework */; }; + D0C9C14922FE438300FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C14822FE438300FAB518 /* SwiftSignalKit.framework */; }; + D0C9C17922FEF23100FAB518 /* TelegramPermissions.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C17822FEF23100FAB518 /* TelegramPermissions.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C13222FE42B200FAB518 /* TelegramNotices.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TelegramNotices.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C13522FE42B200FAB518 /* TelegramNotices.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramNotices.h; sourceTree = ""; }; + D0C9C13622FE42B200FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C14122FE430500FAB518 /* Notices.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Notices.swift; sourceTree = ""; }; + D0C9C14422FE437C00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9C14622FE437F00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C14822FE438300FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C17822FEF23100FAB518 /* TelegramPermissions.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPermissions.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C12F22FE42B200FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C17922FEF23100FAB518 /* TelegramPermissions.framework in Frameworks */, + D0C9C14922FE438300FAB518 /* SwiftSignalKit.framework in Frameworks */, + D0C9C14722FE437F00FAB518 /* Postbox.framework in Frameworks */, + D0C9C14522FE437C00FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C12822FE42B200FAB518 = { + isa = PBXGroup; + children = ( + D0C9C13622FE42B200FAB518 /* Info.plist */, + D0C9C13422FE42B200FAB518 /* Sources */, + D0C9C13322FE42B200FAB518 /* Products */, + D0C9C14322FE437C00FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C13322FE42B200FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C13222FE42B200FAB518 /* TelegramNotices.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C13422FE42B200FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C14122FE430500FAB518 /* Notices.swift */, + D0C9C13522FE42B200FAB518 /* TelegramNotices.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C14322FE437C00FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C17822FEF23100FAB518 /* TelegramPermissions.framework */, + D0C9C14822FE438300FAB518 /* SwiftSignalKit.framework */, + D0C9C14622FE437F00FAB518 /* Postbox.framework */, + D0C9C14422FE437C00FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C12D22FE42B200FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C13722FE42B200FAB518 /* TelegramNotices.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C13122FE42B200FAB518 /* TelegramNotices */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C13A22FE42B200FAB518 /* Build configuration list for PBXNativeTarget "TelegramNotices" */; + buildPhases = ( + D0C9C12D22FE42B200FAB518 /* Headers */, + D0C9C12E22FE42B200FAB518 /* Sources */, + D0C9C12F22FE42B200FAB518 /* Frameworks */, + D0C9C13022FE42B200FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TelegramNotices; + productName = TelegramNotices; + productReference = D0C9C13222FE42B200FAB518 /* TelegramNotices.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C12922FE42B200FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C13122FE42B200FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C12C22FE42B200FAB518 /* Build configuration list for PBXProject "TelegramNotices_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C12822FE42B200FAB518; + productRefGroup = D0C9C13322FE42B200FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C13122FE42B200FAB518 /* TelegramNotices */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C13022FE42B200FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C12E22FE42B200FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C14222FE430500FAB518 /* Notices.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C13822FE42B200FAB518 /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0C9C13922FE42B200FAB518 /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C13B22FE42B200FAB518 /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramNotices; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0C9C13C22FE42B200FAB518 /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramNotices; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C13D22FE42E300FAB518 /* DebugHockeyapp */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugHockeyapp; + }; + D0C9C13E22FE42E300FAB518 /* DebugHockeyapp */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramNotices; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugHockeyapp; + }; + D0C9C13F22FE42F000FAB518 /* ReleaseHockeyappInternal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseHockeyappInternal; + }; + D0C9C14022FE42F000FAB518 /* ReleaseHockeyappInternal */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramNotices; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseHockeyappInternal; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0C9C12C22FE42B200FAB518 /* Build configuration list for PBXProject "TelegramNotices_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C13822FE42B200FAB518 /* DebugAppStoreLLC */, + D0C9C13D22FE42E300FAB518 /* DebugHockeyapp */, + D0C9C13922FE42B200FAB518 /* ReleaseAppStoreLLC */, + D0C9C13F22FE42F000FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C13A22FE42B200FAB518 /* Build configuration list for PBXNativeTarget "TelegramNotices" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C13B22FE42B200FAB518 /* DebugAppStoreLLC */, + D0C9C13E22FE42E300FAB518 /* DebugHockeyapp */, + D0C9C13C22FE42B200FAB518 /* ReleaseAppStoreLLC */, + D0C9C14022FE42F000FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C12922FE42B200FAB518 /* Project object */; +} diff --git a/submodules/TelegramPermissions/Info.plist b/submodules/TelegramPermissions/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/TelegramPermissions/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/TelegramUI/TelegramUI/Permission.swift b/submodules/TelegramPermissions/Sources/Permission.swift similarity index 97% rename from submodules/TelegramUI/TelegramUI/Permission.swift rename to submodules/TelegramPermissions/Sources/Permission.swift index e81d9ed7f8..dc7a30d5cc 100644 --- a/submodules/TelegramUI/TelegramUI/Permission.swift +++ b/submodules/TelegramPermissions/Sources/Permission.swift @@ -19,7 +19,7 @@ public enum PermissionRequestStatus { case unreachable case allowed - init(accessType: AccessType) { + public init(accessType: AccessType) { switch accessType { case .notDetermined: self = .requestable @@ -40,7 +40,7 @@ public enum PermissionState: Equatable { case cellularData(status: PermissionRequestStatus) case nearbyLocation(status: PermissionRequestStatus) - var kind: PermissionKind { + public var kind: PermissionKind { switch self { case .contacts: return .contacts diff --git a/submodules/TelegramPermissions/Sources/TelegramPermissions.h b/submodules/TelegramPermissions/Sources/TelegramPermissions.h new file mode 100644 index 0000000000..06fcbc7884 --- /dev/null +++ b/submodules/TelegramPermissions/Sources/TelegramPermissions.h @@ -0,0 +1,19 @@ +// +// TelegramPermissions.h +// TelegramPermissions +// +// Created by Peter on 8/10/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for TelegramPermissions. +FOUNDATION_EXPORT double TelegramPermissionsVersionNumber; + +//! Project version string for TelegramPermissions. +FOUNDATION_EXPORT const unsigned char TelegramPermissionsVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TelegramPermissions/TelegramPermissions_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramPermissions/TelegramPermissions_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..564a4ab7ba --- /dev/null +++ b/submodules/TelegramPermissions/TelegramPermissions_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,563 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C15D22FE43E300FAB518 /* TelegramPermissions.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C15B22FE43E300FAB518 /* TelegramPermissions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C16422FEF1A700FAB518 /* Permission.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C16322FEF1A700FAB518 /* Permission.swift */; }; + D0C9C16B22FEF1F500FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C16A22FEF1F500FAB518 /* Foundation.framework */; }; + D0C9C16D22FEF1F900FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C16C22FEF1F900FAB518 /* SwiftSignalKit.framework */; }; + D0C9C16F22FEF1FC00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C16E22FEF1FC00FAB518 /* Postbox.framework */; }; + D0C9C17122FEF1FF00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C17022FEF1FF00FAB518 /* TelegramCore.framework */; }; + D0C9C17322FEF20500FAB518 /* DeviceAccess.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C17222FEF20500FAB518 /* DeviceAccess.framework */; }; + D0C9C17522FEF20B00FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C17422FEF20B00FAB518 /* AccountContext.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C15822FE43E300FAB518 /* TelegramPermissions.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TelegramPermissions.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C15B22FE43E300FAB518 /* TelegramPermissions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramPermissions.h; sourceTree = ""; }; + D0C9C15C22FE43E300FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C16322FEF1A700FAB518 /* Permission.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Permission.swift; sourceTree = ""; }; + D0C9C16A22FEF1F500FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D0C9C16C22FEF1F900FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C16E22FEF1FC00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C17022FEF1FF00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C17222FEF20500FAB518 /* DeviceAccess.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeviceAccess.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C17422FEF20B00FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C15522FE43E300FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C17522FEF20B00FAB518 /* AccountContext.framework in Frameworks */, + D0C9C17322FEF20500FAB518 /* DeviceAccess.framework in Frameworks */, + D0C9C17122FEF1FF00FAB518 /* TelegramCore.framework in Frameworks */, + D0C9C16F22FEF1FC00FAB518 /* Postbox.framework in Frameworks */, + D0C9C16D22FEF1F900FAB518 /* SwiftSignalKit.framework in Frameworks */, + D0C9C16B22FEF1F500FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C14E22FE43E300FAB518 = { + isa = PBXGroup; + children = ( + D0C9C15C22FE43E300FAB518 /* Info.plist */, + D0C9C15A22FE43E300FAB518 /* Sources */, + D0C9C15922FE43E300FAB518 /* Products */, + D0C9C16922FEF1F500FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C15922FE43E300FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C15822FE43E300FAB518 /* TelegramPermissions.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C15A22FE43E300FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C16322FEF1A700FAB518 /* Permission.swift */, + D0C9C15B22FE43E300FAB518 /* TelegramPermissions.h */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C16922FEF1F500FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C17422FEF20B00FAB518 /* AccountContext.framework */, + D0C9C17222FEF20500FAB518 /* DeviceAccess.framework */, + D0C9C17022FEF1FF00FAB518 /* TelegramCore.framework */, + D0C9C16E22FEF1FC00FAB518 /* Postbox.framework */, + D0C9C16C22FEF1F900FAB518 /* SwiftSignalKit.framework */, + D0C9C16A22FEF1F500FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C15322FE43E300FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C15D22FE43E300FAB518 /* TelegramPermissions.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C15722FE43E300FAB518 /* TelegramPermissions */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C16022FE43E300FAB518 /* Build configuration list for PBXNativeTarget "TelegramPermissions" */; + buildPhases = ( + D0C9C15322FE43E300FAB518 /* Headers */, + D0C9C15422FE43E300FAB518 /* Sources */, + D0C9C15522FE43E300FAB518 /* Frameworks */, + D0C9C15622FE43E300FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TelegramPermissions; + productName = TelegramPermissions; + productReference = D0C9C15822FE43E300FAB518 /* TelegramPermissions.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C14F22FE43E300FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C15722FE43E300FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C15222FE43E300FAB518 /* Build configuration list for PBXProject "TelegramPermissions_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C14E22FE43E300FAB518; + productRefGroup = D0C9C15922FE43E300FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C15722FE43E300FAB518 /* TelegramPermissions */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C15622FE43E300FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C15422FE43E300FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C16422FEF1A700FAB518 /* Permission.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C15E22FE43E300FAB518 /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0C9C15F22FE43E300FAB518 /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C16122FE43E300FAB518 /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramPermissions; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0C9C16222FE43E300FAB518 /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramPermissions; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C16522FEF1C400FAB518 /* DebugHockeyapp */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugHockeyapp; + }; + D0C9C16622FEF1C400FAB518 /* DebugHockeyapp */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramPermissions; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugHockeyapp; + }; + D0C9C16722FEF1CF00FAB518 /* ReleaseHockeyappInternal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseHockeyappInternal; + }; + D0C9C16822FEF1CF00FAB518 /* ReleaseHockeyappInternal */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TelegramPermissions; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseHockeyappInternal; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0C9C15222FE43E300FAB518 /* Build configuration list for PBXProject "TelegramPermissions_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C15E22FE43E300FAB518 /* DebugAppStoreLLC */, + D0C9C16522FEF1C400FAB518 /* DebugHockeyapp */, + D0C9C15F22FE43E300FAB518 /* ReleaseAppStoreLLC */, + D0C9C16722FEF1CF00FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C16022FE43E300FAB518 /* Build configuration list for PBXNativeTarget "TelegramPermissions" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C16122FE43E300FAB518 /* DebugAppStoreLLC */, + D0C9C16622FEF1C400FAB518 /* DebugHockeyapp */, + D0C9C16222FE43E300FAB518 /* ReleaseAppStoreLLC */, + D0C9C16822FEF1CF00FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C14F22FE43E300FAB518 /* Project object */; +} diff --git a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift index 518b98ff6d..f1b855abc9 100644 --- a/submodules/TelegramUI/TelegramUI/ApplicationContext.swift +++ b/submodules/TelegramUI/TelegramUI/ApplicationContext.swift @@ -11,6 +11,8 @@ import DeviceAccess import TelegramUpdateUI import AccountContext import AlertUI +import TelegramPermissions +import TelegramNotices func isAccessLocked(data: PostboxAccessChallengeData, at timestamp: Int32) -> Bool { if data.isLockable, let autolockDeadline = data.autolockDeadline, autolockDeadline <= timestamp { diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutControllerNode.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutControllerNode.swift index be7ad2cad2..6f597baf93 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutControllerNode.swift @@ -11,6 +11,7 @@ import TelegramUIPrivateModule import ItemListUI import AccountContext import AlertUI +import TelegramNotices final class BotCheckoutControllerArguments { fileprivate let account: Account diff --git a/submodules/TelegramUI/TelegramUI/BotCheckoutHeaderItem.swift b/submodules/TelegramUI/TelegramUI/BotCheckoutHeaderItem.swift index 4d9d896cf2..76eda283df 100644 --- a/submodules/TelegramUI/TelegramUI/BotCheckoutHeaderItem.swift +++ b/submodules/TelegramUI/TelegramUI/BotCheckoutHeaderItem.swift @@ -6,6 +6,7 @@ import SwiftSignalKit import TelegramCore import TelegramPresentationData import ItemListUI +import PhotoResources class BotCheckoutHeaderItem: ListViewItem, ItemListItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/CallListControllerNode.swift b/submodules/TelegramUI/TelegramUI/CallListControllerNode.swift index 554119e450..d97b02deee 100644 --- a/submodules/TelegramUI/TelegramUI/CallListControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/CallListControllerNode.swift @@ -9,6 +9,7 @@ import TelegramPresentationData import TelegramUIPreferences import ItemListUI import AccountContext +import TelegramNotices private struct CallListNodeListViewTransition { let callListView: CallListNodeView diff --git a/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift b/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift index 3fbe1073a5..f2e7ee0b15 100644 --- a/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift +++ b/submodules/TelegramUI/TelegramUI/ChannelVisibilityController.swift @@ -11,6 +11,7 @@ import OverlayStatusController import AccountContext import ShareController import AlertUI +import TelegramNotices private final class ChannelVisibilityControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChatBubbleVideoDecoration.swift b/submodules/TelegramUI/TelegramUI/ChatBubbleVideoDecoration.swift index 343f703fd5..fd594d3b3a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatBubbleVideoDecoration.swift +++ b/submodules/TelegramUI/TelegramUI/ChatBubbleVideoDecoration.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import UniversalMediaPlayer import AccountContext +import PhotoResources final class ChatBubbleVideoDecoration: UniversalVideoDecoration { private let nativeSize: CGSize diff --git a/submodules/TelegramUI/TelegramUI/ChatContextResultPeekContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatContextResultPeekContentNode.swift index ffebcec6b4..75da7abeaa 100644 --- a/submodules/TelegramUI/TelegramUI/ChatContextResultPeekContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatContextResultPeekContentNode.swift @@ -6,6 +6,7 @@ import Postbox import TelegramCore import SwiftSignalKit import AVFoundation +import PhotoResources final class ChatContextResultPeekContent: PeekControllerContent { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift index 1187eb8c8d..e1c9258147 100644 --- a/submodules/TelegramUI/TelegramUI/ChatController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatController.swift @@ -24,6 +24,8 @@ import ContextUI import ComposePollUI import AlertUI import UndoUI +import TelegramCallsUI +import TelegramNotices public enum ChatControllerPeekActions { case standard diff --git a/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift index 0836c47e11..9e6f72958a 100644 --- a/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatControllerNode.swift @@ -9,6 +9,7 @@ import TelegramPresentationData import TelegramUIPreferences import TextFormat import AccountContext +import TelegramNotices private final class ChatControllerNodeView: UITracingLayerView, WindowInputAccessoryHeightProvider, PreviewingHostView { var inputAccessoryHeight: (() -> CGFloat)? diff --git a/submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift b/submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift index 9f531c9092..4c2a217f7d 100644 --- a/submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatImageGalleryItem.swift @@ -8,6 +8,7 @@ import TelegramCore import TelegramPresentationData import AccountContext import RadialStatusNode +import PhotoResources enum ChatMediaGalleryThumbnail: Equatable { case image(ImageMediaReference) diff --git a/submodules/TelegramUI/TelegramUI/ChatLinkPreview.swift b/submodules/TelegramUI/TelegramUI/ChatLinkPreview.swift index 8d37a4730b..45cf4ee76c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatLinkPreview.swift +++ b/submodules/TelegramUI/TelegramUI/ChatLinkPreview.swift @@ -1,6 +1,7 @@ import Foundation import Postbox import SwiftSignalKit +import TelegramNotices final class InteractiveChatLinkPreviewsResult { let f: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChatListController.swift b/submodules/TelegramUI/TelegramUI/ChatListController.swift index 21a9024360..ab7e1f2f56 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListController.swift @@ -11,6 +11,7 @@ import OverlayStatusController import AccountContext import AlertUI import UndoUI +import TelegramNotices public func useSpecialTabBarIcons() -> Bool { return (Date(timeIntervalSince1970: 1545642000)...Date(timeIntervalSince1970: 1546387200)).contains(Date()) diff --git a/submodules/TelegramUI/TelegramUI/ChatListItem.swift b/submodules/TelegramUI/TelegramUI/ChatListItem.swift index 45c48ad9f1..1c55ff01fa 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListItem.swift @@ -13,6 +13,7 @@ import AccountContext import PeerOnlineMarkerNode import LocalizedPeerData import PeerPresenceStatusManager +import PhotoResources enum ChatListItemContent { case peer(message: Message?, peer: RenderedPeer, combinedReadState: CombinedPeerReadState?, notificationSettings: PeerNotificationSettings?, presence: PeerPresence?, summaryInfo: ChatListMessageTagSummaryInfo, embeddedState: PeerChatListEmbeddedInterfaceState?, inputActivities: [(Peer, PeerInputActivity)]?, isAd: Bool, ignoreUnreadBadge: Bool) diff --git a/submodules/TelegramUI/TelegramUI/ChatListNode.swift b/submodules/TelegramUI/TelegramUI/ChatListNode.swift index 566be61d57..e08229b790 100644 --- a/submodules/TelegramUI/TelegramUI/ChatListNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatListNode.swift @@ -8,6 +8,7 @@ import Postbox import TelegramPresentationData import TelegramUIPreferences import AccountContext +import TelegramNotices public struct ChatListNodePeersFilter: OptionSet { public var rawValue: Int32 diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift index 85f8f9814d..05a41c77d5 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageActionItemNode.swift @@ -10,6 +10,7 @@ import TelegramUIPreferences import TextFormat import LocalizedPeerData import UrlEscaping +import PhotoResources private let titleFont = Font.regular(13.0) private let titleBoldFont = Font.bold(13.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift index 928a1c8605..4242e47eed 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageAttachedContentNode.swift @@ -11,6 +11,7 @@ import TelegramUIPreferences import TextFormat import AccountContext import UrlEscaping +import PhotoResources private let titleFont = Font.semibold(15.0) private let textFont = Font.regular(15.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveFileNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveFileNode.swift index b049b6377a..7c3b78467c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveFileNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveFileNode.swift @@ -9,6 +9,7 @@ import UniversalMediaPlayer import TelegramPresentationData import AccountContext import RadialStatusNode +import PhotoResources private struct FetchControls { let fetch: () -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveInstantVideoNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveInstantVideoNode.swift index b77515eed7..38fc887aab 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveInstantVideoNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveInstantVideoNode.swift @@ -9,6 +9,7 @@ import UniversalMediaPlayer import TelegramPresentationData import AccountContext import RadialStatusNode +import PhotoResources struct ChatMessageInstantVideoItemLayoutResult { let contentSize: CGSize diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift index 1b8e33e938..f92661e87c 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageInteractiveMediaNode.swift @@ -12,6 +12,7 @@ import TextFormat import AccountContext import RadialStatusNode import StickerResources +import PhotoResources private struct FetchControls { let fetch: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageMapBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageMapBubbleContentNode.swift index 4e0700c33c..2bd08b7d8e 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageMapBubbleContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageMapBubbleContentNode.swift @@ -6,6 +6,8 @@ import SwiftSignalKit import Postbox import TelegramCore import LiveLocationTimerNode +import PhotoResources +import MediaResources private let titleFont = Font.medium(14.0) private let liveTitleFont = Font.medium(16.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageNotificationItem.swift b/submodules/TelegramUI/TelegramUI/ChatMessageNotificationItem.swift index 56190ac9d4..1ec6417a4f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageNotificationItem.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageNotificationItem.swift @@ -11,6 +11,7 @@ import AvatarNode import AccountContext import LocalizedPeerData import StickerResources +import PhotoResources public final class ChatMessageNotificationItem: NotificationItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageReplyInfoNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageReplyInfoNode.swift index baedb480e8..eaa7e7e7ce 100644 --- a/submodules/TelegramUI/TelegramUI/ChatMessageReplyInfoNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatMessageReplyInfoNode.swift @@ -8,6 +8,7 @@ import SwiftSignalKit import TelegramPresentationData import AccountContext import LocalizedPeerData +import PhotoResources private let titleFont = Font.medium(14.0) private let textFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/ChatPinnedMessageTitlePanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatPinnedMessageTitlePanelNode.swift index 14cee5249f..c89c2c2981 100644 --- a/submodules/TelegramUI/TelegramUI/ChatPinnedMessageTitlePanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatPinnedMessageTitlePanelNode.swift @@ -9,6 +9,7 @@ import TelegramPresentationData import TelegramUIPreferences import AccountContext import StickerResources +import PhotoResources final class ChatPinnedMessageTitlePanelNode: ChatTitleAccessoryPanelNode { private let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift b/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift index ad5e24c3ba..220eaaeeda 100644 --- a/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ChatTextInputPanelNode.swift @@ -9,6 +9,7 @@ import TelegramPresentationData import TextFormat import AccountContext import TouchDownGesture +import ImageTransparency private let searchLayoutProgressImage = generateImage(CGSize(width: 22.0, height: 22.0), contextGenerator: { size, context in context.clear(CGRect(origin: CGPoint(), size: size)) diff --git a/submodules/TelegramUI/TelegramUI/ContactListNode.swift b/submodules/TelegramUI/TelegramUI/ContactListNode.swift index c9b2b8b6f3..23ab8eb2e3 100644 --- a/submodules/TelegramUI/TelegramUI/ContactListNode.swift +++ b/submodules/TelegramUI/TelegramUI/ContactListNode.swift @@ -12,6 +12,8 @@ import MergeLists import ItemListUI import MediaResources import AccountContext +import TelegramPermissions +import TelegramNotices private let dropDownIcon = { () -> UIImage in UIGraphicsBeginImageContextWithOptions(CGSize(width: 12.0, height: 12.0), false, 0.0) diff --git a/submodules/TelegramUI/TelegramUI/ContactsController.swift b/submodules/TelegramUI/TelegramUI/ContactsController.swift index 8f64469666..28a26e95ad 100644 --- a/submodules/TelegramUI/TelegramUI/ContactsController.swift +++ b/submodules/TelegramUI/TelegramUI/ContactsController.swift @@ -10,6 +10,8 @@ import TelegramUIPreferences import DeviceAccess import AccountContext import AlertUI +import TelegramPermissions +import TelegramNotices private func fixListNodeScrolling(_ listNode: ListView, searchNode: NavigationBarSearchContentNode) -> Bool { if searchNode.expansionProgress > 0.0 && searchNode.expansionProgress < 1.0 { diff --git a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift index ae11033d26..e34acc7312 100644 --- a/submodules/TelegramUI/TelegramUI/CreateGroupController.swift +++ b/submodules/TelegramUI/TelegramUI/CreateGroupController.swift @@ -10,6 +10,8 @@ import LegacyComponents import ItemListUI import AccountContext import AlertUI +import MediaResources +import PhotoResources public enum CreateGroupMode { case generic diff --git a/submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift b/submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift index 8ff573a4c1..967275c080 100644 --- a/submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/DataPrivacySettingsController.swift @@ -10,6 +10,7 @@ import ItemListUI import OverlayStatusController import AccountContext import AlertUI +import TelegramNotices private final class DataPrivacyControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift index 16b1fd51fe..f2d1d2fbfe 100644 --- a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift +++ b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift @@ -1,6 +1,7 @@ import Postbox import TemporaryCachedPeerDataManager import TelegramUIPreferences +import TelegramNotices private var telegramUIDeclaredEncodables: Void = { declareEncodable(InAppNotificationSettings.self, f: { InAppNotificationSettings(decoder: $0) }) diff --git a/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift b/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift index 228bc1819d..43f5a69b7e 100644 --- a/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/DeviceContactInfoController.swift @@ -10,6 +10,8 @@ import ItemListUI import TelegramStringFormatting import AccountContext import AlertUI +import PhotoResources +import MediaResources private enum DeviceContactInfoAction { case sendMessage diff --git a/submodules/TelegramUI/TelegramUI/EditAccessoryPanelNode.swift b/submodules/TelegramUI/TelegramUI/EditAccessoryPanelNode.swift index cdadc61ef8..3793b55ae8 100644 --- a/submodules/TelegramUI/TelegramUI/EditAccessoryPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/EditAccessoryPanelNode.swift @@ -10,6 +10,7 @@ import TelegramUIPreferences import ActivityIndicator import AccountContext import RadialStatusNode +import PhotoResources final class EditAccessoryPanelNode: AccessoryPanelNode { let messageId: MessageId diff --git a/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift b/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift index 6186056d38..28d90a4ec6 100644 --- a/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift +++ b/submodules/TelegramUI/TelegramUI/FetchCachedRepresentations.swift @@ -15,6 +15,7 @@ import WebP import Lottie import TelegramUIPrivateModule import MediaResources +import PhotoResources public func fetchCachedResourceRepresentation(account: Account, resource: MediaResource, representation: CachedMediaResourceRepresentation) -> Signal { if let representation = representation as? CachedStickerAJpegRepresentation { diff --git a/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift b/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift index 61e4250c29..009e8d82c9 100644 --- a/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift +++ b/submodules/TelegramUI/TelegramUI/GalleryVideoDecoration.swift @@ -5,6 +5,7 @@ import Display import SwiftSignalKit import UniversalMediaPlayer import AccountContext +import PhotoResources final class GalleryVideoDecoration: UniversalVideoDecoration { let backgroundNode: ASDisplayNode? = nil diff --git a/submodules/TelegramUI/TelegramUI/GridMessageItem.swift b/submodules/TelegramUI/TelegramUI/GridMessageItem.swift index 644e079914..b96d53a789 100644 --- a/submodules/TelegramUI/TelegramUI/GridMessageItem.swift +++ b/submodules/TelegramUI/TelegramUI/GridMessageItem.swift @@ -9,6 +9,7 @@ import TelegramPresentationData import TelegramStringFormatting import AccountContext import RadialStatusNode +import PhotoResources private func mediaForMessage(_ message: Message) -> Media? { for media in message.media { diff --git a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift index 36bcbf4ede..9958177300 100644 --- a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift @@ -16,6 +16,8 @@ import TelegramStringFormatting import TemporaryCachedPeerDataManager import ShareController import AlertUI +import MediaResources +import PhotoResources private final class GroupInfoArguments { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift b/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift index 01ca861661..18ca1cca26 100644 --- a/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift +++ b/submodules/TelegramUI/TelegramUI/HorizontalListContextResultsChatInputPanelItem.swift @@ -8,6 +8,7 @@ import Postbox import AVFoundation import RadialStatusNode import StickerResources +import PhotoResources final class HorizontalListContextResultsChatInputPanelItem: ListViewItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ImageCompression.swift b/submodules/TelegramUI/TelegramUI/ImageCompression.swift index 0143ffb995..6397b1e429 100644 --- a/submodules/TelegramUI/TelegramUI/ImageCompression.swift +++ b/submodules/TelegramUI/TelegramUI/ImageCompression.swift @@ -51,34 +51,3 @@ func compressImage(_ image: UIImage, quality: Float) -> Data? { return data as Data } - -private let tinyThumbnailHeaderPattern = Data(base64Encoded: "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDACgcHiMeGSgjISMtKygwPGRBPDc3PHtYXUlkkYCZlo+AjIqgtObDoKrarYqMyP/L2u71////m8H////6/+b9//j/2wBDASstLTw1PHZBQXb4pYyl+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj/wAARCAAAAAADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwA=") -private let tinyThumbnailFooterPattern = Data(base64Encoded: "/9k=") - -func decodeTinyThumbnail(data: Data) -> Data? { - if data.count < 3 { - return nil - } - guard let tinyThumbnailHeaderPattern = tinyThumbnailHeaderPattern, let tinyThumbnailFooterPattern = tinyThumbnailFooterPattern else { - return nil - } - var version: UInt8 = 0 - data.copyBytes(to: &version, count: 1) - if version != 1 { - return nil - } - var width: UInt8 = 0 - var height: UInt8 = 0 - data.copyBytes(to: &width, from: 1 ..< 2) - data.copyBytes(to: &height, from: 2 ..< 3) - - var resultData = Data() - resultData.append(tinyThumbnailHeaderPattern) - resultData.append(data.subdata(in: 3 ..< data.count)) - resultData.append(tinyThumbnailFooterPattern) - resultData.withUnsafeMutableBytes({ (resultBytes: UnsafeMutablePointer) -> Void in - resultBytes[164] = width - resultBytes[166] = height - }) - return resultData -} diff --git a/submodules/TelegramUI/TelegramUI/InChatPrefetchManager.swift b/submodules/TelegramUI/TelegramUI/InChatPrefetchManager.swift index d9c7e73b1d..c82356c5da 100644 --- a/submodules/TelegramUI/TelegramUI/InChatPrefetchManager.swift +++ b/submodules/TelegramUI/TelegramUI/InChatPrefetchManager.swift @@ -4,6 +4,7 @@ import Postbox import TelegramCore import TelegramUIPreferences import AccountContext +import PhotoResources private final class PrefetchMediaContext { let fetchDisposable = MetaDisposable() diff --git a/submodules/TelegramUI/TelegramUI/InstantImageGalleryItem.swift b/submodules/TelegramUI/TelegramUI/InstantImageGalleryItem.swift index a39453aa27..c9068f18ac 100644 --- a/submodules/TelegramUI/TelegramUI/InstantImageGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/InstantImageGalleryItem.swift @@ -7,6 +7,7 @@ import Postbox import TelegramCore import TelegramPresentationData import AccountContext +import PhotoResources private struct InstantImageGalleryThumbnailItem: GalleryThumbnailItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift index 9b0126ddc5..86bb711aeb 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageArticleNode.swift @@ -7,6 +7,7 @@ import TelegramCore import SwiftSignalKit import TelegramPresentationData import AccountContext +import PhotoResources final class InstantPageArticleNode: ASDisplayNode, InstantPageNode { let item: InstantPageArticleItem diff --git a/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift b/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift index 89167cc387..d396be54aa 100644 --- a/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift +++ b/submodules/TelegramUI/TelegramUI/InstantPageImageNode.swift @@ -8,6 +8,8 @@ import SwiftSignalKit import TelegramPresentationData import AccountContext import RadialStatusNode +import PhotoResources +import MediaResources private struct FetchControls { let fetch: (Bool) -> Void diff --git a/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift b/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift index 47b1af5fc1..a574326c54 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyPreferencesImport.swift @@ -15,6 +15,7 @@ import AppBinaryPrivate #endif import TelegramUIPrivateModule import LegacyComponents +import TelegramNotices @objc(TGPresentationState) private final class TGPresentationState: NSObject, NSCoding { let pallete: Int32 diff --git a/submodules/TelegramUI/TelegramUI/LegacyWebSearchGallery.swift b/submodules/TelegramUI/TelegramUI/LegacyWebSearchGallery.swift index 7cbe52bcbf..579644a68b 100644 --- a/submodules/TelegramUI/TelegramUI/LegacyWebSearchGallery.swift +++ b/submodules/TelegramUI/TelegramUI/LegacyWebSearchGallery.swift @@ -9,6 +9,7 @@ import UIKit import Display import TelegramPresentationData import AccountContext +import PhotoResources class LegacyWebSearchItem: NSObject, TGMediaEditableItem, TGMediaSelectableItem { var isVideo: Bool { diff --git a/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift b/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift index 3959925f54..9427ef8cb9 100644 --- a/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ListMessageFileItemNode.swift @@ -11,6 +11,7 @@ import AccountContext import TelegramStringFormatting import AccountContext import RadialStatusNode +import PhotoResources private let extensionImageCache = Atomic<[UInt32: UIImage]>(value: [:]) diff --git a/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift b/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift index 69d744a427..1a59f61e28 100644 --- a/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift +++ b/submodules/TelegramUI/TelegramUI/ListMessageSnippetItemNode.swift @@ -8,6 +8,7 @@ import SwiftSignalKit import TelegramPresentationData import ItemListUI import TextFormat +import PhotoResources private let titleFont = Font.medium(16.0) private let descriptionFont = Font.regular(14.0) diff --git a/submodules/TelegramUI/TelegramUI/NativeVideoContent.swift b/submodules/TelegramUI/TelegramUI/NativeVideoContent.swift index 60fe8a4952..1703ddd07f 100644 --- a/submodules/TelegramUI/TelegramUI/NativeVideoContent.swift +++ b/submodules/TelegramUI/TelegramUI/NativeVideoContent.swift @@ -8,6 +8,7 @@ import TelegramCore import TelegramAudio import UniversalMediaPlayer import AccountContext +import PhotoResources enum NativeVideoContentId: Hashable { case message(UInt32, MediaId) diff --git a/submodules/TelegramUI/TelegramUI/NotificationContentContext.swift b/submodules/TelegramUI/TelegramUI/NotificationContentContext.swift index c53799330a..35e9911d54 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationContentContext.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationContentContext.swift @@ -11,6 +11,7 @@ import TelegramUIPrivateModule import AccountContext import Tuples import StickerResources +import PhotoResources private enum NotificationContentAuthorizationError { case unauthorized diff --git a/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift b/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift index d7e5b685ea..e99ed25239 100644 --- a/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift +++ b/submodules/TelegramUI/TelegramUI/NotificationsAndSounds.swift @@ -10,6 +10,7 @@ import DeviceAccess import ItemListUI import AccountContext import AlertUI +import TelegramNotices private final class NotificationsAndSoundsArguments { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift b/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift index 7a82be4e6d..4c1208b353 100644 --- a/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift +++ b/submodules/TelegramUI/TelegramUI/OpenInActionSheetController.swift @@ -8,6 +8,7 @@ import TelegramCore import MapKit import TelegramPresentationData import AccountContext +import PhotoResources public struct OpenInControllerAction { let title: String diff --git a/submodules/TelegramUI/TelegramUI/OverlayPlayerControlsNode.swift b/submodules/TelegramUI/TelegramUI/OverlayPlayerControlsNode.swift index 394de12832..f16e1bfe56 100644 --- a/submodules/TelegramUI/TelegramUI/OverlayPlayerControlsNode.swift +++ b/submodules/TelegramUI/TelegramUI/OverlayPlayerControlsNode.swift @@ -9,6 +9,7 @@ import TelegramPresentationData import UniversalMediaPlayer import TelegramUIPreferences import AccountContext +import PhotoResources private func generateBackground(theme: PresentationTheme) -> UIImage? { return generateImage(CGSize(width: 20.0, height: 10.0 + 8.0), rotatedContext: { size, context in diff --git a/submodules/TelegramUI/TelegramUI/PeerAvatarImageGalleryItem.swift b/submodules/TelegramUI/TelegramUI/PeerAvatarImageGalleryItem.swift index 439b25a0ea..36a18c254f 100644 --- a/submodules/TelegramUI/TelegramUI/PeerAvatarImageGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/PeerAvatarImageGalleryItem.swift @@ -9,6 +9,7 @@ import TelegramPresentationData import AccountContext import RadialStatusNode import ShareController +import PhotoResources private struct PeerAvatarImageGalleryThumbnailItem: GalleryThumbnailItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/PermissionContentNode.swift b/submodules/TelegramUI/TelegramUI/PermissionContentNode.swift index 8ac2896056..daf7b7786b 100644 --- a/submodules/TelegramUI/TelegramUI/PermissionContentNode.swift +++ b/submodules/TelegramUI/TelegramUI/PermissionContentNode.swift @@ -4,6 +4,7 @@ import Display import AsyncDisplayKit import TelegramPresentationData import TextFormat +import TelegramPermissions enum PermissionContentIcon { case image(UIImage?) diff --git a/submodules/TelegramUI/TelegramUI/PermissionControllerNode.swift b/submodules/TelegramUI/TelegramUI/PermissionControllerNode.swift index 4674bbf7a1..f9318185b6 100644 --- a/submodules/TelegramUI/TelegramUI/PermissionControllerNode.swift +++ b/submodules/TelegramUI/TelegramUI/PermissionControllerNode.swift @@ -6,6 +6,7 @@ import SwiftSignalKit import TelegramCore import TelegramPresentationData import AccountContext +import TelegramPermissions public struct PermissionControllerCustomIcon: Equatable { let light: UIImage? diff --git a/submodules/TelegramUI/TelegramUI/PermissionSplitTest.swift b/submodules/TelegramUI/TelegramUI/PermissionSplitTest.swift index 95e9bd888a..19cb69e699 100644 --- a/submodules/TelegramUI/TelegramUI/PermissionSplitTest.swift +++ b/submodules/TelegramUI/TelegramUI/PermissionSplitTest.swift @@ -3,6 +3,7 @@ import UIKit import SwiftSignalKit import Postbox import TelegramCore +import TelegramPermissions extension PermissionKind { fileprivate static var defaultOrder: [PermissionKind] { diff --git a/submodules/TelegramUI/TelegramUI/PlatformVideoContent.swift b/submodules/TelegramUI/TelegramUI/PlatformVideoContent.swift index 7fcd018138..c72b46c448 100644 --- a/submodules/TelegramUI/TelegramUI/PlatformVideoContent.swift +++ b/submodules/TelegramUI/TelegramUI/PlatformVideoContent.swift @@ -9,6 +9,7 @@ import AVFoundation import UniversalMediaPlayer import TelegramAudio import AccountContext +import PhotoResources enum PlatformVideoContentId: Hashable { case message(MessageId, UInt32, MediaId) diff --git a/submodules/TelegramUI/TelegramUI/PrefetchManager.swift b/submodules/TelegramUI/TelegramUI/PrefetchManager.swift index 6f7a8bb41c..191d25a4e0 100644 --- a/submodules/TelegramUI/TelegramUI/PrefetchManager.swift +++ b/submodules/TelegramUI/TelegramUI/PrefetchManager.swift @@ -4,6 +4,7 @@ import Postbox import TelegramCore import TelegramUIPreferences import AccountContext +import PhotoResources private final class PrefetchMediaContext { let fetchDisposable = MetaDisposable() diff --git a/submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift b/submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift index c010c38920..4618f1bcdf 100644 --- a/submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift +++ b/submodules/TelegramUI/TelegramUI/PrivacyAndSecurityController.swift @@ -9,6 +9,7 @@ import TelegramUIPreferences import TelegramCallsUI import ItemListUI import AccountContext +import TelegramNotices private final class PrivacyAndSecurityControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/ReplyAccessoryPanelNode.swift b/submodules/TelegramUI/TelegramUI/ReplyAccessoryPanelNode.swift index 7ff854ab68..f07719d5b3 100644 --- a/submodules/TelegramUI/TelegramUI/ReplyAccessoryPanelNode.swift +++ b/submodules/TelegramUI/TelegramUI/ReplyAccessoryPanelNode.swift @@ -9,6 +9,7 @@ import TelegramPresentationData import TelegramUIPreferences import AccountContext import LocalizedPeerData +import PhotoResources final class ReplyAccessoryPanelNode: AccessoryPanelNode { private let messageDisposable = MetaDisposable() diff --git a/submodules/TelegramUI/TelegramUI/SecretChatKeyVisualization.h b/submodules/TelegramUI/TelegramUI/SecretChatKeyVisualization.h index 54bea900a1..f92ae001f4 100644 --- a/submodules/TelegramUI/TelegramUI/SecretChatKeyVisualization.h +++ b/submodules/TelegramUI/TelegramUI/SecretChatKeyVisualization.h @@ -2,4 +2,3 @@ #import UIImage *SecretChatKeyVisualization(NSData *data, NSData *additionalData, CGSize size); -NSString *stringForEmojiHashOfData(NSData *data, NSInteger count); diff --git a/submodules/TelegramUI/TelegramUI/SecretChatKeyVisualization.m b/submodules/TelegramUI/TelegramUI/SecretChatKeyVisualization.m index 0251779086..50d100e6f9 100644 --- a/submodules/TelegramUI/TelegramUI/SecretChatKeyVisualization.m +++ b/submodules/TelegramUI/TelegramUI/SecretChatKeyVisualization.m @@ -109,29 +109,3 @@ UIImage *SecretChatKeyVisualization(NSData *data, NSData *additionalData, CGSize return image; } - -static int32_t positionExtractor(uint8_t *bytes, int32_t i, int32_t count) { - int offset = i * 8; - int64_t num = (((int64_t)bytes[offset] & 0x7F) << 56) | (((int64_t)bytes[offset+1] & 0xFF) << 48) | (((int64_t)bytes[offset+2] & 0xFF) << 40) | (((int64_t)bytes[offset+3] & 0xFF) << 32) | (((int64_t)bytes[offset+4] & 0xFF) << 24) | (((int64_t)bytes[offset+5] & 0xFF) << 16) | (((int64_t)bytes[offset+6] & 0xFF) << 8) | (((int64_t)bytes[offset+7] & 0xFF)); - return num % count; -} - -NSString *stringForEmojiHashOfData(NSData *data, NSInteger count) { - if (data.length != 32) - return @""; - - NSArray *emojis = @[ @"😉", @"😍", @"😛", @"😭", @"😱", @"😡", @"😎", @"😴", @"😵", @"😈", @"😬", @"😇", @"😏", @"👮", @"👷", @"💂", @"👶", @"👨", @"👩", @"👴", @"👵", @"😻", @"😽", @"🙀", @"👺", @"🙈", @"🙉", @"🙊", @"💀", @"👽", @"💩", @"🔥", @"💥", @"💤", @"👂", @"👀", @"👃", @"👅", @"👄", @"👍", @"👎", @"👌", @"👊", @"✌️", @"✋️", @"👐", @"👆", @"👇", @"👉", @"👈", @"🙏", @"👏", @"💪", @"🚶", @"🏃", @"💃", @"👫", @"👪", @"👬", @"👭", @"💅", @"🎩", @"👑", @"👒", @"👟", @"👞", @"👠", @"👕", @"👗", @"👖", @"👙", @"👜", @"👓", @"🎀", @"💄", @"💛", @"💙", @"💜", @"💚", @"💍", @"💎", @"🐶", @"🐺", @"🐱", @"🐭", @"🐹", @"🐰", @"🐸", @"🐯", @"🐨", @"🐻", @"🐷", @"🐮", @"🐗", @"🐴", @"🐑", @"🐘", @"🐼", @"🐧", @"🐥", @"🐔", @"🐍", @"🐢", @"🐛", @"🐝", @"🐜", @"🐞", @"🐌", @"🐙", @"🐚", @"🐟", @"🐬", @"🐋", @"🐐", @"🐊", @"🐫", @"🍀", @"🌹", @"🌻", @"🍁", @"🌾", @"🍄", @"🌵", @"🌴", @"🌳", @"🌞", @"🌚", @"🌙", @"🌎", @"🌋", @"⚡️", @"☔️", @"❄️", @"⛄️", @"🌀", @"🌈", @"🌊", @"🎓", @"🎆", @"🎃", @"👻", @"🎅", @"🎄", @"🎁", @"🎈", @"🔮", @"🎥", @"📷", @"💿", @"💻", @"☎️", @"📡", @"📺", @"📻", @"🔉", @"🔔", @"⏳", @"⏰", @"⌚️", @"🔒", @"🔑", @"🔎", @"💡", @"🔦", @"🔌", @"🔋", @"🚿", @"🚽", @"🔧", @"🔨", @"🚪", @"🚬", @"💣", @"🔫", @"🔪", @"💊", @"💉", @"💰", @"💵", @"💳", @"✉️", @"📫", @"📦", @"📅", @"📁", @"✂️", @"📌", @"📎", @"✒️", @"✏️", @"📐", @"📚", @"🔬", @"🔭", @"🎨", @"🎬", @"🎤", @"🎧", @"🎵", @"🎹", @"🎻", @"🎺", @"🎸", @"👾", @"🎮", @"🃏", @"🎲", @"🎯", @"🏈", @"🏀", @"⚽️", @"⚾️", @"🎾", @"🎱", @"🏉", @"🎳", @"🏁", @"🏇", @"🏆", @"🏊", @"🏄", @"☕️", @"🍼", @"🍺", @"🍷", @"🍴", @"🍕", @"🍔", @"🍟", @"🍗", @"🍱", @"🍚", @"🍜", @"🍡", @"🍳", @"🍞", @"🍩", @"🍦", @"🎂", @"🍰", @"🍪", @"🍫", @"🍭", @"🍯", @"🍎", @"🍏", @"🍊", @"🍋", @"🍒", @"🍇", @"🍉", @"🍓", @"🍑", @"🍌", @"🍐", @"🍍", @"🍆", @"🍅", @"🌽", @"🏡", @"🏥", @"🏦", @"⛪️", @"🏰", @"⛺️", @"🏭", @"🗻", @"🗽", @"🎠", @"🎡", @"⛲️", @"🎢", @"🚢", @"🚤", @"⚓️", @"🚀", @"✈️", @"🚁", @"🚂", @"🚋", @"🚎", @"🚌", @"🚙", @"🚗", @"🚕", @"🚛", @"🚨", @"🚔", @"🚒", @"🚑", @"🚲", @"🚠", @"🚜", @"🚦", @"⚠️", @"🚧", @"⛽️", @"🎰", @"🗿", @"🎪", @"🎭", @"🇯🇵", @"🇰🇷", @"🇩🇪", @"🇨🇳", @"🇺🇸", @"🇫🇷", @"🇪🇸", @"🇮🇹", @"🇷🇺", @"🇬🇧", @"1️⃣", @"2️⃣", @"3️⃣", @"4️⃣", @"5️⃣", @"6️⃣", @"7️⃣", @"8️⃣", @"9️⃣", @"0️⃣", @"🔟", @"❗️", @"❓", @"♥️", @"♦️", @"💯", @"🔗", @"🔱", @"🔴", @"🔵", @"🔶", @"🔷" ]; - - uint8_t bytes[32]; - [data getBytes:bytes length:32]; - - NSString *result = @""; - for (int32_t i = 0; i < count; i++) - { - int32_t position = positionExtractor(bytes, i, (int32_t)emojis.count); - NSString *emoji = emojis[position]; - result = [result stringByAppendingString:emoji]; - } - - return result; -} diff --git a/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift b/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift index 8d8bb79d48..391ded2ce5 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdDocumentImageGalleryItem.swift @@ -7,6 +7,7 @@ import Postbox import TelegramCore import TelegramPresentationData import AccountContext +import PhotoResources class SecureIdDocumentGalleryItem: GalleryItem { let context: AccountContext diff --git a/submodules/TelegramUI/TelegramUI/SecureIdValueFormFileItem.swift b/submodules/TelegramUI/TelegramUI/SecureIdValueFormFileItem.swift index 2207349b41..29ae52fa0e 100644 --- a/submodules/TelegramUI/TelegramUI/SecureIdValueFormFileItem.swift +++ b/submodules/TelegramUI/TelegramUI/SecureIdValueFormFileItem.swift @@ -7,6 +7,7 @@ import TelegramPresentationData import ItemListUI import TelegramStringFormatting import RadialStatusNode +import PhotoResources private let textFont = Font.regular(16.0) private let labelFont = Font.regular(13.0) diff --git a/submodules/TelegramUI/TelegramUI/SettingsController.swift b/submodules/TelegramUI/TelegramUI/SettingsController.swift index b29a4d17a3..91759383a2 100644 --- a/submodules/TelegramUI/TelegramUI/SettingsController.swift +++ b/submodules/TelegramUI/TelegramUI/SettingsController.swift @@ -19,6 +19,7 @@ import AccountContext import OverlayStatusController import AvatarNode import AlertUI +import TelegramNotices private let maximumNumberOfAccounts = 3 diff --git a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift index 3ee59eb05b..11cf03d2bb 100644 --- a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift +++ b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift @@ -533,7 +533,7 @@ public final class SharedAccountContextImpl: SharedAccountContext { if let call = call { mainWindow.hostView.containerView.endEditing(true) - let callController = CallController(sharedContext: strongSelf, account: call.account, call: call) + let callController = CallController(sharedContext: strongSelf, account: call.account, call: call, easyDebugAccess: !GlobalExperimentalSettings.isAppStoreBuild) strongSelf.callController = callController strongSelf.mainWindow?.present(callController, on: .calls) strongSelf.callState.set(call.state diff --git a/submodules/TelegramUI/TelegramUI/SoftwareVideoThumbnailLayer.swift b/submodules/TelegramUI/TelegramUI/SoftwareVideoThumbnailLayer.swift index 8c0322021c..c1047b23e4 100644 --- a/submodules/TelegramUI/TelegramUI/SoftwareVideoThumbnailLayer.swift +++ b/submodules/TelegramUI/TelegramUI/SoftwareVideoThumbnailLayer.swift @@ -4,6 +4,7 @@ import TelegramCore import Postbox import SwiftSignalKit import Display +import PhotoResources private final class SoftwareVideoThumbnailLayerNullAction: NSObject, CAAction { @objc func run(forKey event: String, object anObject: Any, arguments dict: [AnyHashable : Any]?) { diff --git a/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift b/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift index 404211a3d6..4096a43816 100644 --- a/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift +++ b/submodules/TelegramUI/TelegramUI/SuppressContactsWarning.swift @@ -6,6 +6,7 @@ import TelegramCore import DeviceAccess import AccountContext import AlertUI +import TelegramNotices func presentContactsWarningSuppression(context: AccountContext, present: (ViewController, Any?) -> Void) { let presentationData = context.sharedContext.currentPresentationData.with { $0 } diff --git a/submodules/TelegramUI/TelegramUI/SystemVideoContent.swift b/submodules/TelegramUI/TelegramUI/SystemVideoContent.swift index dc29a0fd8a..b8f2140781 100644 --- a/submodules/TelegramUI/TelegramUI/SystemVideoContent.swift +++ b/submodules/TelegramUI/TelegramUI/SystemVideoContent.swift @@ -9,6 +9,7 @@ import TelegramAudio import LegacyComponents import UniversalMediaPlayer import AccountContext +import PhotoResources final class SystemVideoContent: UniversalVideoContent { let id: AnyHashable diff --git a/submodules/TelegramUI/TelegramUI/TelegramAccountAuxiliaryMethods.swift b/submodules/TelegramUI/TelegramUI/TelegramAccountAuxiliaryMethods.swift index c399d31c5e..8a64dcf7f5 100644 --- a/submodules/TelegramUI/TelegramUI/TelegramAccountAuxiliaryMethods.swift +++ b/submodules/TelegramUI/TelegramUI/TelegramAccountAuxiliaryMethods.swift @@ -1,6 +1,7 @@ import Foundation import TelegramCore import Postbox +import MediaResources public let telegramAccountAuxiliaryMethods = AccountAuxiliaryMethods(updatePeerChatInputState: { interfaceState, inputState -> PeerChatInterfaceState? in if interfaceState == nil { diff --git a/submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift b/submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift index 5cffafaedd..2ff3d1ae2c 100644 --- a/submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift +++ b/submodules/TelegramUI/TelegramUI/ThemeGridSearchItem.swift @@ -6,6 +6,7 @@ import SwiftSignalKit import AsyncDisplayKit import Postbox import TelegramPresentationData +import PhotoResources final class ThemeGridSearchItem: GridItem { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/TransformOutgoingMessageMedia.swift b/submodules/TelegramUI/TelegramUI/TransformOutgoingMessageMedia.swift index 6ad2db7fe3..57a1613f0d 100644 --- a/submodules/TelegramUI/TelegramUI/TransformOutgoingMessageMedia.swift +++ b/submodules/TelegramUI/TelegramUI/TransformOutgoingMessageMedia.swift @@ -4,6 +4,7 @@ import TelegramCore import Postbox import SwiftSignalKit import Display +import PhotoResources public func transformOutgoingMessageMedia(postbox: Postbox, network: Network, media: AnyMediaReference, opportunistic: Bool) -> Signal { switch media.media { diff --git a/submodules/TelegramUI/TelegramUI/UserInfoController.swift b/submodules/TelegramUI/TelegramUI/UserInfoController.swift index 4be0afc6b8..eb78e9fccb 100644 --- a/submodules/TelegramUI/TelegramUI/UserInfoController.swift +++ b/submodules/TelegramUI/TelegramUI/UserInfoController.swift @@ -15,6 +15,7 @@ import TelegramStringFormatting import AccountContext import ShareController import AlertUI +import TelegramNotices private final class UserInfoControllerArguments { let account: Account diff --git a/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift b/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift index 97234b8926..016f1502ef 100644 --- a/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift +++ b/submodules/TelegramUI/TelegramUI/VerticalListContextResultsChatInputPanelItem.swift @@ -7,6 +7,7 @@ import SwiftSignalKit import Postbox import TelegramPresentationData import RadialStatusNode +import PhotoResources final class VerticalListContextResultsChatInputPanelItem: ListViewItem { fileprivate let account: Account diff --git a/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift b/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift index 2a64d2289d..b8e5f9feb3 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperGalleryItem.swift @@ -12,6 +12,7 @@ import ProgressNavigationButtonNode import MediaResources import AccountContext import RadialStatusNode +import PhotoResources struct WallpaperGalleryItemArguments { let colorPreview: Bool diff --git a/submodules/TelegramUI/TelegramUI/WallpaperResources.swift b/submodules/TelegramUI/TelegramUI/WallpaperResources.swift index 57ff3902b0..cbb8ed63db 100644 --- a/submodules/TelegramUI/TelegramUI/WallpaperResources.swift +++ b/submodules/TelegramUI/TelegramUI/WallpaperResources.swift @@ -7,6 +7,8 @@ import TelegramCore import TelegramUIPrivateModule import MediaResources import ImageBlur +import TinyThumbnail +import PhotoResources private func wallpaperDatas(account: Account, accountManager: AccountManager, fileReference: FileMediaReference? = nil, representations: [ImageRepresentationWithReference], alwaysShowThumbnailFirst: Bool = false, thumbnail: Bool = false, autoFetchFullSize: Bool = false, synchronousLoad: Bool = false) -> Signal<(Data?, Data?, Bool), NoError> { if let smallestRepresentation = smallestImageRepresentation(representations.map({ $0.representation })), let largestRepresentation = largestImageRepresentation(representations.map({ $0.representation })), let smallestIndex = representations.index(where: { $0.representation == smallestRepresentation }), let largestIndex = representations.index(where: { $0.representation == largestRepresentation }) { diff --git a/submodules/TelegramUI/TelegramUI/WatchRequestHandlers.swift b/submodules/TelegramUI/TelegramUI/WatchRequestHandlers.swift index 4000c4c9bb..75e6277cc9 100644 --- a/submodules/TelegramUI/TelegramUI/WatchRequestHandlers.swift +++ b/submodules/TelegramUI/TelegramUI/WatchRequestHandlers.swift @@ -8,6 +8,7 @@ import WatchCommon import TelegramPresentationData import AvatarNode import StickerResources +import PhotoResources let allWatchRequestHandlers: [AnyClass] = [ WatchChatListHandler.self, diff --git a/submodules/TelegramUI/TelegramUI/WebEmbedVideoContent.swift b/submodules/TelegramUI/TelegramUI/WebEmbedVideoContent.swift index 2eb83c3fb3..ff4f374eee 100644 --- a/submodules/TelegramUI/TelegramUI/WebEmbedVideoContent.swift +++ b/submodules/TelegramUI/TelegramUI/WebEmbedVideoContent.swift @@ -9,6 +9,7 @@ import TelegramAudio import UniversalMediaPlayer import LegacyComponents import AccountContext +import PhotoResources final class WebEmbedVideoContent: UniversalVideoContent { let id: AnyHashable diff --git a/submodules/TelegramUI/TelegramUI/WebSearchItem.swift b/submodules/TelegramUI/TelegramUI/WebSearchItem.swift index a2a4ebb6fe..b1592d3779 100644 --- a/submodules/TelegramUI/TelegramUI/WebSearchItem.swift +++ b/submodules/TelegramUI/TelegramUI/WebSearchItem.swift @@ -7,6 +7,7 @@ import SwiftSignalKit import Postbox import TelegramPresentationData import CheckNode +import PhotoResources final class WebSearchItem: GridItem { var section: GridSection? diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj index 9cb690822e..489fdbceb9 100644 --- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj +++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ 0900678D21ED5EA800530762 /* WallpaperColorPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0900678C21ED5EA800530762 /* WallpaperColorPanelNode.swift */; }; 0900678F21ED8E0E00530762 /* HexColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0900678E21ED8E0E00530762 /* HexColor.swift */; }; 0902838821931D960067EFBD /* LanguageSuggestionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0902838721931D960067EFBD /* LanguageSuggestionController.swift */; }; - 0902838D2194AEB90067EFBD /* ImageTransparency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0902838C2194AEB90067EFBD /* ImageTransparency.swift */; }; 090A22172273713000694CB0 /* ChatAnimationGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090A22162273713000694CB0 /* ChatAnimationGalleryItem.swift */; }; 090B48C82200BCA8005083FA /* WallpaperUploadManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090B48C72200BCA8005083FA /* WallpaperUploadManager.swift */; }; 090E63E62195880F00E3C035 /* ContactAddItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090E63E52195880F00E3C035 /* ContactAddItem.swift */; }; @@ -65,17 +64,14 @@ 09619B8E21A34C0100493558 /* InstantPageScrollableNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09619B8D21A34C0100493558 /* InstantPageScrollableNode.swift */; }; 09619B9521A4ABF600493558 /* InstantPageReferenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09619B9321A4ABF500493558 /* InstantPageReferenceController.swift */; }; 09619B9621A4ABF600493558 /* InstantPageReferenceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09619B9421A4ABF600493558 /* InstantPageReferenceControllerNode.swift */; }; - 0962E65D21B1486D00245FD9 /* CallDebugNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E65C21B1486D00245FD9 /* CallDebugNode.swift */; }; 0962E66121B3512500245FD9 /* WebSearchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E66021B3512500245FD9 /* WebSearchController.swift */; }; 0962E66321B3513100245FD9 /* WebSearchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E66221B3513100245FD9 /* WebSearchControllerNode.swift */; }; 0962E66521B3631100245FD9 /* WebSearchNavigationContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E66421B3631100245FD9 /* WebSearchNavigationContentNode.swift */; }; 0962E67321B622BE00245FD9 /* PermissionSplitTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67221B622BE00245FD9 /* PermissionSplitTest.swift */; }; - 0962E67721B673AF00245FD9 /* Permission.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67621B673AF00245FD9 /* Permission.swift */; }; 0962E67921B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67821B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift */; }; 0962E67B21BA00C900245FD9 /* WebSearchInterfaceState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67A21BA00C900245FD9 /* WebSearchInterfaceState.swift */; }; 0962E67F21BA786A00245FD9 /* WebSearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0962E67E21BA786A00245FD9 /* WebSearchItem.swift */; }; 09749BC521F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BC421F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift */; }; - 09749BC921F1BBA1008FDDE9 /* CallFeedbackController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BC821F1BBA1008FDDE9 /* CallFeedbackController.swift */; }; 09749BCD21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BCC21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift */; }; 09749BCF21F236F2008FDDE9 /* ModernCheckNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09749BCE21F236F2008FDDE9 /* ModernCheckNode.swift */; }; 09797873210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09797872210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift */; }; @@ -137,7 +133,6 @@ 09DD88E921BAF65E000766BC /* ItemListAddressItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88E821BAF65E000766BC /* ItemListAddressItem.swift */; }; 09DD88ED21BDC8B7000766BC /* FormEditableBlockItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88EC21BDC8B7000766BC /* FormEditableBlockItemNode.swift */; }; 09DD88EF21BDDE2B000766BC /* Geocoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88EE21BDDE2B000766BC /* Geocoding.swift */; }; - 09DD88F121BE1090000766BC /* CallRatingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F021BE1090000766BC /* CallRatingController.swift */; }; 09DD88F321BF907C000766BC /* WebSearchRecentQueryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */; }; 09DD88F521BF9730000766BC /* WebSearchRecentQueries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */; }; 09DE2F252269B7E80045E975 /* PasscodeSetupControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */; }; @@ -186,10 +181,8 @@ 09F79A0D21C88E8900820234 /* LegacyWebSearchEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F79A0C21C88E8900820234 /* LegacyWebSearchEditor.swift */; }; 09F85BA521E7821500D73170 /* ThemeGridSelectionPanelNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F85BA421E7821500D73170 /* ThemeGridSelectionPanelNode.swift */; }; 09F85BA721E7DA5F00D73170 /* BlurredImageNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F85BA621E7DA5F00D73170 /* BlurredImageNode.swift */; }; - 09FE756D2153F5F900A3120F /* CallRouteActionSheetItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FE756C2153F5F900A3120F /* CallRouteActionSheetItem.swift */; }; 09FFBCD1227B7F9900C33B4B /* anim_archiveswipe.json in Resources */ = {isa = PBXBuildFile; fileRef = 09FFBCCF227B7F9000C33B4B /* anim_archiveswipe.json */; }; 09FFBCD72281BB2D00C33B4B /* ChatTextLinkEditController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FFBCD62281BB2D00C33B4B /* ChatTextLinkEditController.swift */; }; - 09FFBCD9228473BD00C33B4B /* CallSuggestTabController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FFBCD8228473BD00C33B4B /* CallSuggestTabController.swift */; }; 09FFBCDB22849CB500C33B4B /* PDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09FFBCDA22849CB500C33B4B /* PDF.swift */; }; 9F06830921A404AB001D8EDB /* NotificationExceptionControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F06830821A404AB001D8EDB /* NotificationExceptionControllerNode.swift */; }; 9F06830B21A404C4001D8EDB /* NotificationExceptionSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F06830A21A404C4001D8EDB /* NotificationExceptionSettingsController.swift */; }; @@ -371,7 +364,6 @@ D048EA8B1F4F298A00188713 /* InstantPageSettingsThemeItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA8A1F4F298A00188713 /* InstantPageSettingsThemeItemNode.swift */; }; D048EA8D1F4F299A00188713 /* InstantPageSettingsSwitchItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA8C1F4F299A00188713 /* InstantPageSettingsSwitchItemNode.swift */; }; D048EA8F1F4F2A9C00188713 /* InstantPageSettingsItemNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D048EA8E1F4F2A9C00188713 /* InstantPageSettingsItemNode.swift */; }; - D04B4D111EEA04D400711AF6 /* MapResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04B4D101EEA04D400711AF6 /* MapResources.swift */; }; D04B4D131EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04B4D121EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift */; }; D04B4D661EEA993A00711AF6 /* LegacyLocationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04B4D651EEA993A00711AF6 /* LegacyLocationController.swift */; }; D04ECD721FFBF22B00DE9029 /* OpenUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04ECD711FFBF22B00DE9029 /* OpenUrl.swift */; }; @@ -434,7 +426,6 @@ D079FCDD1F05C4F20038FADE /* LocalAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = D079FCDC1F05C4F20038FADE /* LocalAuth.swift */; }; D079FCDF1F05C9280038FADE /* BotReceiptController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D079FCDE1F05C9280038FADE /* BotReceiptController.swift */; }; D079FCE11F05C9380038FADE /* BotReceiptControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D079FCE01F05C9380038FADE /* BotReceiptControllerNode.swift */; }; - D079FCE91F06A76C0038FADE /* Notices.swift in Sources */ = {isa = PBXBuildFile; fileRef = D079FCE81F06A76C0038FADE /* Notices.swift */; }; D07ABBA5202A14BC003671DE /* LegacyImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07ABBA4202A14BC003671DE /* LegacyImagePicker.swift */; }; D07ABBAB202A1BD1003671DE /* LegacyWallpaperPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07ABBAA202A1BD1003671DE /* LegacyWallpaperPicker.swift */; }; D07BCBFE1F2B792300ED97AA /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D07BCBFD1F2B792300ED97AA /* LegacyComponents.framework */; }; @@ -525,7 +516,6 @@ D0AA840C1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA840B1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift */; }; D0AB262921C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB262821C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift */; }; D0AB269E21D56A12008F6685 /* ChannelPermissionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */; }; - D0ACCB1A1EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ACCB191EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift */; }; D0ACCB1C1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ACCB1B1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift */; }; D0AD02EA1FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AD02E91FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift */; }; D0AD02EC20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AD02EB20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift */; }; @@ -631,6 +621,11 @@ D0C9C02022FE385700FAB518 /* SwipeToDismissGesture.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C01F22FE385700FAB518 /* SwipeToDismissGesture.framework */; }; D0C9C04722FE392100FAB518 /* DirectionalPanGesture.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C04622FE392100FAB518 /* DirectionalPanGesture.framework */; }; D0C9C07D22FE3B7200FAB518 /* UndoUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C07C22FE3B7200FAB518 /* UndoUI.framework */; }; + D0C9C0D122FE3E2D00FAB518 /* PhotoResources.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0D022FE3E2D00FAB518 /* PhotoResources.framework */; }; + D0C9C0F722FE3F8E00FAB518 /* TinyThumbnail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0F622FE3F8E00FAB518 /* TinyThumbnail.framework */; }; + D0C9C12122FE40BE00FAB518 /* ImageTransparency.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C12022FE40BE00FAB518 /* ImageTransparency.framework */; }; + D0C9C14D22FE439B00FAB518 /* TelegramNotices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C14C22FE439B00FAB518 /* TelegramNotices.framework */; }; + D0C9C17722FEF22200FAB518 /* TelegramPermissions.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C17622FEF22200FAB518 /* TelegramPermissions.framework */; }; D0CAD90120AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */; }; D0CB27CF20C17A4A001ACF93 /* TermsOfServiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */; }; D0CB27D220C17A7F001ACF93 /* TermsOfServiceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */; }; @@ -841,7 +836,6 @@ D0EC6D0A1EB9F58800EBF1C3 /* internal.c in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B031DECB0FE00220C46 /* internal.c */; }; D0EC6D0B1EB9F58800EBF1C3 /* opusfile.c in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B051DECB0FE00220C46 /* opusfile.c */; }; D0EC6D0C1EB9F58800EBF1C3 /* stream.c in Sources */ = {isa = PBXBuildFile; fileRef = D0D03B071DECB0FE00220C46 /* stream.c */; }; - D0EC6D221EB9F58800EBF1C3 /* PhotoResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E9F1D6B8E380046BCD6 /* PhotoResources.swift */; }; D0EC6D251EB9F58800EBF1C3 /* FetchCachedRepresentations.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06879561DB8F22200424BBD /* FetchCachedRepresentations.swift */; }; D0EC6D261EB9F58800EBF1C3 /* TransformOutgoingMessageMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = D04662801E68BA64006FAFC4 /* TransformOutgoingMessageMedia.swift */; }; D0EC6D271EB9F58800EBF1C3 /* FetchResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F3A8B51E83120A00B4C64C /* FetchResource.swift */; }; @@ -1084,8 +1078,6 @@ D0EC6E571EB9F58900EBF1C3 /* GroupsInCommonController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D099261E1E69791E00D95539 /* GroupsInCommonController.swift */; }; D0EC6E581EB9F58900EBF1C3 /* PeerSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF731DCA207200761F81 /* PeerSelectionController.swift */; }; D0EC6E591EB9F58900EBF1C3 /* PeerSelectionControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF751DCA224100761F81 /* PeerSelectionControllerNode.swift */; }; - D0EC6E5B1EB9F58900EBF1C3 /* CallController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EC6B3A1EB8CF2B00EBF1C3 /* CallController.swift */; }; - D0EC6E5C1EB9F58900EBF1C3 /* CallControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EC6B3C1EB8CF3500EBF1C3 /* CallControllerNode.swift */; }; D0EC6E5D1EB9F58900EBF1C3 /* PrivacyAndSecurityController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05A32DD1E6F0097002760B4 /* PrivacyAndSecurityController.swift */; }; D0EC6E5E1EB9F58900EBF1C3 /* ItemListRecentSessionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05A32ED1E6F25A0002760B4 /* ItemListRecentSessionItem.swift */; }; D0EC6E5F1EB9F58900EBF1C3 /* RecentSessionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05A32E91E6F143C002760B4 /* RecentSessionsController.swift */; }; @@ -1137,9 +1129,6 @@ D0EC6EA61EB9FC2400EBF1C3 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D07551901DDA4FC70073E051 /* libc++.tbd */; }; D0EC6EBD1EBA100F00EBF1C3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0EC6EBC1EBA100F00EBF1C3 /* CoreAudio.framework */; }; D0EEE9A12165585F001292A6 /* DocumentPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0EEE9A02165585F001292A6 /* DocumentPreviewController.swift */; }; - D0F0AAE21EC20EF8005EE2A5 /* CallControllerStatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F0AAE11EC20EF8005EE2A5 /* CallControllerStatusNode.swift */; }; - D0F0AAE41EC21AAA005EE2A5 /* CallControllerButtonsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F0AAE31EC21AAA005EE2A5 /* CallControllerButtonsNode.swift */; }; - D0F0AAE61EC21B68005EE2A5 /* CallControllerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F0AAE51EC21B68005EE2A5 /* CallControllerButton.swift */; }; D0F19F6220E5694D00EEC860 /* GroupStickerPackCurrentItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F19F6120E5694D00EEC860 /* GroupStickerPackCurrentItem.swift */; }; D0F19F6420E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F19F6320E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift */; }; D0F4B01A211073C500912B92 /* DeviceContactInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F4B019211073C500912B92 /* DeviceContactInfoController.swift */; }; @@ -1160,7 +1149,6 @@ D0FBE84F2273395C00B33B52 /* ChatListArchiveInfoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FBE84E2273395C00B33B52 /* ChatListArchiveInfoItem.swift */; }; D0FC194D201F82A000FEDBB2 /* OpenResolvedUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FC194C201F82A000FEDBB2 /* OpenResolvedUrl.swift */; }; D0FC408E1D5B8E7500261D9D /* TelegramUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FC408D1D5B8E7500261D9D /* TelegramUITests.swift */; }; - D0FE4DDC1F09AD0400E8A0B3 /* PresentationSurfaceLevels.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FE4DDB1F09AD0400E8A0B3 /* PresentationSurfaceLevels.swift */; }; D0FE4DE41F0AEBB900E8A0B3 /* SharedVideoContextManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FE4DE31F0AEBB900E8A0B3 /* SharedVideoContextManager.swift */; }; D0FFF7F61F55B82500BEBC01 /* InstantPageAudioItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FFF7F51F55B82500BEBC01 /* InstantPageAudioItem.swift */; }; D0FFF7F81F55B83600BEBC01 /* InstantPageAudioNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FFF7F71F55B83600BEBC01 /* InstantPageAudioNode.swift */; }; @@ -1170,7 +1158,6 @@ 0900678C21ED5EA800530762 /* WallpaperColorPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperColorPanelNode.swift; sourceTree = ""; }; 0900678E21ED8E0E00530762 /* HexColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HexColor.swift; sourceTree = ""; }; 0902838721931D960067EFBD /* LanguageSuggestionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageSuggestionController.swift; sourceTree = ""; }; - 0902838C2194AEB90067EFBD /* ImageTransparency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageTransparency.swift; sourceTree = ""; }; 090A22162273713000694CB0 /* ChatAnimationGalleryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatAnimationGalleryItem.swift; sourceTree = ""; }; 090B48C72200BCA8005083FA /* WallpaperUploadManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperUploadManager.swift; sourceTree = ""; }; 090E63E52195880F00E3C035 /* ContactAddItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactAddItem.swift; sourceTree = ""; }; @@ -1224,17 +1211,14 @@ 09619B8D21A34C0100493558 /* InstantPageScrollableNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageScrollableNode.swift; sourceTree = ""; }; 09619B9321A4ABF500493558 /* InstantPageReferenceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageReferenceController.swift; sourceTree = ""; }; 09619B9421A4ABF600493558 /* InstantPageReferenceControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstantPageReferenceControllerNode.swift; sourceTree = ""; }; - 0962E65C21B1486D00245FD9 /* CallDebugNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallDebugNode.swift; sourceTree = ""; }; 0962E66021B3512500245FD9 /* WebSearchController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchController.swift; sourceTree = ""; }; 0962E66221B3513100245FD9 /* WebSearchControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchControllerNode.swift; sourceTree = ""; }; 0962E66421B3631100245FD9 /* WebSearchNavigationContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchNavigationContentNode.swift; sourceTree = ""; }; 0962E67221B622BE00245FD9 /* PermissionSplitTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PermissionSplitTest.swift; sourceTree = ""; }; - 0962E67621B673AF00245FD9 /* Permission.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Permission.swift; sourceTree = ""; }; 0962E67821B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageAnimatedStickerItemNode.swift; sourceTree = ""; }; 0962E67A21BA00C900245FD9 /* WebSearchInterfaceState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchInterfaceState.swift; sourceTree = ""; }; 0962E67E21BA786A00245FD9 /* WebSearchItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchItem.swift; sourceTree = ""; }; 09749BC421F0E024008FDDE9 /* StickersChatInputContextPanelItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickersChatInputContextPanelItem.swift; sourceTree = ""; }; - 09749BC821F1BBA1008FDDE9 /* CallFeedbackController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallFeedbackController.swift; sourceTree = ""; }; 09749BCC21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryDecorationNode.swift; sourceTree = ""; }; 09749BCE21F236F2008FDDE9 /* ModernCheckNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModernCheckNode.swift; sourceTree = ""; }; 09797872210633CD0077D77F /* InstantPageSettingsButtonItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageSettingsButtonItemNode.swift; sourceTree = ""; }; @@ -1296,7 +1280,6 @@ 09DD88E821BAF65E000766BC /* ItemListAddressItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListAddressItem.swift; sourceTree = ""; }; 09DD88EC21BDC8B7000766BC /* FormEditableBlockItemNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormEditableBlockItemNode.swift; sourceTree = ""; }; 09DD88EE21BDDE2B000766BC /* Geocoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Geocoding.swift; sourceTree = ""; }; - 09DD88F021BE1090000766BC /* CallRatingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallRatingController.swift; sourceTree = ""; }; 09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueryItem.swift; sourceTree = ""; }; 09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueries.swift; sourceTree = ""; }; 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeSetupControllerNode.swift; sourceTree = ""; }; @@ -1345,10 +1328,8 @@ 09F79A0C21C88E8900820234 /* LegacyWebSearchEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyWebSearchEditor.swift; sourceTree = ""; }; 09F85BA421E7821500D73170 /* ThemeGridSelectionPanelNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeGridSelectionPanelNode.swift; sourceTree = ""; }; 09F85BA621E7DA5F00D73170 /* BlurredImageNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurredImageNode.swift; sourceTree = ""; }; - 09FE756C2153F5F900A3120F /* CallRouteActionSheetItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallRouteActionSheetItem.swift; sourceTree = ""; }; 09FFBCCF227B7F9000C33B4B /* anim_archiveswipe.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_archiveswipe.json; sourceTree = ""; }; 09FFBCD62281BB2D00C33B4B /* ChatTextLinkEditController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextLinkEditController.swift; sourceTree = ""; }; - 09FFBCD8228473BD00C33B4B /* CallSuggestTabController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallSuggestTabController.swift; sourceTree = ""; }; 09FFBCDA22849CB500C33B4B /* PDF.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PDF.swift; sourceTree = ""; }; 9F06830821A404AB001D8EDB /* NotificationExceptionControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationExceptionControllerNode.swift; sourceTree = ""; }; 9F06830A21A404C4001D8EDB /* NotificationExceptionSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationExceptionSettingsController.swift; sourceTree = ""; }; @@ -1625,7 +1606,6 @@ D049EAE51E44AD5600A2CD3A /* ChatMediaInputMetaSectionItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputMetaSectionItemNode.swift; sourceTree = ""; }; D049EAED1E44BB3200A2CD3A /* ChatListRecentPeersListItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListRecentPeersListItem.swift; sourceTree = ""; }; D049EAF21E44DE2500A2CD3A /* AuthorizationSequenceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceController.swift; sourceTree = ""; }; - D04B4D101EEA04D400711AF6 /* MapResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapResources.swift; sourceTree = ""; }; D04B4D121EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageMapBubbleContentNode.swift; sourceTree = ""; }; D04B4D651EEA993A00711AF6 /* LegacyLocationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LegacyLocationController.swift; sourceTree = ""; }; D04BB2B21E44E56200650E93 /* AuthorizationSequenceSplashController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceSplashController.swift; sourceTree = ""; }; @@ -1738,7 +1718,6 @@ D079FCDC1F05C4F20038FADE /* LocalAuth.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocalAuth.swift; sourceTree = ""; }; D079FCDE1F05C9280038FADE /* BotReceiptController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BotReceiptController.swift; sourceTree = ""; }; D079FCE01F05C9380038FADE /* BotReceiptControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BotReceiptControllerNode.swift; sourceTree = ""; }; - D079FCE81F06A76C0038FADE /* Notices.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Notices.swift; sourceTree = ""; }; D07A7DA21D957671005BCD27 /* ListMessageSnippetItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListMessageSnippetItemNode.swift; sourceTree = ""; }; D07A7DA41D95783C005BCD27 /* ListMessageNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListMessageNode.swift; sourceTree = ""; }; D07ABBA4202A14BC003671DE /* LegacyImagePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyImagePicker.swift; sourceTree = ""; }; @@ -1869,7 +1848,6 @@ D0AB0BBA1D6719B5002C78E7 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; D0AB262821C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessagePollBubbleContentNode.swift; sourceTree = ""; }; D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelPermissionsController.swift; sourceTree = ""; }; - D0ACCB191EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerKeyPreviewNode.swift; sourceTree = ""; }; D0ACCB1B1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageCallBubbleContentNode.swift; sourceTree = ""; }; D0AD02E91FFFEBEF00C1DCFF /* ChatMessageLiveLocationTextNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageLiveLocationTextNode.swift; sourceTree = ""; }; D0AD02EB20000D0100C1DCFF /* ChatMessageLiveLocationPositionNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageLiveLocationPositionNode.swift; sourceTree = ""; }; @@ -2001,6 +1979,11 @@ D0C9C01F22FE385700FAB518 /* SwipeToDismissGesture.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwipeToDismissGesture.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0C9C04622FE392100FAB518 /* DirectionalPanGesture.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DirectionalPanGesture.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0C9C07C22FE3B7200FAB518 /* UndoUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = UndoUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0D022FE3E2D00FAB518 /* PhotoResources.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PhotoResources.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0F622FE3F8E00FAB518 /* TinyThumbnail.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TinyThumbnail.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C12022FE40BE00FAB518 /* ImageTransparency.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ImageTransparency.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C14C22FE439B00FAB518 /* TelegramNotices.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramNotices.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C17622FEF22200FAB518 /* TelegramPermissions.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPermissions.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatEditInterfaceMessageState.swift; sourceTree = ""; }; D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceController.swift; sourceTree = ""; }; D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceControllerNode.swift; sourceTree = ""; }; @@ -2238,8 +2221,6 @@ D0EC55A2210231D600D1992C /* SearchPeerMembers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchPeerMembers.swift; sourceTree = ""; }; D0EC6B351EB88D0A00EBF1C3 /* ThemeGridController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridController.swift; sourceTree = ""; }; D0EC6B371EB88D1600EBF1C3 /* ThemeGridControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeGridControllerNode.swift; sourceTree = ""; }; - D0EC6B3A1EB8CF2B00EBF1C3 /* CallController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallController.swift; sourceTree = ""; }; - D0EC6B3C1EB8CF3500EBF1C3 /* CallControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerNode.swift; sourceTree = ""; }; D0EC6B401EB8F7D700EBF1C3 /* VoipDynamic.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VoipDynamic.framework; path = "../../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-diblohvjozhgaifjcniwdlixlilx/Build/Products/Debug-iphonesimulator/VoipDynamic.framework"; sourceTree = ""; }; D0EC6B421EB92DF600EBF1C3 /* OverlayMediaController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayMediaController.swift; sourceTree = ""; }; D0EC6B441EB92E5A00EBF1C3 /* OverlayMediaControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayMediaControllerNode.swift; sourceTree = ""; }; @@ -2255,9 +2236,6 @@ D0F02CCB1E96EF350065DEE2 /* ChatMediaInputStickerPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputStickerPane.swift; sourceTree = ""; }; D0F02CCD1E96FACE0065DEE2 /* ChatMediaInputGifPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputGifPane.swift; sourceTree = ""; }; D0F02CD81E97ED080065DEE2 /* RecentGifManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecentGifManagedMediaId.swift; sourceTree = ""; }; - D0F0AAE11EC20EF8005EE2A5 /* CallControllerStatusNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerStatusNode.swift; sourceTree = ""; }; - D0F0AAE31EC21AAA005EE2A5 /* CallControllerButtonsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerButtonsNode.swift; sourceTree = ""; }; - D0F0AAE51EC21B68005EE2A5 /* CallControllerButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerButton.swift; sourceTree = ""; }; D0F19F6120E5694D00EEC860 /* GroupStickerPackCurrentItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupStickerPackCurrentItem.swift; sourceTree = ""; }; D0F19F6320E5A15B00EEC860 /* ChatMediaInputPeerSpecificItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMediaInputPeerSpecificItem.swift; sourceTree = ""; }; D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelegramAccountAuxiliaryMethods.swift; sourceTree = ""; }; @@ -2331,7 +2309,6 @@ D0F69E831D6B8C850046BCD6 /* FrameworkBundle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FrameworkBundle.swift; sourceTree = ""; }; D0F69E931D6B8C9B0046BCD6 /* ProgressiveImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProgressiveImage.swift; sourceTree = ""; }; D0F69E941D6B8C9B0046BCD6 /* WebP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebP.swift; sourceTree = ""; }; - D0F69E9F1D6B8E380046BCD6 /* PhotoResources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoResources.swift; sourceTree = ""; }; D0F69EA61D6B9BBC0046BCD6 /* libwebp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libwebp.a; path = "third-party/libwebp/lib/libwebp.a"; sourceTree = ""; }; D0F69EA81D6B9BCB0046BCD6 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "third-party/FFmpeg-iOS/lib/libavcodec.a"; sourceTree = ""; }; D0F69EA91D6B9BCB0046BCD6 /* libavformat.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavformat.a; path = "third-party/FFmpeg-iOS/lib/libavformat.a"; sourceTree = ""; }; @@ -2356,7 +2333,6 @@ D0FC40881D5B8E7500261D9D /* TelegramUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TelegramUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; D0FC408D1D5B8E7500261D9D /* TelegramUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TelegramUITests.swift; sourceTree = ""; }; D0FC408F1D5B8E7500261D9D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D0FE4DDB1F09AD0400E8A0B3 /* PresentationSurfaceLevels.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PresentationSurfaceLevels.swift; sourceTree = ""; }; D0FE4DE31F0AEBB900E8A0B3 /* SharedVideoContextManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedVideoContextManager.swift; sourceTree = ""; }; D0FFF7F51F55B82500BEBC01 /* InstantPageAudioItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageAudioItem.swift; sourceTree = ""; }; D0FFF7F71F55B83600BEBC01 /* InstantPageAudioNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPageAudioNode.swift; sourceTree = ""; }; @@ -2367,6 +2343,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D0C9C17722FEF22200FAB518 /* TelegramPermissions.framework in Frameworks */, + D0C9C14D22FE439B00FAB518 /* TelegramNotices.framework in Frameworks */, + D0C9C12122FE40BE00FAB518 /* ImageTransparency.framework in Frameworks */, + D0C9C0F722FE3F8E00FAB518 /* TinyThumbnail.framework in Frameworks */, + D0C9C0D122FE3E2D00FAB518 /* PhotoResources.framework in Frameworks */, D0C9C07D22FE3B7200FAB518 /* UndoUI.framework in Frameworks */, D0C9C04722FE392100FAB518 /* DirectionalPanGesture.framework in Frameworks */, D0C9C02022FE385700FAB518 /* SwipeToDismissGesture.framework in Frameworks */, @@ -2582,7 +2563,6 @@ 09B4EE4E21A7B75D00847FA6 /* PermissionControllerNode.swift */, 09B4EE5D21AC626B00847FA6 /* PermissionContentNode.swift */, 09B4EE5121A7CC3E00847FA6 /* SolidRoundedButtonNode.swift */, - 0962E67621B673AF00245FD9 /* Permission.swift */, ); name = Permissions; sourceTree = ""; @@ -2637,7 +2617,6 @@ children = ( 09F664CD21EBB3A100AB7E26 /* ImageBlur.swift */, D0BE3036206139F500FBE6D8 /* ImageCompression.swift */, - 0902838C2194AEB90067EFBD /* ImageTransparency.swift */, D000CABB21F158AD0011B15D /* PrepareSecretThumbnailData.swift */, D0F69E931D6B8C9B0046BCD6 /* ProgressiveImage.swift */, D0E8B8B8204477B600605593 /* SecretChatKeyVisualization.swift */, @@ -2663,7 +2642,6 @@ 09E4A7FE223ADFD80038140F /* Data */ = { isa = PBXGroup; children = ( - D079FCE81F06A76C0038FADE /* Notices.swift */, D09250051FE5371D003F693F /* GlobalExperimentalSettings.swift */, D01749541E1082770057C89A /* StoredMessageFromSearchPeer.swift */, D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */, @@ -2678,7 +2656,6 @@ isa = PBXGroup; children = ( D0192D45210F4F940005FA10 /* FixSearchableListNodeScrolling.swift */, - D0FE4DDB1F09AD0400E8A0B3 /* PresentationSurfaceLevels.swift */, ); name = UI; sourceTree = ""; @@ -3449,6 +3426,11 @@ D08D45281D5E340200A7428A /* Frameworks */ = { isa = PBXGroup; children = ( + D0C9C17622FEF22200FAB518 /* TelegramPermissions.framework */, + D0C9C14C22FE439B00FAB518 /* TelegramNotices.framework */, + D0C9C12022FE40BE00FAB518 /* ImageTransparency.framework */, + D0C9C0F622FE3F8E00FAB518 /* TinyThumbnail.framework */, + D0C9C0D022FE3E2D00FAB518 /* PhotoResources.framework */, D0C9C07C22FE3B7200FAB518 /* UndoUI.framework */, D0C9C04622FE392100FAB518 /* DirectionalPanGesture.framework */, D0C9C01F22FE385700FAB518 /* SwipeToDismissGesture.framework */, @@ -4218,17 +4200,6 @@ D0EC6B391EB8CF1E00EBF1C3 /* Call */ = { isa = PBXGroup; children = ( - D0EC6B3A1EB8CF2B00EBF1C3 /* CallController.swift */, - D0EC6B3C1EB8CF3500EBF1C3 /* CallControllerNode.swift */, - D0F0AAE11EC20EF8005EE2A5 /* CallControllerStatusNode.swift */, - D0F0AAE31EC21AAA005EE2A5 /* CallControllerButtonsNode.swift */, - D0F0AAE51EC21B68005EE2A5 /* CallControllerButton.swift */, - D0ACCB191EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift */, - 09FE756C2153F5F900A3120F /* CallRouteActionSheetItem.swift */, - 0962E65C21B1486D00245FD9 /* CallDebugNode.swift */, - 09DD88F021BE1090000766BC /* CallRatingController.swift */, - 09749BC821F1BBA1008FDDE9 /* CallFeedbackController.swift */, - 09FFBCD8228473BD00C33B4B /* CallSuggestTabController.swift */, ); name = Call; sourceTree = ""; @@ -4736,14 +4707,12 @@ D0F69E9D1D6B8E240046BCD6 /* Resources */ = { isa = PBXGroup; children = ( - D0F69E9F1D6B8E380046BCD6 /* PhotoResources.swift */, D06879561DB8F22200424BBD /* FetchCachedRepresentations.swift */, D04662801E68BA64006FAFC4 /* TransformOutgoingMessageMedia.swift */, D0F3A8B51E83120A00B4C64C /* FetchResource.swift */, D0F3A8B71E83125C00B4C64C /* MediaResources.swift */, D0F3A8B91E831E6300B4C64C /* FetchVideoMediaResource.swift */, D06E4AC31E84806300627D1D /* FetchPhotoLibraryImageResource.swift */, - D04B4D101EEA04D400711AF6 /* MapResources.swift */, D0FB87B11F7C4C19004DE005 /* FetchMediaUtils.swift */, D056CD731FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift */, D007019D2029EFDD006B9E34 /* ICloudResources.swift */, @@ -5124,7 +5093,6 @@ D0684A041F6C3AD50059F570 /* ChatListTypingNode.swift in Sources */, D0383EE6207D299600C45548 /* EmojisChatInputPanelItem.swift in Sources */, D00817E322B47A14008A895F /* TGPresentationAutoNightPreferences.m in Sources */, - D0FE4DDC1F09AD0400E8A0B3 /* PresentationSurfaceLevels.swift in Sources */, D0119CD020CAE75F00895300 /* LegacySecureIdAttachmentMenu.swift in Sources */, D0E412DA206A894800BEE4A2 /* SecureIdValueFormFileItem.swift in Sources */, 09B4EE6221AD791600847FA6 /* InstantPageStoredState.swift in Sources */, @@ -5135,7 +5103,6 @@ D083491C209361DC008CFD52 /* AvatarGalleryItemFooterContentNode.swift in Sources */, 090E778A22A9F23C00CD99F5 /* ChannelOwnershipTransferController.swift in Sources */, D06E4C352134AE3C00088087 /* ThemeAutoNightSettingsController.swift in Sources */, - D0F0AAE21EC20EF8005EE2A5 /* CallControllerStatusNode.swift in Sources */, D0B2F76C2052A7D600D3BFB9 /* SinglePhoneInputNode.swift in Sources */, D04281F6200E5AC2009DDE36 /* ChatRecentActionsControllerNode.swift in Sources */, 0941A9A0210B057200EBE194 /* OpenInActionSheetController.swift in Sources */, @@ -5152,7 +5119,6 @@ 09D304182173C15700C00567 /* WatchSettingsController.swift in Sources */, D0EC6CBC1EB9F58800EBF1C3 /* LegacyController.swift in Sources */, D0EC6CBD1EB9F58800EBF1C3 /* LegacyControllerNode.swift in Sources */, - D079FCE91F06A76C0038FADE /* Notices.swift in Sources */, D0C0B5B71EE1DEF1000F4D2C /* ThemeGridControllerItem.swift in Sources */, D0EC6CBE1EB9F58800EBF1C3 /* TelegramInitializeLegacyComponents.swift in Sources */, D0EC6CBF1EB9F58800EBF1C3 /* LegacyAttachmentMenu.swift in Sources */, @@ -5223,7 +5189,6 @@ D0642EFC1F3E1E7B00792790 /* ChatHistoryNavigationButtons.swift in Sources */, D03AA4E5202DF8840056C405 /* StickerPreviewPeekContent.swift in Sources */, D025402322E1C92D00AC0195 /* ChatSlowmodeItem.swift in Sources */, - 09DD88F121BE1090000766BC /* CallRatingController.swift in Sources */, D05D8B3F2192FC6E0064586F /* LocalizationListControllerNode.swift in Sources */, D0AA840C1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift in Sources */, 09DD5D5021ECC3C400D7007A /* SuppressContactsWarning.swift in Sources */, @@ -5253,7 +5218,6 @@ D056CD7A1FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift in Sources */, D0BE30472061C0BC00FBE6D8 /* SecureIdAuthPasswordOptionContentNode.swift in Sources */, D0EC6CF71EB9F58800EBF1C3 /* RecentGifManagedMediaId.swift in Sources */, - D0ACCB1A1EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift in Sources */, D0E9BA611F055A4300F079A4 /* STPDelegateProxy.m in Sources */, D0EC6CF91EB9F58800EBF1C3 /* MediaManager.swift in Sources */, 0962E66521B3631100245FD9 /* WebSearchNavigationContentNode.swift in Sources */, @@ -5328,7 +5292,6 @@ D0B21B15220D85DD003F741D /* TabBarAccountSwitchController.swift in Sources */, D0ADF966212E05A300310BBC /* TonePlayer.swift in Sources */, D007019E2029EFDD006B9E34 /* ICloudResources.swift in Sources */, - D0EC6D221EB9F58800EBF1C3 /* PhotoResources.swift in Sources */, D048EA871F4F296400188713 /* InstantPageSettingsFontSizeItemNode.swift in Sources */, D0F760DD222034980074F7E5 /* ChannelStatsControllerNode.swift in Sources */, 09C9EA3821A044B500E90146 /* StringForDuration.swift in Sources */, @@ -5404,7 +5367,6 @@ 09DE2F252269B7E80045E975 /* PasscodeSetupControllerNode.swift in Sources */, D0EC6D4E1EB9F58800EBF1C3 /* ChatListItem.swift in Sources */, D0B2F76A2052920D00D3BFB9 /* UserInfoEditingPhoneItem.swift in Sources */, - 09749BC921F1BBA1008FDDE9 /* CallFeedbackController.swift in Sources */, 099529FA21DD8A3100805E13 /* NavigationBarSearchContentNode.swift in Sources */, D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */, D0EC6D4F1EB9F58800EBF1C3 /* ChatListSearchItem.swift in Sources */, @@ -5648,7 +5610,6 @@ D0EC6DBC1EB9F58900EBF1C3 /* ChatMediaInputGifPane.swift in Sources */, D0EC6DBD1EB9F58900EBF1C3 /* ChatMediaInputPanelEntries.swift in Sources */, D0471B4F1EFD84600074D609 /* BotCheckoutPriceItem.swift in Sources */, - 0962E65D21B1486D00245FD9 /* CallDebugNode.swift in Sources */, D008178222B47464008A895F /* NotificationContentContext.swift in Sources */, D0EC6DBE1EB9F58900EBF1C3 /* ChatMediaInputGridEntries.swift in Sources */, D0EC6DBF1EB9F58900EBF1C3 /* ChatMediaInputMetaSectionItemNode.swift in Sources */, @@ -5668,7 +5629,6 @@ 0962E66121B3512500245FD9 /* WebSearchController.swift in Sources */, D0EC6DC61EB9F58900EBF1C3 /* MultiplexedSoftwareVideoSourceManager.swift in Sources */, D0EC6DC71EB9F58900EBF1C3 /* SampleBufferPool.swift in Sources */, - 0962E67721B673AF00245FD9 /* Permission.swift in Sources */, 0900678F21ED8E0E00530762 /* HexColor.swift in Sources */, D0EC6DC81EB9F58900EBF1C3 /* MultiplexedVideoNode.swift in Sources */, D0EC6DC91EB9F58900EBF1C3 /* SoftwareVideoLayerFrameManager.swift in Sources */, @@ -5700,7 +5660,6 @@ D0EC6DD71EB9F58900EBF1C3 /* VerticalListContextResultsChatInputPanelItem.swift in Sources */, D0EC6DD81EB9F58900EBF1C3 /* VerticalListContextResultsChatInputPanelButtonItem.swift in Sources */, D04281F4200E5AB0009DDE36 /* ChatRecentActionsController.swift in Sources */, - 09FE756D2153F5F900A3120F /* CallRouteActionSheetItem.swift in Sources */, D0BFAE4E20AB1D7B00793CF2 /* DisabledContextResultsChatInputContextPanelNode.swift in Sources */, D064EF871F69A06F00AC0398 /* MessageContentKind.swift in Sources */, D020A9DA1FEAE675008C66F7 /* OverlayAudioPlayerController.swift in Sources */, @@ -5716,7 +5675,6 @@ D06350AE2229A7F800FA2B32 /* InChatPrefetchManager.swift in Sources */, D0EB41F51F30D26A00838FE6 /* LegacySuggestionContext.swift in Sources */, D0EC6DDD1EB9F58900EBF1C3 /* ChatTextInputMediaRecordingButton.swift in Sources */, - D0F0AAE61EC21B68005EE2A5 /* CallControllerButton.swift in Sources */, D0EC6DDE1EB9F58900EBF1C3 /* ChatTextInputAudioRecordingOverlayButton.swift in Sources */, D0E9BAC91F05738600F079A4 /* STPAPIClient+ApplePay.m in Sources */, 09F79A0721C829BC00820234 /* GalleryNavigationCheckNode.swift in Sources */, @@ -5764,7 +5722,6 @@ D080B27F1F4C7C6000AA3847 /* InstantPageManagedMediaId.swift in Sources */, D08984F02114AE0C00918162 /* DataPrivacySettingsController.swift in Sources */, D0EC6DFB1EB9F58900EBF1C3 /* AvatarGalleryController.swift in Sources */, - 09FFBCD9228473BD00C33B4B /* CallSuggestTabController.swift in Sources */, D0EC6DFC1EB9F58900EBF1C3 /* GalleryController.swift in Sources */, D0EC6DFD1EB9F58900EBF1C3 /* GalleryControllerNode.swift in Sources */, 09EC5CDC22CBD33D00292E42 /* NumberFormat.swift in Sources */, @@ -5792,7 +5749,6 @@ D00817E222B47A14008A895F /* UIImage+ImageEffects.m in Sources */, D0E412CE206A707400BEE4A2 /* FormControllerTextItem.swift in Sources */, D007019C2029E8F2006B9E34 /* LegacyICloudFileController.swift in Sources */, - 0902838D2194AEB90067EFBD /* ImageTransparency.swift in Sources */, D000CABC21F158AD0011B15D /* PrepareSecretThumbnailData.swift in Sources */, D0208AD61FA33D14001F0D5F /* RaiseToListenActivator.m in Sources */, D0EC6E061EB9F58900EBF1C3 /* ChatDocumentGalleryItem.swift in Sources */, @@ -5809,7 +5765,6 @@ D0EC6E0C1EB9F58900EBF1C3 /* ChatItemGalleryFooterContentNode.swift in Sources */, D0E9BABD1F05735F00F079A4 /* STPPaymentConfiguration.m in Sources */, D0EC6E0E1EB9F58900EBF1C3 /* PeerAvatarImageGalleryItem.swift in Sources */, - D04B4D111EEA04D400711AF6 /* MapResources.swift in Sources */, D0380DA9204E9C81000414AB /* SecretMediaPreviewFooterContentNode.swift in Sources */, D0AFCC7B1F4C8D39000720C6 /* InstantPageSlideshowItemNode.swift in Sources */, D0E9BA211F05577700F079A4 /* STPCardParams.m in Sources */, @@ -5949,9 +5904,7 @@ D093D7D92062A9CA00BC3599 /* SecureIdAuthControllerState.swift in Sources */, D01590AB22BD467B0017C33E /* AnimationRenderer.swift in Sources */, D0EC6E591EB9F58900EBF1C3 /* PeerSelectionControllerNode.swift in Sources */, - D0EC6E5B1EB9F58900EBF1C3 /* CallController.swift in Sources */, D0AB262921C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift in Sources */, - D0EC6E5C1EB9F58900EBF1C3 /* CallControllerNode.swift in Sources */, D0F4B0222110972300912B92 /* ContactInfoStrings.swift in Sources */, D0EC6E5D1EB9F58900EBF1C3 /* PrivacyAndSecurityController.swift in Sources */, D0EC6E5E1EB9F58900EBF1C3 /* ItemListRecentSessionItem.swift in Sources */, @@ -5992,7 +5945,6 @@ D0EC6E771EB9F58900EBF1C3 /* NotificationsAndSounds.swift in Sources */, D0EC6E781EB9F58900EBF1C3 /* NotificationSoundSelection.swift in Sources */, D056CD741FF2996B00880D28 /* ExternalMusicAlbumArtResources.swift in Sources */, - D0F0AAE41EC21AAA005EE2A5 /* CallControllerButtonsNode.swift in Sources */, D0EC6E7A1EB9F58900EBF1C3 /* DebugController.swift in Sources */, D07ABBAB202A1BD1003671DE /* LegacyWallpaperPicker.swift in Sources */, 09E2D9F1226F214000EA0AA4 /* EmojiResources.swift in Sources */, diff --git a/submodules/TinyThumbnail/Info.plist b/submodules/TinyThumbnail/Info.plist new file mode 100644 index 0000000000..e1fe4cfb7b --- /dev/null +++ b/submodules/TinyThumbnail/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/submodules/TinyThumbnail/Sources/TinyThumbnail.h b/submodules/TinyThumbnail/Sources/TinyThumbnail.h new file mode 100644 index 0000000000..a7b8ea6aca --- /dev/null +++ b/submodules/TinyThumbnail/Sources/TinyThumbnail.h @@ -0,0 +1,19 @@ +// +// TinyThumbnail.h +// TinyThumbnail +// +// Created by Peter on 8/10/19. +// Copyright © 2019 Telegram Messenger LLP. All rights reserved. +// + +#import + +//! Project version number for TinyThumbnail. +FOUNDATION_EXPORT double TinyThumbnailVersionNumber; + +//! Project version string for TinyThumbnail. +FOUNDATION_EXPORT const unsigned char TinyThumbnailVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/submodules/TinyThumbnail/Sources/TinyThumbnail.swift b/submodules/TinyThumbnail/Sources/TinyThumbnail.swift new file mode 100644 index 0000000000..4d3777c448 --- /dev/null +++ b/submodules/TinyThumbnail/Sources/TinyThumbnail.swift @@ -0,0 +1,32 @@ +import Foundation + +private let tinyThumbnailHeaderPattern = Data(base64Encoded: "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDACgcHiMeGSgjISMtKygwPGRBPDc3PHtYXUlkkYCZlo+AjIqgtObDoKrarYqMyP/L2u71////m8H////6/+b9//j/2wBDASstLTw1PHZBQXb4pYyl+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj/wAARCAAAAAADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwA=") +private let tinyThumbnailFooterPattern = Data(base64Encoded: "/9k=") + +public func decodeTinyThumbnail(data: Data) -> Data? { + if data.count < 3 { + return nil + } + guard let tinyThumbnailHeaderPattern = tinyThumbnailHeaderPattern, let tinyThumbnailFooterPattern = tinyThumbnailFooterPattern else { + return nil + } + var version: UInt8 = 0 + data.copyBytes(to: &version, count: 1) + if version != 1 { + return nil + } + var width: UInt8 = 0 + var height: UInt8 = 0 + data.copyBytes(to: &width, from: 1 ..< 2) + data.copyBytes(to: &height, from: 2 ..< 3) + + var resultData = Data() + resultData.append(tinyThumbnailHeaderPattern) + resultData.append(data.subdata(in: 3 ..< data.count)) + resultData.append(tinyThumbnailFooterPattern) + resultData.withUnsafeMutableBytes({ (resultBytes: UnsafeMutablePointer) -> Void in + resultBytes[164] = width + resultBytes[166] = height + }) + return resultData +} diff --git a/submodules/TinyThumbnail/TinyThumbnail_Xcode.xcodeproj/project.pbxproj b/submodules/TinyThumbnail/TinyThumbnail_Xcode.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..dd212b7652 --- /dev/null +++ b/submodules/TinyThumbnail/TinyThumbnail_Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,543 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + D0C9C0E522FE3EDF00FAB518 /* TinyThumbnail.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9C0E322FE3EDF00FAB518 /* TinyThumbnail.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0C9C0F022FE3F4600FAB518 /* TinyThumbnail.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C0EF22FE3F4600FAB518 /* TinyThumbnail.swift */; }; + D0C9C0F322FE3F6700FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C0F222FE3F6700FAB518 /* Foundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + D0C9C0E022FE3EDF00FAB518 /* TinyThumbnail.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TinyThumbnail.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D0C9C0E322FE3EDF00FAB518 /* TinyThumbnail.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TinyThumbnail.h; sourceTree = ""; }; + D0C9C0E422FE3EDF00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D0C9C0EF22FE3F4600FAB518 /* TinyThumbnail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TinyThumbnail.swift; sourceTree = ""; }; + D0C9C0F222FE3F6700FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D0C9C0DD22FE3EDF00FAB518 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C0F322FE3F6700FAB518 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + D0C9C0D622FE3EDF00FAB518 = { + isa = PBXGroup; + children = ( + D0C9C0E422FE3EDF00FAB518 /* Info.plist */, + D0C9C0E222FE3EDF00FAB518 /* Sources */, + D0C9C0E122FE3EDF00FAB518 /* Products */, + D0C9C0F122FE3F6700FAB518 /* Frameworks */, + ); + sourceTree = ""; + }; + D0C9C0E122FE3EDF00FAB518 /* Products */ = { + isa = PBXGroup; + children = ( + D0C9C0E022FE3EDF00FAB518 /* TinyThumbnail.framework */, + ); + name = Products; + sourceTree = ""; + }; + D0C9C0E222FE3EDF00FAB518 /* Sources */ = { + isa = PBXGroup; + children = ( + D0C9C0E322FE3EDF00FAB518 /* TinyThumbnail.h */, + D0C9C0EF22FE3F4600FAB518 /* TinyThumbnail.swift */, + ); + path = Sources; + sourceTree = ""; + }; + D0C9C0F122FE3F6700FAB518 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D0C9C0F222FE3F6700FAB518 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D0C9C0DB22FE3EDF00FAB518 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C0E522FE3EDF00FAB518 /* TinyThumbnail.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D0C9C0DF22FE3EDF00FAB518 /* TinyThumbnail */ = { + isa = PBXNativeTarget; + buildConfigurationList = D0C9C0E822FE3EDF00FAB518 /* Build configuration list for PBXNativeTarget "TinyThumbnail" */; + buildPhases = ( + D0C9C0DB22FE3EDF00FAB518 /* Headers */, + D0C9C0DC22FE3EDF00FAB518 /* Sources */, + D0C9C0DD22FE3EDF00FAB518 /* Frameworks */, + D0C9C0DE22FE3EDF00FAB518 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TinyThumbnail; + productName = TinyThumbnail; + productReference = D0C9C0E022FE3EDF00FAB518 /* TinyThumbnail.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D0C9C0D722FE3EDF00FAB518 /* Project object */ = { + isa = PBXProject; + attributes = { + DefaultBuildSystemTypeForWorkspace = Latest; + LastUpgradeCheck = 1030; + ORGANIZATIONNAME = "Telegram Messenger LLP"; + TargetAttributes = { + D0C9C0DF22FE3EDF00FAB518 = { + CreatedOnToolsVersion = 10.3; + LastSwiftMigration = 1030; + }; + }; + }; + buildConfigurationList = D0C9C0DA22FE3EDF00FAB518 /* Build configuration list for PBXProject "TinyThumbnail_Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = D0C9C0D622FE3EDF00FAB518; + productRefGroup = D0C9C0E122FE3EDF00FAB518 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D0C9C0DF22FE3EDF00FAB518 /* TinyThumbnail */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + D0C9C0DE22FE3EDF00FAB518 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D0C9C0DC22FE3EDF00FAB518 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0C9C0F022FE3F4600FAB518 /* TinyThumbnail.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + D0C9C0E622FE3EDF00FAB518 /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugAppStoreLLC; + }; + D0C9C0E722FE3EDF00FAB518 /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C0E922FE3EDF00FAB518 /* DebugAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TinyThumbnail; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugAppStoreLLC; + }; + D0C9C0EA22FE3EDF00FAB518 /* ReleaseAppStoreLLC */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TinyThumbnail; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseAppStoreLLC; + }; + D0C9C0EB22FE3F0E00FAB518 /* DebugHockeyapp */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = DebugHockeyapp; + }; + D0C9C0EC22FE3F0E00FAB518 /* DebugHockeyapp */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TinyThumbnail; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DebugHockeyapp; + }; + D0C9C0ED22FE3F1900FAB518 /* ReleaseHockeyappInternal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = ReleaseHockeyappInternal; + }; + D0C9C0EE22FE3F1900FAB518 /* ReleaseHockeyappInternal */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = ""; + CODE_SIGN_STYLE = Manual; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TinyThumbnail; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = ReleaseHockeyappInternal; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + D0C9C0DA22FE3EDF00FAB518 /* Build configuration list for PBXProject "TinyThumbnail_Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C0E622FE3EDF00FAB518 /* DebugAppStoreLLC */, + D0C9C0EB22FE3F0E00FAB518 /* DebugHockeyapp */, + D0C9C0E722FE3EDF00FAB518 /* ReleaseAppStoreLLC */, + D0C9C0ED22FE3F1900FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; + D0C9C0E822FE3EDF00FAB518 /* Build configuration list for PBXNativeTarget "TinyThumbnail" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D0C9C0E922FE3EDF00FAB518 /* DebugAppStoreLLC */, + D0C9C0EC22FE3F0E00FAB518 /* DebugHockeyapp */, + D0C9C0EA22FE3EDF00FAB518 /* ReleaseAppStoreLLC */, + D0C9C0EE22FE3F1900FAB518 /* ReleaseHockeyappInternal */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = ReleaseAppStoreLLC; + }; +/* End XCConfigurationList section */ + }; + rootObject = D0C9C0D722FE3EDF00FAB518 /* Project object */; +}