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