Refactor ComposePollUI

This commit is contained in:
Peter 2019-08-10 02:18:40 +03:00
parent cc9df59ef7
commit 47dbe03aaf
72 changed files with 1382 additions and 97 deletions

View File

@ -143,6 +143,9 @@
location = "group:submodules/AvatarNode/AvatarNode_Xcode.xcodeproj"> location = "group:submodules/AvatarNode/AvatarNode_Xcode.xcodeproj">
</FileRef> </FileRef>
</Group> </Group>
<FileRef
location = "group:submodules/AlertUI/AlertUI_Xcode.xcodeproj">
</FileRef>
<FileRef <FileRef
location = "group:submodules/RadialStatusNode/RadialStatusNode_Xcode.xcodeproj"> location = "group:submodules/RadialStatusNode/RadialStatusNode_Xcode.xcodeproj">
</FileRef> </FileRef>
@ -203,6 +206,9 @@
<FileRef <FileRef
location = "group:submodules/ContextUI/ContextUI_Xcode.xcodeproj"> location = "group:submodules/ContextUI/ContextUI_Xcode.xcodeproj">
</FileRef> </FileRef>
<FileRef
location = "group:submodules/ComposePollUI/ComposePollUI_Xcode.xcodeproj">
</FileRef>
</Group> </Group>
<FileRef <FileRef
location = "group:submodules/TelegramAudio/TelegramAudio_Xcode.xcodeproj"> location = "group:submodules/TelegramAudio/TelegramAudio_Xcode.xcodeproj">

View File

@ -0,0 +1,557 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
D0C9BFC722FE33F100FAB518 /* AlertUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9BFC522FE33F100FAB518 /* AlertUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0C9BFD222FE345700FAB518 /* ThemedTextAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9BFD122FE345700FAB518 /* ThemedTextAlertController.swift */; };
D0C9BFD522FE346600FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFD422FE346600FAB518 /* Foundation.framework */; };
D0C9BFD722FE346900FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFD622FE346900FAB518 /* UIKit.framework */; };
D0C9BFD922FE346E00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFD822FE346E00FAB518 /* Display.framework */; };
D0C9BFDD22FE347900FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFDC22FE347900FAB518 /* AccountContext.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
D0C9BFC222FE33F100FAB518 /* AlertUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AlertUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFC522FE33F100FAB518 /* AlertUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AlertUI.h; sourceTree = "<group>"; };
D0C9BFC622FE33F100FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D0C9BFD122FE345700FAB518 /* ThemedTextAlertController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemedTextAlertController.swift; sourceTree = "<group>"; };
D0C9BFD422FE346600FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
D0C9BFD622FE346900FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
D0C9BFD822FE346E00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFDA22FE347300FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFDC22FE347900FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
D0C9BFBF22FE33F100FAB518 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
D0C9BFDD22FE347900FAB518 /* AccountContext.framework in Frameworks */,
D0C9BFD922FE346E00FAB518 /* Display.framework in Frameworks */,
D0C9BFD722FE346900FAB518 /* UIKit.framework in Frameworks */,
D0C9BFD522FE346600FAB518 /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
D0C9BFB822FE33F100FAB518 = {
isa = PBXGroup;
children = (
D0C9BFC622FE33F100FAB518 /* Info.plist */,
D0C9BFC422FE33F100FAB518 /* Sources */,
D0C9BFC322FE33F100FAB518 /* Products */,
D0C9BFD322FE346600FAB518 /* Frameworks */,
);
sourceTree = "<group>";
};
D0C9BFC322FE33F100FAB518 /* Products */ = {
isa = PBXGroup;
children = (
D0C9BFC222FE33F100FAB518 /* AlertUI.framework */,
);
name = Products;
sourceTree = "<group>";
};
D0C9BFC422FE33F100FAB518 /* Sources */ = {
isa = PBXGroup;
children = (
D0C9BFD122FE345700FAB518 /* ThemedTextAlertController.swift */,
D0C9BFC522FE33F100FAB518 /* AlertUI.h */,
);
path = Sources;
sourceTree = "<group>";
};
D0C9BFD322FE346600FAB518 /* Frameworks */ = {
isa = PBXGroup;
children = (
D0C9BFDC22FE347900FAB518 /* AccountContext.framework */,
D0C9BFDA22FE347300FAB518 /* TelegramCore.framework */,
D0C9BFD822FE346E00FAB518 /* Display.framework */,
D0C9BFD622FE346900FAB518 /* UIKit.framework */,
D0C9BFD422FE346600FAB518 /* Foundation.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
D0C9BFBD22FE33F100FAB518 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
D0C9BFC722FE33F100FAB518 /* AlertUI.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
D0C9BFC122FE33F100FAB518 /* AlertUI */ = {
isa = PBXNativeTarget;
buildConfigurationList = D0C9BFCA22FE33F100FAB518 /* Build configuration list for PBXNativeTarget "AlertUI" */;
buildPhases = (
D0C9BFBD22FE33F100FAB518 /* Headers */,
D0C9BFBE22FE33F100FAB518 /* Sources */,
D0C9BFBF22FE33F100FAB518 /* Frameworks */,
D0C9BFC022FE33F100FAB518 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AlertUI;
productName = AlertUI;
productReference = D0C9BFC222FE33F100FAB518 /* AlertUI.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
D0C9BFB922FE33F100FAB518 /* Project object */ = {
isa = PBXProject;
attributes = {
DefaultBuildSystemTypeForWorkspace = Latest;
LastUpgradeCheck = 1030;
ORGANIZATIONNAME = "Telegram Messenger LLP";
TargetAttributes = {
D0C9BFC122FE33F100FAB518 = {
CreatedOnToolsVersion = 10.3;
LastSwiftMigration = 1030;
};
};
};
buildConfigurationList = D0C9BFBC22FE33F100FAB518 /* Build configuration list for PBXProject "AlertUI_Xcode" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = D0C9BFB822FE33F100FAB518;
productRefGroup = D0C9BFC322FE33F100FAB518 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
D0C9BFC122FE33F100FAB518 /* AlertUI */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
D0C9BFC022FE33F100FAB518 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
D0C9BFBE22FE33F100FAB518 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
D0C9BFD222FE345700FAB518 /* ThemedTextAlertController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
D0C9BFC822FE33F100FAB518 /* 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;
};
D0C9BFC922FE33F100FAB518 /* 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;
};
D0C9BFCB22FE33F100FAB518 /* 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.AlertUI;
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;
};
D0C9BFCC22FE33F100FAB518 /* 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.AlertUI;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = ReleaseAppStoreLLC;
};
D0C9BFCD22FE343200FAB518 /* 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;
};
D0C9BFCE22FE343200FAB518 /* 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.AlertUI;
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;
};
D0C9BFCF22FE344000FAB518 /* 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;
};
D0C9BFD022FE344000FAB518 /* 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.AlertUI;
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 */
D0C9BFBC22FE33F100FAB518 /* Build configuration list for PBXProject "AlertUI_Xcode" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0C9BFC822FE33F100FAB518 /* DebugAppStoreLLC */,
D0C9BFCD22FE343200FAB518 /* DebugHockeyapp */,
D0C9BFC922FE33F100FAB518 /* ReleaseAppStoreLLC */,
D0C9BFCF22FE344000FAB518 /* ReleaseHockeyappInternal */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = ReleaseAppStoreLLC;
};
D0C9BFCA22FE33F100FAB518 /* Build configuration list for PBXNativeTarget "AlertUI" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0C9BFCB22FE33F100FAB518 /* DebugAppStoreLLC */,
D0C9BFCE22FE343200FAB518 /* DebugHockeyapp */,
D0C9BFCC22FE33F100FAB518 /* ReleaseAppStoreLLC */,
D0C9BFD022FE344000FAB518 /* ReleaseHockeyappInternal */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = ReleaseAppStoreLLC;
};
/* End XCConfigurationList section */
};
rootObject = D0C9BFB922FE33F100FAB518 /* Project object */;
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -0,0 +1,19 @@
//
// AlertUI.h
// AlertUI
//
// Created by Peter on 8/10/19.
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
//
#import <UIKit/UIKit.h>
//! Project version number for AlertUI.
FOUNDATION_EXPORT double AlertUIVersionNumber;
//! Project version string for AlertUI.
FOUNDATION_EXPORT const unsigned char AlertUIVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <AlertUI/PublicHeader.h>

View File

@ -1,7 +1,6 @@
import Foundation import Foundation
import UIKit import UIKit
import Display import Display
import TelegramCore
import AccountContext import AccountContext
public func textAlertController(context: AccountContext, title: String?, text: String, actions: [TextAlertAction], actionLayout: TextAlertContentActionLayout = .horizontal) -> AlertController { public func textAlertController(context: AccountContext, title: String?, text: String, actions: [TextAlertAction], actionLayout: TextAlertContentActionLayout = .horizontal) -> AlertController {

View File

@ -0,0 +1,591 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
D0C9BF8722FE309900FAB518 /* ComposePollUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9BF8522FE309900FAB518 /* ComposePollUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0C9BF9422FE311300FAB518 /* CreatePollController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9BF9122FE311300FAB518 /* CreatePollController.swift */; };
D0C9BF9522FE311300FAB518 /* CreatePollOptionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9BF9222FE311300FAB518 /* CreatePollOptionItem.swift */; };
D0C9BF9622FE311300FAB518 /* CreatePollOptionActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9BF9322FE311300FAB518 /* CreatePollOptionActionItem.swift */; };
D0C9BF9922FE312D00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BF9822FE312D00FAB518 /* Foundation.framework */; };
D0C9BF9B22FE313100FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BF9A22FE313100FAB518 /* UIKit.framework */; };
D0C9BF9D22FE313400FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BF9C22FE313400FAB518 /* Display.framework */; };
D0C9BF9F22FE313700FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BF9E22FE313700FAB518 /* SwiftSignalKit.framework */; };
D0C9BFA122FE313B00FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFA022FE313B00FAB518 /* Postbox.framework */; };
D0C9BFA322FE313F00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFA222FE313F00FAB518 /* TelegramCore.framework */; };
D0C9BFA522FE314300FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFA422FE314300FAB518 /* TelegramPresentationData.framework */; };
D0C9BFA722FE314900FAB518 /* ItemListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFA622FE314900FAB518 /* ItemListUI.framework */; };
D0C9BFA922FE314E00FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFA822FE314E00FAB518 /* AccountContext.framework */; };
D0C9BFAB22FE315A00FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFAA22FE315A00FAB518 /* AsyncDisplayKit.framework */; };
D0C9BFE122FE34A400FAB518 /* AlertUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFE022FE34A400FAB518 /* AlertUI.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
D0C9BF8222FE309900FAB518 /* ComposePollUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ComposePollUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BF8522FE309900FAB518 /* ComposePollUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ComposePollUI.h; sourceTree = "<group>"; };
D0C9BF8622FE309900FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D0C9BF9122FE311300FAB518 /* CreatePollController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreatePollController.swift; sourceTree = "<group>"; };
D0C9BF9222FE311300FAB518 /* CreatePollOptionItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreatePollOptionItem.swift; sourceTree = "<group>"; };
D0C9BF9322FE311300FAB518 /* CreatePollOptionActionItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreatePollOptionActionItem.swift; sourceTree = "<group>"; };
D0C9BF9822FE312D00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
D0C9BF9A22FE313100FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
D0C9BF9C22FE313400FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BF9E22FE313700FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFA022FE313B00FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFA222FE313F00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFA422FE314300FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFA622FE314900FAB518 /* ItemListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ItemListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFA822FE314E00FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFAA22FE315A00FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFE022FE34A400FAB518 /* AlertUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AlertUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
D0C9BF7F22FE309900FAB518 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
D0C9BFE122FE34A400FAB518 /* AlertUI.framework in Frameworks */,
D0C9BFAB22FE315A00FAB518 /* AsyncDisplayKit.framework in Frameworks */,
D0C9BFA922FE314E00FAB518 /* AccountContext.framework in Frameworks */,
D0C9BFA722FE314900FAB518 /* ItemListUI.framework in Frameworks */,
D0C9BFA522FE314300FAB518 /* TelegramPresentationData.framework in Frameworks */,
D0C9BFA322FE313F00FAB518 /* TelegramCore.framework in Frameworks */,
D0C9BFA122FE313B00FAB518 /* Postbox.framework in Frameworks */,
D0C9BF9F22FE313700FAB518 /* SwiftSignalKit.framework in Frameworks */,
D0C9BF9D22FE313400FAB518 /* Display.framework in Frameworks */,
D0C9BF9B22FE313100FAB518 /* UIKit.framework in Frameworks */,
D0C9BF9922FE312D00FAB518 /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
D0C9BF7822FE309900FAB518 = {
isa = PBXGroup;
children = (
D0C9BF8622FE309900FAB518 /* Info.plist */,
D0C9BF8422FE309900FAB518 /* Sources */,
D0C9BF8322FE309900FAB518 /* Products */,
D0C9BF9722FE312D00FAB518 /* Frameworks */,
);
sourceTree = "<group>";
};
D0C9BF8322FE309900FAB518 /* Products */ = {
isa = PBXGroup;
children = (
D0C9BF8222FE309900FAB518 /* ComposePollUI.framework */,
);
name = Products;
sourceTree = "<group>";
};
D0C9BF8422FE309900FAB518 /* Sources */ = {
isa = PBXGroup;
children = (
D0C9BF9122FE311300FAB518 /* CreatePollController.swift */,
D0C9BF9322FE311300FAB518 /* CreatePollOptionActionItem.swift */,
D0C9BF9222FE311300FAB518 /* CreatePollOptionItem.swift */,
D0C9BF8522FE309900FAB518 /* ComposePollUI.h */,
);
path = Sources;
sourceTree = "<group>";
};
D0C9BF9722FE312D00FAB518 /* Frameworks */ = {
isa = PBXGroup;
children = (
D0C9BFE022FE34A400FAB518 /* AlertUI.framework */,
D0C9BFAA22FE315A00FAB518 /* AsyncDisplayKit.framework */,
D0C9BFA822FE314E00FAB518 /* AccountContext.framework */,
D0C9BFA622FE314900FAB518 /* ItemListUI.framework */,
D0C9BFA422FE314300FAB518 /* TelegramPresentationData.framework */,
D0C9BFA222FE313F00FAB518 /* TelegramCore.framework */,
D0C9BFA022FE313B00FAB518 /* Postbox.framework */,
D0C9BF9E22FE313700FAB518 /* SwiftSignalKit.framework */,
D0C9BF9C22FE313400FAB518 /* Display.framework */,
D0C9BF9A22FE313100FAB518 /* UIKit.framework */,
D0C9BF9822FE312D00FAB518 /* Foundation.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
D0C9BF7D22FE309900FAB518 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
D0C9BF8722FE309900FAB518 /* ComposePollUI.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
D0C9BF8122FE309900FAB518 /* ComposePollUI */ = {
isa = PBXNativeTarget;
buildConfigurationList = D0C9BF8A22FE309900FAB518 /* Build configuration list for PBXNativeTarget "ComposePollUI" */;
buildPhases = (
D0C9BF7D22FE309900FAB518 /* Headers */,
D0C9BF7E22FE309900FAB518 /* Sources */,
D0C9BF7F22FE309900FAB518 /* Frameworks */,
D0C9BF8022FE309900FAB518 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = ComposePollUI;
productName = ComposePollUI;
productReference = D0C9BF8222FE309900FAB518 /* ComposePollUI.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
D0C9BF7922FE309900FAB518 /* Project object */ = {
isa = PBXProject;
attributes = {
DefaultBuildSystemTypeForWorkspace = Latest;
LastUpgradeCheck = 1030;
ORGANIZATIONNAME = "Telegram Messenger LLP";
TargetAttributes = {
D0C9BF8122FE309900FAB518 = {
CreatedOnToolsVersion = 10.3;
LastSwiftMigration = 1030;
};
};
};
buildConfigurationList = D0C9BF7C22FE309900FAB518 /* Build configuration list for PBXProject "ComposePollUI_Xcode" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = D0C9BF7822FE309900FAB518;
productRefGroup = D0C9BF8322FE309900FAB518 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
D0C9BF8122FE309900FAB518 /* ComposePollUI */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
D0C9BF8022FE309900FAB518 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
D0C9BF7E22FE309900FAB518 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
D0C9BF9522FE311300FAB518 /* CreatePollOptionItem.swift in Sources */,
D0C9BF9422FE311300FAB518 /* CreatePollController.swift in Sources */,
D0C9BF9622FE311300FAB518 /* CreatePollOptionActionItem.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
D0C9BF8822FE309900FAB518 /* 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;
};
D0C9BF8922FE309900FAB518 /* 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;
};
D0C9BF8B22FE309900FAB518 /* 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.ComposePollUI;
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;
};
D0C9BF8C22FE309900FAB518 /* 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.ComposePollUI;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = ReleaseAppStoreLLC;
};
D0C9BF8D22FE30BE00FAB518 /* 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;
};
D0C9BF8E22FE30BE00FAB518 /* 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.ComposePollUI;
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;
};
D0C9BF8F22FE30CB00FAB518 /* 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;
};
D0C9BF9022FE30CB00FAB518 /* 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.ComposePollUI;
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 */
D0C9BF7C22FE309900FAB518 /* Build configuration list for PBXProject "ComposePollUI_Xcode" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0C9BF8822FE309900FAB518 /* DebugAppStoreLLC */,
D0C9BF8D22FE30BE00FAB518 /* DebugHockeyapp */,
D0C9BF8922FE309900FAB518 /* ReleaseAppStoreLLC */,
D0C9BF8F22FE30CB00FAB518 /* ReleaseHockeyappInternal */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = ReleaseAppStoreLLC;
};
D0C9BF8A22FE309900FAB518 /* Build configuration list for PBXNativeTarget "ComposePollUI" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0C9BF8B22FE309900FAB518 /* DebugAppStoreLLC */,
D0C9BF8E22FE30BE00FAB518 /* DebugHockeyapp */,
D0C9BF8C22FE309900FAB518 /* ReleaseAppStoreLLC */,
D0C9BF9022FE30CB00FAB518 /* ReleaseHockeyappInternal */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = ReleaseAppStoreLLC;
};
/* End XCConfigurationList section */
};
rootObject = D0C9BF7922FE309900FAB518 /* Project object */;
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -0,0 +1,19 @@
//
// ComposePollUI.h
// ComposePollUI
//
// Created by Peter on 8/10/19.
// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
//
#import <UIKit/UIKit.h>
//! Project version number for ComposePollUI.
FOUNDATION_EXPORT double ComposePollUIVersionNumber;
//! Project version string for ComposePollUI.
FOUNDATION_EXPORT const unsigned char ComposePollUIVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <ComposePollUI/PublicHeader.h>

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private let maxTextLength = 255 private let maxTextLength = 255
private let maxOptionLength = 100 private let maxOptionLength = 100

View File

@ -25,6 +25,10 @@
D06018BC22F3663900796784 /* ItemListSelectableControlNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06018B922F3663800796784 /* ItemListSelectableControlNode.swift */; }; D06018BC22F3663900796784 /* ItemListSelectableControlNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06018B922F3663800796784 /* ItemListSelectableControlNode.swift */; };
D06018BD22F3663900796784 /* ItemListEditableDeleteControlNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06018BA22F3663900796784 /* ItemListEditableDeleteControlNode.swift */; }; D06018BD22F3663900796784 /* ItemListEditableDeleteControlNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06018BA22F3663900796784 /* ItemListEditableDeleteControlNode.swift */; };
D06018E322F366F200796784 /* CheckNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D06018E222F366F200796784 /* CheckNode.framework */; }; D06018E322F366F200796784 /* CheckNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D06018E222F366F200796784 /* CheckNode.framework */; };
D0C9BFB222FE327700FAB518 /* ItemListPlaceholderItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9BFAE22FE327700FAB518 /* ItemListPlaceholderItem.swift */; };
D0C9BFB322FE327700FAB518 /* ItemListSectionHeaderItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9BFAF22FE327700FAB518 /* ItemListSectionHeaderItem.swift */; };
D0C9BFB422FE327700FAB518 /* ItemListSingleLineInputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9BFB022FE327700FAB518 /* ItemListSingleLineInputItem.swift */; };
D0C9BFB522FE327700FAB518 /* ItemListTextEmptyStateItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9BFB122FE327700FAB518 /* ItemListTextEmptyStateItem.swift */; };
D0D3282422F3205E00D07EE2 /* ItemListUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0D3282222F3205E00D07EE2 /* ItemListUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; D0D3282422F3205E00D07EE2 /* ItemListUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0D3282222F3205E00D07EE2 /* ItemListUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0D3286522F3366600D07EE2 /* ItemListControllerEmptyStateItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D3286022F3366500D07EE2 /* ItemListControllerEmptyStateItem.swift */; }; D0D3286522F3366600D07EE2 /* ItemListControllerEmptyStateItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D3286022F3366500D07EE2 /* ItemListControllerEmptyStateItem.swift */; };
D0D3286622F3366600D07EE2 /* ItemListControllerSegmentedTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D3286122F3366500D07EE2 /* ItemListControllerSegmentedTitleView.swift */; }; D0D3286622F3366600D07EE2 /* ItemListControllerSegmentedTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D3286122F3366500D07EE2 /* ItemListControllerSegmentedTitleView.swift */; };
@ -62,6 +66,10 @@
D06018B922F3663800796784 /* ItemListSelectableControlNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListSelectableControlNode.swift; sourceTree = "<group>"; }; D06018B922F3663800796784 /* ItemListSelectableControlNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListSelectableControlNode.swift; sourceTree = "<group>"; };
D06018BA22F3663900796784 /* ItemListEditableDeleteControlNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListEditableDeleteControlNode.swift; sourceTree = "<group>"; }; D06018BA22F3663900796784 /* ItemListEditableDeleteControlNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListEditableDeleteControlNode.swift; sourceTree = "<group>"; };
D06018E222F366F200796784 /* CheckNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CheckNode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D06018E222F366F200796784 /* CheckNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CheckNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFAE22FE327700FAB518 /* ItemListPlaceholderItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListPlaceholderItem.swift; sourceTree = "<group>"; };
D0C9BFAF22FE327700FAB518 /* ItemListSectionHeaderItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListSectionHeaderItem.swift; sourceTree = "<group>"; };
D0C9BFB022FE327700FAB518 /* ItemListSingleLineInputItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListSingleLineInputItem.swift; sourceTree = "<group>"; };
D0C9BFB122FE327700FAB518 /* ItemListTextEmptyStateItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListTextEmptyStateItem.swift; sourceTree = "<group>"; };
D0D3281F22F3205E00D07EE2 /* ItemListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ItemListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D0D3281F22F3205E00D07EE2 /* ItemListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ItemListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0D3282222F3205E00D07EE2 /* ItemListUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ItemListUI.h; sourceTree = "<group>"; }; D0D3282222F3205E00D07EE2 /* ItemListUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ItemListUI.h; sourceTree = "<group>"; };
D0D3282322F3205E00D07EE2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; D0D3282322F3205E00D07EE2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@ -108,6 +116,10 @@
D060185D22F35E2200796784 /* Items */ = { D060185D22F35E2200796784 /* Items */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D0C9BFAE22FE327700FAB518 /* ItemListPlaceholderItem.swift */,
D0C9BFAF22FE327700FAB518 /* ItemListSectionHeaderItem.swift */,
D0C9BFB022FE327700FAB518 /* ItemListSingleLineInputItem.swift */,
D0C9BFB122FE327700FAB518 /* ItemListTextEmptyStateItem.swift */,
D060184C22F35E1E00796784 /* ItemListActionItem.swift */, D060184C22F35E1E00796784 /* ItemListActionItem.swift */,
D060184B22F35E1E00796784 /* ItemListActivityTextItem.swift */, D060184B22F35E1E00796784 /* ItemListActivityTextItem.swift */,
D060185222F35E1F00796784 /* ItemListCheckboxItem.swift */, D060185222F35E1F00796784 /* ItemListCheckboxItem.swift */,
@ -259,17 +271,20 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
D0C9BFB422FE327700FAB518 /* ItemListSingleLineInputItem.swift in Sources */,
D060185322F35E1F00796784 /* ItemListMultilineInputItem.swift in Sources */, D060185322F35E1F00796784 /* ItemListMultilineInputItem.swift in Sources */,
D06018BB22F3663900796784 /* ItemListEditableReorderControlNode.swift in Sources */, D06018BB22F3663900796784 /* ItemListEditableReorderControlNode.swift in Sources */,
D060185522F35E1F00796784 /* ItemListActivityTextItem.swift in Sources */, D060185522F35E1F00796784 /* ItemListActivityTextItem.swift in Sources */,
D060186122F35F6C00796784 /* ItemListRevealOptionsNode.swift in Sources */, D060186122F35F6C00796784 /* ItemListRevealOptionsNode.swift in Sources */,
D06018BC22F3663900796784 /* ItemListSelectableControlNode.swift in Sources */, D06018BC22F3663900796784 /* ItemListSelectableControlNode.swift in Sources */,
D060185822F35E1F00796784 /* ItemListLoadingIndicatorEmptyStateItem.swift in Sources */, D060185822F35E1F00796784 /* ItemListLoadingIndicatorEmptyStateItem.swift in Sources */,
D0C9BFB322FE327700FAB518 /* ItemListSectionHeaderItem.swift in Sources */,
D0D3286522F3366600D07EE2 /* ItemListControllerEmptyStateItem.swift in Sources */, D0D3286522F3366600D07EE2 /* ItemListControllerEmptyStateItem.swift in Sources */,
D060185622F35E1F00796784 /* ItemListActionItem.swift in Sources */, D060185622F35E1F00796784 /* ItemListActionItem.swift in Sources */,
D060185922F35E1F00796784 /* ItemListEditableItem.swift in Sources */, D060185922F35E1F00796784 /* ItemListEditableItem.swift in Sources */,
D060185A22F35E1F00796784 /* ItemListDisclosureItem.swift in Sources */, D060185A22F35E1F00796784 /* ItemListDisclosureItem.swift in Sources */,
D060185422F35E1F00796784 /* ItemListTextWithLabelItem.swift in Sources */, D060185422F35E1F00796784 /* ItemListTextWithLabelItem.swift in Sources */,
D0C9BFB222FE327700FAB518 /* ItemListPlaceholderItem.swift in Sources */,
D0D3286722F3366600D07EE2 /* ItemListController.swift in Sources */, D0D3286722F3366600D07EE2 /* ItemListController.swift in Sources */,
D0D3286822F3366600D07EE2 /* ItemListControllerSearch.swift in Sources */, D0D3286822F3366600D07EE2 /* ItemListControllerSearch.swift in Sources */,
D060185722F35E1F00796784 /* ItemListSwitchItem.swift in Sources */, D060185722F35E1F00796784 /* ItemListSwitchItem.swift in Sources */,
@ -280,6 +295,7 @@
D06018BD22F3663900796784 /* ItemListEditableDeleteControlNode.swift in Sources */, D06018BD22F3663900796784 /* ItemListEditableDeleteControlNode.swift in Sources */,
D0D3289A22F345C500D07EE2 /* ItemListItem.swift in Sources */, D0D3289A22F345C500D07EE2 /* ItemListItem.swift in Sources */,
D060185C22F35E1F00796784 /* ItemListCheckboxItem.swift in Sources */, D060185C22F35E1F00796784 /* ItemListCheckboxItem.swift in Sources */,
D0C9BFB522FE327700FAB518 /* ItemListTextEmptyStateItem.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };

View File

@ -4,16 +4,15 @@ import Display
import AsyncDisplayKit import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI
class ItemListPlaceholderItem: ListViewItem, ItemListItem { public class ItemListPlaceholderItem: ListViewItem, ItemListItem {
let theme: PresentationTheme let theme: PresentationTheme
let text: String let text: String
let sectionId: ItemListSectionId public let sectionId: ItemListSectionId
let style: ItemListStyle let style: ItemListStyle
let tag: ItemListItemTag? public let tag: ItemListItemTag?
init(theme: PresentationTheme, text: String, sectionId: ItemListSectionId, style: ItemListStyle, tag: ItemListItemTag? = nil) { public init(theme: PresentationTheme, text: String, sectionId: ItemListSectionId, style: ItemListStyle, tag: ItemListItemTag? = nil) {
self.theme = theme self.theme = theme
self.text = text self.text = text
self.sectionId = sectionId self.sectionId = sectionId
@ -21,7 +20,7 @@ class ItemListPlaceholderItem: ListViewItem, ItemListItem {
self.tag = tag self.tag = tag
} }
func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) { public func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) {
async { async {
let node = ItemListPlaceholderItemNode() let node = ItemListPlaceholderItemNode()
let (layout, apply) = node.asyncLayout()(self, params, itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem)) let (layout, apply) = node.asyncLayout()(self, params, itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem))
@ -37,7 +36,7 @@ class ItemListPlaceholderItem: ListViewItem, ItemListItem {
} }
} }
func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) { public func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
Queue.mainQueue().async { Queue.mainQueue().async {
if let nodeValue = node() as? ItemListPlaceholderItemNode { if let nodeValue = node() as? ItemListPlaceholderItemNode {
let makeLayout = nodeValue.asyncLayout() let makeLayout = nodeValue.asyncLayout()
@ -54,29 +53,29 @@ class ItemListPlaceholderItem: ListViewItem, ItemListItem {
} }
} }
let selectable = false public let selectable = false
} }
private let textFont = Font.regular(13.0) private let textFont = Font.regular(13.0)
class ItemListPlaceholderItemNode: ListViewItemNode, ItemListItemNode { public class ItemListPlaceholderItemNode: ListViewItemNode, ItemListItemNode {
private let backgroundNode: ASDisplayNode private let backgroundNode: ASDisplayNode
private let topStripeNode: ASDisplayNode private let topStripeNode: ASDisplayNode
private let bottomStripeNode: ASDisplayNode private let bottomStripeNode: ASDisplayNode
let textNode: TextNode public let textNode: TextNode
private var item: ItemListPlaceholderItem? private var item: ItemListPlaceholderItem?
override var canBeSelected: Bool { override public var canBeSelected: Bool {
return false return false
} }
var tag: ItemListItemTag? { public var tag: ItemListItemTag? {
return self.item?.tag return self.item?.tag
} }
init() { public init() {
self.backgroundNode = ASDisplayNode() self.backgroundNode = ASDisplayNode()
self.backgroundNode.isLayerBacked = true self.backgroundNode.isLayerBacked = true
self.backgroundNode.backgroundColor = .white self.backgroundNode.backgroundColor = .white
@ -95,7 +94,7 @@ class ItemListPlaceholderItemNode: ListViewItemNode, ItemListItemNode {
self.addSubnode(self.textNode) self.addSubnode(self.textNode)
} }
func asyncLayout() -> (_ item: ItemListPlaceholderItem, _ params: ListViewItemLayoutParams, _ insets: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) { public func asyncLayout() -> (_ item: ItemListPlaceholderItem, _ params: ListViewItemLayoutParams, _ insets: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) {
let makeTextLayout = TextNode.asyncLayout(self.textNode) let makeTextLayout = TextNode.asyncLayout(self.textNode)
let currentItem = self.item let currentItem = self.item
@ -194,15 +193,15 @@ class ItemListPlaceholderItemNode: ListViewItemNode, ItemListItemNode {
} }
} }
override func animateInsertion(_ currentTimestamp: Double, duration: Double, short: Bool) { override public func animateInsertion(_ currentTimestamp: Double, duration: Double, short: Bool) {
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.4) self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.4)
} }
override func animateAdded(_ currentTimestamp: Double, duration: Double) { override public func animateAdded(_ currentTimestamp: Double, duration: Double) {
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2) self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
} }
override func animateRemoved(_ currentTimestamp: Double, duration: Double) { override public func animateRemoved(_ currentTimestamp: Double, duration: Double) {
self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false) self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false)
} }
} }

View File

@ -4,30 +4,34 @@ import Display
import AsyncDisplayKit import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI
import ActivityIndicator import ActivityIndicator
enum ItemListSectionHeaderAccessoryTextColor { public enum ItemListSectionHeaderAccessoryTextColor {
case generic case generic
case destructive case destructive
} }
struct ItemListSectionHeaderAccessoryText: Equatable { public struct ItemListSectionHeaderAccessoryText: Equatable {
let value: String public let value: String
let color: ItemListSectionHeaderAccessoryTextColor public let color: ItemListSectionHeaderAccessoryTextColor
public init(value: String, color: ItemListSectionHeaderAccessoryTextColor) {
self.value = value
self.color = color
}
} }
class ItemListSectionHeaderItem: ListViewItem, ItemListItem { public class ItemListSectionHeaderItem: ListViewItem, ItemListItem {
let theme: PresentationTheme let theme: PresentationTheme
let text: String let text: String
let multiline: Bool let multiline: Bool
let activityIndicator: Bool let activityIndicator: Bool
let accessoryText: ItemListSectionHeaderAccessoryText? let accessoryText: ItemListSectionHeaderAccessoryText?
let sectionId: ItemListSectionId public let sectionId: ItemListSectionId
let isAlwaysPlain: Bool = true public let isAlwaysPlain: Bool = true
init(theme: PresentationTheme, text: String, multiline: Bool = false, activityIndicator: Bool = false, accessoryText: ItemListSectionHeaderAccessoryText? = nil, sectionId: ItemListSectionId) { public init(theme: PresentationTheme, text: String, multiline: Bool = false, activityIndicator: Bool = false, accessoryText: ItemListSectionHeaderAccessoryText? = nil, sectionId: ItemListSectionId) {
self.theme = theme self.theme = theme
self.text = text self.text = text
self.multiline = multiline self.multiline = multiline
@ -36,7 +40,7 @@ class ItemListSectionHeaderItem: ListViewItem, ItemListItem {
self.sectionId = sectionId self.sectionId = sectionId
} }
func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) { public func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) {
async { async {
let node = ItemListSectionHeaderItemNode() let node = ItemListSectionHeaderItemNode()
let (layout, apply) = node.asyncLayout()(self, params, itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem)) let (layout, apply) = node.asyncLayout()(self, params, itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem))
@ -52,7 +56,7 @@ class ItemListSectionHeaderItem: ListViewItem, ItemListItem {
} }
} }
func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) { public func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
Queue.mainQueue().async { Queue.mainQueue().async {
guard let nodeValue = node() as? ItemListSectionHeaderItemNode else { guard let nodeValue = node() as? ItemListSectionHeaderItemNode else {
assertionFailure() assertionFailure()
@ -75,7 +79,7 @@ class ItemListSectionHeaderItem: ListViewItem, ItemListItem {
private let titleFont = Font.regular(14.0) private let titleFont = Font.regular(14.0)
class ItemListSectionHeaderItemNode: ListViewItemNode { public class ItemListSectionHeaderItemNode: ListViewItemNode {
private var item: ItemListSectionHeaderItem? private var item: ItemListSectionHeaderItem?
private let titleNode: TextNode private let titleNode: TextNode
@ -84,7 +88,7 @@ class ItemListSectionHeaderItemNode: ListViewItemNode {
private let activateArea: AccessibilityAreaNode private let activateArea: AccessibilityAreaNode
init() { public init() {
self.titleNode = TextNode() self.titleNode = TextNode()
self.titleNode.isUserInteractionEnabled = false self.titleNode.isUserInteractionEnabled = false
self.titleNode.contentMode = .left self.titleNode.contentMode = .left
@ -105,7 +109,7 @@ class ItemListSectionHeaderItemNode: ListViewItemNode {
self.addSubnode(self.activateArea) self.addSubnode(self.activateArea)
} }
func asyncLayout() -> (_ item: ItemListSectionHeaderItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) { public func asyncLayout() -> (_ item: ItemListSectionHeaderItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) {
let makeTitleLayout = TextNode.asyncLayout(self.titleNode) let makeTitleLayout = TextNode.asyncLayout(self.titleNode)
let makeAccessoryTextLayout = TextNode.asyncLayout(self.accessoryTextNode) let makeAccessoryTextLayout = TextNode.asyncLayout(self.accessoryTextNode)
@ -185,11 +189,11 @@ class ItemListSectionHeaderItemNode: ListViewItemNode {
} }
} }
override func animateInsertion(_ currentTimestamp: Double, duration: Double, short: Bool) { override public func animateInsertion(_ currentTimestamp: Double, duration: Double, short: Bool) {
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.4) self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.4)
} }
override func animateRemoved(_ currentTimestamp: Double, duration: Double) { override public func animateRemoved(_ currentTimestamp: Double, duration: Double) {
self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false) self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false)
} }
} }

View File

@ -4,9 +4,8 @@ import Display
import AsyncDisplayKit import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI
enum ItemListSingleLineInputItemType: Equatable { public enum ItemListSingleLineInputItemType: Equatable {
case regular(capitalization: Bool, autocorrection: Bool) case regular(capitalization: Bool, autocorrection: Bool)
case password case password
case email case email
@ -14,7 +13,7 @@ enum ItemListSingleLineInputItemType: Equatable {
case username case username
} }
class ItemListSingleLineInputItem: ListViewItem, ItemListItem { public class ItemListSingleLineInputItem: ListViewItem, ItemListItem {
let theme: PresentationTheme let theme: PresentationTheme
let strings: PresentationStrings let strings: PresentationStrings
let title: NSAttributedString let title: NSAttributedString
@ -25,15 +24,15 @@ class ItemListSingleLineInputItem: ListViewItem, ItemListItem {
let spacing: CGFloat let spacing: CGFloat
let clearButton: Bool let clearButton: Bool
let enabled: Bool let enabled: Bool
let sectionId: ItemListSectionId public let sectionId: ItemListSectionId
let action: () -> Void let action: () -> Void
let textUpdated: (String) -> Void let textUpdated: (String) -> Void
let shouldUpdateText: (String) -> Bool let shouldUpdateText: (String) -> Bool
let processPaste: ((String) -> String)? let processPaste: ((String) -> String)?
let updatedFocus: ((Bool) -> Void)? let updatedFocus: ((Bool) -> Void)?
let tag: ItemListItemTag? public let tag: ItemListItemTag?
init(theme: PresentationTheme, strings: PresentationStrings, title: NSAttributedString, text: String, placeholder: String, type: ItemListSingleLineInputItemType = .regular(capitalization: true, autocorrection: true), returnKeyType: UIReturnKeyType = .`default`, spacing: CGFloat = 0.0, clearButton: Bool = false, enabled: Bool = true, tag: ItemListItemTag? = nil, sectionId: ItemListSectionId, textUpdated: @escaping (String) -> Void, shouldUpdateText: @escaping (String) -> Bool = { _ in return true }, processPaste: ((String) -> String)? = nil, updatedFocus: ((Bool) -> Void)? = nil, action: @escaping () -> Void) { public init(theme: PresentationTheme, strings: PresentationStrings, title: NSAttributedString, text: String, placeholder: String, type: ItemListSingleLineInputItemType = .regular(capitalization: true, autocorrection: true), returnKeyType: UIReturnKeyType = .`default`, spacing: CGFloat = 0.0, clearButton: Bool = false, enabled: Bool = true, tag: ItemListItemTag? = nil, sectionId: ItemListSectionId, textUpdated: @escaping (String) -> Void, shouldUpdateText: @escaping (String) -> Bool = { _ in return true }, processPaste: ((String) -> String)? = nil, updatedFocus: ((Bool) -> Void)? = nil, action: @escaping () -> Void) {
self.theme = theme self.theme = theme
self.strings = strings self.strings = strings
self.title = title self.title = title
@ -53,7 +52,7 @@ class ItemListSingleLineInputItem: ListViewItem, ItemListItem {
self.action = action self.action = action
} }
func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) { public func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal<Void, NoError>?, (ListViewItemApply) -> Void)) -> Void) {
async { async {
let node = ItemListSingleLineInputItemNode() let node = ItemListSingleLineInputItemNode()
let (layout, apply) = node.asyncLayout()(self, params, itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem)) let (layout, apply) = node.asyncLayout()(self, params, itemListNeighbors(item: self, topItem: previousItem as? ItemListItem, bottomItem: nextItem as? ItemListItem))
@ -69,7 +68,7 @@ class ItemListSingleLineInputItem: ListViewItem, ItemListItem {
} }
} }
func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) { public func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
Queue.mainQueue().async { Queue.mainQueue().async {
if let nodeValue = node() as? ItemListSingleLineInputItemNode { if let nodeValue = node() as? ItemListSingleLineInputItemNode {
@ -90,7 +89,7 @@ class ItemListSingleLineInputItem: ListViewItem, ItemListItem {
private let titleFont = Font.regular(17.0) private let titleFont = Font.regular(17.0)
class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDelegate, ItemListItemNode, ItemListItemFocusableNode { public class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDelegate, ItemListItemNode, ItemListItemFocusableNode {
private let backgroundNode: ASDisplayNode private let backgroundNode: ASDisplayNode
private let topStripeNode: ASDisplayNode private let topStripeNode: ASDisplayNode
private let bottomStripeNode: ASDisplayNode private let bottomStripeNode: ASDisplayNode
@ -102,11 +101,11 @@ class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDelegate, It
private var item: ItemListSingleLineInputItem? private var item: ItemListSingleLineInputItem?
var tag: ItemListItemTag? { public var tag: ItemListItemTag? {
return self.item?.tag return self.item?.tag
} }
init() { public init() {
self.backgroundNode = ASDisplayNode() self.backgroundNode = ASDisplayNode()
self.backgroundNode.isLayerBacked = true self.backgroundNode.isLayerBacked = true
@ -147,7 +146,7 @@ class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDelegate, It
} }
} }
override func didLoad() { override public func didLoad() {
super.didLoad() super.didLoad()
self.textNode.textField.typingAttributes = [NSAttributedString.Key.font: Font.regular(17.0)] self.textNode.textField.typingAttributes = [NSAttributedString.Key.font: Font.regular(17.0)]
@ -163,7 +162,7 @@ class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDelegate, It
self.textNode.hitTestSlop = UIEdgeInsets(top: -5.0, left: -5.0, bottom: -5.0, right: -5.0) self.textNode.hitTestSlop = UIEdgeInsets(top: -5.0, left: -5.0, bottom: -5.0, right: -5.0)
} }
func asyncLayout() -> (_ item: ItemListSingleLineInputItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) { public func asyncLayout() -> (_ item: ItemListSingleLineInputItem, _ params: ListViewItemLayoutParams, _ neighbors: ItemListNeighbors) -> (ListViewItemNodeLayout, () -> Void) {
let makeTitleLayout = TextNode.asyncLayout(self.titleNode) let makeTitleLayout = TextNode.asyncLayout(self.titleNode)
let currentItem = self.item let currentItem = self.item
@ -329,11 +328,11 @@ class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDelegate, It
} }
} }
override func animateInsertion(_ currentTimestamp: Double, duration: Double, short: Bool) { override public func animateInsertion(_ currentTimestamp: Double, duration: Double, short: Bool) {
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.4) self.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.4)
} }
override func animateRemoved(_ currentTimestamp: Double, duration: Double) { override public func animateRemoved(_ currentTimestamp: Double, duration: Double) {
self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false) self.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.15, removeOnCompletion: false)
} }
@ -350,13 +349,13 @@ class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDelegate, It
self.item?.textUpdated(text) self.item?.textUpdated(text)
} }
func focus() { public func focus() {
if !self.textNode.textField.isFirstResponder { if !self.textNode.textField.isFirstResponder {
self.textNode.textField.becomeFirstResponder() self.textNode.textField.becomeFirstResponder()
} }
} }
@objc internal func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { @objc public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if let item = self.item, !item.shouldUpdateText(string) { if let item = self.item, !item.shouldUpdateText(string) {
return false return false
} }
@ -380,20 +379,20 @@ class ItemListSingleLineInputItemNode: ListViewItemNode, UITextFieldDelegate, It
return true return true
} }
@objc internal func textFieldShouldReturn(_ textField: UITextField) -> Bool { @objc public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.item?.action() self.item?.action()
return false return false
} }
@objc internal func textFieldDidBeginEditing(_ textField: UITextField) { @objc public func textFieldDidBeginEditing(_ textField: UITextField) {
self.item?.updatedFocus?(true) self.item?.updatedFocus?(true)
} }
@objc internal func textFieldDidEndEditing(_ textField: UITextField) { @objc public func textFieldDidEndEditing(_ textField: UITextField) {
self.item?.updatedFocus?(false) self.item?.updatedFocus?(false)
} }
func animateError() { public func animateError() {
self.textNode.layer.addShakeAnimation() self.textNode.layer.addShakeAnimation()
} }
} }

View File

@ -2,16 +2,15 @@ import Foundation
import UIKit import UIKit
import AsyncDisplayKit import AsyncDisplayKit
import Display import Display
import ItemListUI
final class ItemListTextEmptyStateItem: ItemListControllerEmptyStateItem { public final class ItemListTextEmptyStateItem: ItemListControllerEmptyStateItem {
let text: String public let text: String
init(text: String) { public init(text: String) {
self.text = text self.text = text
} }
func isEqual(to: ItemListControllerEmptyStateItem) -> Bool { public func isEqual(to: ItemListControllerEmptyStateItem) -> Bool {
if let to = to as? ItemListTextEmptyStateItem { if let to = to as? ItemListTextEmptyStateItem {
return self.text == to.text return self.text == to.text
} else { } else {
@ -19,7 +18,7 @@ final class ItemListTextEmptyStateItem: ItemListControllerEmptyStateItem {
} }
} }
func node(current: ItemListControllerEmptyStateItemNode?) -> ItemListControllerEmptyStateItemNode { public func node(current: ItemListControllerEmptyStateItemNode?) -> ItemListControllerEmptyStateItemNode {
let result: ItemListTextEmptyStateItemNode let result: ItemListTextEmptyStateItemNode
if let current = current as? ItemListTextEmptyStateItemNode { if let current = current as? ItemListTextEmptyStateItemNode {
result = current result = current
@ -31,13 +30,13 @@ final class ItemListTextEmptyStateItem: ItemListControllerEmptyStateItem {
} }
} }
final class ItemListTextEmptyStateItemNode: ItemListControllerEmptyStateItemNode { public final class ItemListTextEmptyStateItemNode: ItemListControllerEmptyStateItemNode {
private let textNode: ASTextNode private let textNode: ASTextNode
private var validLayout: (ContainerViewLayout, CGFloat)? private var validLayout: (ContainerViewLayout, CGFloat)?
private var text: String? private var text: String?
override init() { override public init() {
self.textNode = ASTextNode() self.textNode = ASTextNode()
self.textNode.isUserInteractionEnabled = false self.textNode.isUserInteractionEnabled = false
@ -46,7 +45,7 @@ final class ItemListTextEmptyStateItemNode: ItemListControllerEmptyStateItemNode
self.addSubnode(self.textNode) self.addSubnode(self.textNode)
} }
func updateText(text: String) { public func updateText(text: String) {
if self.text != text { if self.text != text {
self.text = text self.text = text
@ -57,7 +56,7 @@ final class ItemListTextEmptyStateItemNode: ItemListControllerEmptyStateItemNode
} }
} }
override func updateLayout(layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) { override public func updateLayout(layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
self.validLayout = (layout, navigationBarHeight) self.validLayout = (layout, navigationBarHeight)
var insets = layout.insets(options: [.statusBar]) var insets = layout.insets(options: [.statusBar])
insets.top += navigationBarHeight insets.top += navigationBarHeight

View File

@ -10,6 +10,7 @@ import LegacyComponents
import DeviceAccess import DeviceAccess
import TelegramUpdateUI import TelegramUpdateUI
import AccountContext import AccountContext
import AlertUI
func isAccessLocked(data: PostboxAccessChallengeData, at timestamp: Int32) -> Bool { func isAccessLocked(data: PostboxAccessChallengeData, at timestamp: Int32) -> Bool {
if data.isLockable, let autolockDeadline = data.autolockDeadline, autolockDeadline <= timestamp { if data.isLockable, let autolockDeadline = data.autolockDeadline, autolockDeadline <= timestamp {

View File

@ -10,6 +10,7 @@ import TelegramPresentationData
import TelegramUIPrivateModule import TelegramUIPrivateModule
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
final class BotCheckoutControllerArguments { final class BotCheckoutControllerArguments {
fileprivate let account: Account fileprivate let account: Account

View File

@ -7,6 +7,7 @@ import Postbox
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import AlertUI
private final class BotCheckoutInfoAddressItems { private final class BotCheckoutInfoAddressItems {
let address1: BotPaymentFieldItemNode let address1: BotPaymentFieldItemNode

View File

@ -8,6 +8,7 @@ import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
public enum CallListControllerMode { public enum CallListControllerMode {
case tab case tab

View File

@ -8,6 +8,7 @@ import TelegramPresentationData
import ItemListUI import ItemListUI
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI
private final class ChangePhoneNumberCodeControllerArguments { private final class ChangePhoneNumberCodeControllerArguments {
let updateEntryText: (String) -> Void let updateEntryText: (String) -> Void

View File

@ -7,6 +7,7 @@ import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ProgressNavigationButtonNode import ProgressNavigationButtonNode
import AccountContext import AccountContext
import AlertUI
final class ChangePhoneNumberController: ViewController { final class ChangePhoneNumberController: ViewController {
private var controllerNode: ChangePhoneNumberControllerNode { private var controllerNode: ChangePhoneNumberControllerNode {

View File

@ -6,6 +6,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TextFormat import TextFormat
import AccountContext import AccountContext
import AlertUI
private final class ChangePhoneNumberIntroControllerNode: ASDisplayNode { private final class ChangePhoneNumberIntroControllerNode: ASDisplayNode {
var presentationData: PresentationData var presentationData: PresentationData

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private let rankMaxLength: Int32 = 16 private let rankMaxLength: Int32 = 16

View File

@ -9,6 +9,7 @@ import TelegramUIPreferences
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import TemporaryCachedPeerDataManager import TemporaryCachedPeerDataManager
import AlertUI
private final class ChannelAdminsControllerArguments { private final class ChannelAdminsControllerArguments {
let account: Account let account: Account

View File

@ -9,6 +9,7 @@ import ItemListUI
import TelegramStringFormatting import TelegramStringFormatting
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI
private final class ChannelBannedMemberControllerArguments { private final class ChannelBannedMemberControllerArguments {
let account: Account let account: Account

View File

@ -9,6 +9,7 @@ import TelegramUIPreferences
import ItemListUI import ItemListUI
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI
private final class ChannelBlacklistControllerArguments { private final class ChannelBlacklistControllerArguments {
let account: Account let account: Account

View File

@ -9,6 +9,7 @@ import TelegramUIPreferences
import ItemListUI import ItemListUI
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI
private final class ChannelDiscussionGroupSetupControllerArguments { private final class ChannelDiscussionGroupSetupControllerArguments {
let account: Account let account: Account

View File

@ -13,6 +13,7 @@ import TextFormat
import OverlayStatusController import OverlayStatusController
import TelegramStringFormatting import TelegramStringFormatting
import ShareController import ShareController
import AlertUI
private final class ChannelInfoControllerArguments { private final class ChannelInfoControllerArguments {
let account: Account let account: Account

View File

@ -8,6 +8,7 @@ import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private final class ChannelMembersControllerArguments { private final class ChannelMembersControllerArguments {
let account: Account let account: Account

View File

@ -9,6 +9,7 @@ import TelegramPresentationData
import ActivityIndicator import ActivityIndicator
import TextFormat import TextFormat
import AccountContext import AccountContext
import AlertUI
private final class ChannelOwnershipTransferPasswordFieldNode: ASDisplayNode, UITextFieldDelegate { private final class ChannelOwnershipTransferPasswordFieldNode: ASDisplayNode, UITextFieldDelegate {
private var theme: PresentationTheme private var theme: PresentationTheme

View File

@ -10,6 +10,7 @@ import ItemListUI
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import TemporaryCachedPeerDataManager import TemporaryCachedPeerDataManager
import AlertUI
private final class ChannelPermissionsControllerArguments { private final class ChannelPermissionsControllerArguments {
let account: Account let account: Account

View File

@ -10,6 +10,7 @@ import ItemListUI
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import ShareController import ShareController
import AlertUI
private final class ChannelVisibilityControllerArguments { private final class ChannelVisibilityControllerArguments {
let account: Account let account: Account

View File

@ -6,6 +6,7 @@ import TelegramCore
import Postbox import Postbox
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import AlertUI
private enum SubscriberAction { private enum SubscriberAction {
case join case join

View File

@ -21,6 +21,8 @@ import DeviceLocationManager
import ShareController import ShareController
import UrlEscaping import UrlEscaping
import ContextUI import ContextUI
import ComposePollUI
import AlertUI
public enum ChatControllerPeekActions { public enum ChatControllerPeekActions {
case standard case standard

View File

@ -9,6 +9,7 @@ import TelegramUIPreferences
import TelegramBaseController import TelegramBaseController
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI
public func useSpecialTabBarIcons() -> Bool { public func useSpecialTabBarIcons() -> Bool {
return (Date(timeIntervalSince1970: 1545642000)...Date(timeIntervalSince1970: 1546387200)).contains(Date()) return (Date(timeIntervalSince1970: 1545642000)...Date(timeIntervalSince1970: 1546387200)).contains(Date())

View File

@ -7,6 +7,7 @@ import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import TelegramBaseController import TelegramBaseController
import AccountContext import AccountContext
import AlertUI
final class ChatRecentActionsController: TelegramBaseController { final class ChatRecentActionsController: TelegramBaseController {
private var controllerNode: ChatRecentActionsControllerNode { private var controllerNode: ChatRecentActionsControllerNode {

View File

@ -10,6 +10,7 @@ import TelegramUIPreferences
import SafariServices import SafariServices
import AccountContext import AccountContext
import TemporaryCachedPeerDataManager import TemporaryCachedPeerDataManager
import AlertUI
private final class ChatRecentActionsListOpaqueState { private final class ChatRecentActionsListOpaqueState {
let entries: [ChatRecentActionsEntry] let entries: [ChatRecentActionsEntry]

View File

@ -2,6 +2,7 @@ import Foundation
import Display import Display
import TelegramCore import TelegramCore
import AccountContext import AccountContext
import AlertUI
func totalDiskSpace() -> Int64 { func totalDiskSpace() -> Int64 {
do { do {

View File

@ -7,6 +7,7 @@ import SwiftSignalKit
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import AlertUI
public class ComposeController: ViewController { public class ComposeController: ViewController {
private let context: AccountContext private let context: AccountContext

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private final class ConfirmPhoneNumberCodeControllerArguments { private final class ConfirmPhoneNumberCodeControllerArguments {
let updateEntryText: (String) -> Void let updateEntryText: (String) -> Void

View File

@ -8,6 +8,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ProgressNavigationButtonNode import ProgressNavigationButtonNode
import AccountContext import AccountContext
import AlertUI
enum ContactMultiselectionControllerMode { enum ContactMultiselectionControllerMode {
case groupCreation case groupCreation

View File

@ -9,6 +9,7 @@ import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import DeviceAccess import DeviceAccess
import AccountContext import AccountContext
import AlertUI
private func fixListNodeScrolling(_ listNode: ListView, searchNode: NavigationBarSearchContentNode) -> Bool { private func fixListNodeScrolling(_ listNode: ListView, searchNode: NavigationBarSearchContentNode) -> Bool {
if searchNode.expansionProgress > 0.0 && searchNode.expansionProgress < 1.0 { if searchNode.expansionProgress > 0.0 && searchNode.expansionProgress < 1.0 {

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private final class ConvertToSupergroupArguments { private final class ConvertToSupergroupArguments {
let convert: () -> Void let convert: () -> Void

View File

@ -8,6 +8,7 @@ import TelegramPresentationData
import LegacyComponents import LegacyComponents
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private struct CreateChannelArguments { private struct CreateChannelArguments {
let account: Account let account: Account

View File

@ -9,6 +9,7 @@ import TelegramUIPreferences
import LegacyComponents import LegacyComponents
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
public enum CreateGroupMode { public enum CreateGroupMode {
case generic case generic

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private enum CreatePasswordField { private enum CreatePasswordField {
case password case password

View File

@ -9,6 +9,7 @@ import TelegramUIPreferences
import ItemListUI import ItemListUI
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI
private final class DataPrivacyControllerArguments { private final class DataPrivacyControllerArguments {
let account: Account let account: Account

View File

@ -9,6 +9,7 @@ import TelegramPresentationData
import ItemListUI import ItemListUI
import TelegramStringFormatting import TelegramStringFormatting
import AccountContext import AccountContext
import AlertUI
private enum DeviceContactInfoAction { private enum DeviceContactInfoAction {
case sendMessage case sendMessage

View File

@ -15,6 +15,7 @@ import AccountContext
import TelegramStringFormatting import TelegramStringFormatting
import TemporaryCachedPeerDataManager import TemporaryCachedPeerDataManager
import ShareController import ShareController
import AlertUI
private final class GroupInfoArguments { private final class GroupInfoArguments {
let context: AccountContext let context: AccountContext

View File

@ -9,6 +9,7 @@ import MessageUI
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import ShareController import ShareController
import AlertUI
public class InviteContactsController: ViewController, MFMessageComposeViewControllerDelegate, UINavigationControllerDelegate { public class InviteContactsController: ViewController, MFMessageComposeViewControllerDelegate, UINavigationControllerDelegate {
private let context: AccountContext private let context: AccountContext

View File

@ -7,6 +7,7 @@ import TelegramCore
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import AlertUI
public final class JoinLinkPreviewController: ViewController { public final class JoinLinkPreviewController: ViewController {
private var controllerNode: JoinLinkPreviewControllerNode { private var controllerNode: JoinLinkPreviewControllerNode {

View File

@ -7,6 +7,7 @@ import TelegramCore
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import AlertUI
public final class LanguageLinkPreviewController: ViewController { public final class LanguageLinkPreviewController: ViewController {
private var controllerNode: LanguageLinkPreviewControllerNode { private var controllerNode: LanguageLinkPreviewControllerNode {

View File

@ -9,6 +9,7 @@ import TelegramPresentationData
import ItemListUI import ItemListUI
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI
private struct LogoutOptionsItemArguments { private struct LogoutOptionsItemArguments {
let addAccount: () -> Void let addAccount: () -> Void

View File

@ -9,6 +9,7 @@ import TelegramUIPreferences
import DeviceAccess import DeviceAccess
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private final class NotificationsAndSoundsArguments { private final class NotificationsAndSoundsArguments {
let context: AccountContext let context: AccountContext

View File

@ -4,6 +4,7 @@ import TelegramCore
import Display import Display
import DeviceAccess import DeviceAccess
import AccountContext import AccountContext
import AlertUI
func openAddContact(context: AccountContext, firstName: String = "", lastName: String = "", phoneNumber: String, label: String = "_$!<Mobile>!$_", present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void = {}) { func openAddContact(context: AccountContext, firstName: String = "", lastName: String = "", phoneNumber: String, label: String = "_$!<Mobile>!$_", present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void = {}) {
let _ = (DeviceAccess.authorizationStatus(subject: .contacts) let _ = (DeviceAccess.authorizationStatus(subject: .contacts)

View File

@ -7,6 +7,7 @@ import SwiftSignalKit
import TelegramUIPreferences import TelegramUIPreferences
import AccountContext import AccountContext
import OverlayStatusController import OverlayStatusController
import AlertUI
private func defaultNavigationForPeerId(_ peerId: PeerId?, navigation: ChatControllerInteractionNavigateToPeer) -> ChatControllerInteractionNavigateToPeer { private func defaultNavigationForPeerId(_ peerId: PeerId?, navigation: ChatControllerInteractionNavigateToPeer) -> ChatControllerInteractionNavigateToPeer {
if case .default = navigation { if case .default = navigation {

View File

@ -8,6 +8,7 @@ import TelegramPresentationData
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import ContextUI import ContextUI
import AlertUI
enum PeerReportSubject { enum PeerReportSubject {
case peer(PeerId) case peer(PeerId)

View File

@ -11,6 +11,7 @@ import ItemListUI
import OverlayStatusController import OverlayStatusController
import DeviceLocationManager import DeviceLocationManager
import AccountContext import AccountContext
import AlertUI
private struct PeerNearbyEntry { private struct PeerNearbyEntry {
let peer: (Peer, CachedPeerData?) let peer: (Peer, CachedPeerData?)

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private final class ResetPasswordControllerArguments { private final class ResetPasswordControllerArguments {
let updateCodeText: (String) -> Void let updateCodeText: (String) -> Void

View File

@ -9,6 +9,7 @@ import TelegramPresentationData
import TextFormat import TextFormat
import ProgressNavigationButtonNode import ProgressNavigationButtonNode
import AccountContext import AccountContext
import AlertUI
public enum SecureIdRequestResult: String { public enum SecureIdRequestResult: String {
case success = "success" case success = "success"

View File

@ -8,6 +8,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ProgressNavigationButtonNode import ProgressNavigationButtonNode
import AccountContext import AccountContext
import AlertUI
enum SecureIdDocumentFormScrollToSubject { enum SecureIdDocumentFormScrollToSubject {
case selfie case selfie

View File

@ -8,6 +8,7 @@ import SwiftSignalKit
import CoreTelephony import CoreTelephony
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import AlertUI
private func cleanPhoneNumber(_ text: String?) -> String { private func cleanPhoneNumber(_ text: String?) -> String {
var cleanNumber = "" var cleanNumber = ""

View File

@ -18,6 +18,7 @@ import ItemListUI
import AccountContext import AccountContext
import OverlayStatusController import OverlayStatusController
import AvatarNode import AvatarNode
import AlertUI
private let maximumNumberOfAccounts = 3 private let maximumNumberOfAccounts = 3

View File

@ -8,6 +8,7 @@ import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ActivityIndicator import ActivityIndicator
import AccountContext import AccountContext
import AlertUI
enum SetupTwoStepVerificationInitialState { enum SetupTwoStepVerificationInitialState {
case automatic case automatic

View File

@ -9,6 +9,7 @@ import TelegramUIPreferences
import AccountContext import AccountContext
import ShareController import ShareController
import StickerResources import StickerResources
import AlertUI
enum StickerPackPreviewControllerMode { enum StickerPackPreviewControllerMode {
case `default` case `default`

View File

@ -5,6 +5,7 @@ import SwiftSignalKit
import TelegramCore import TelegramCore
import DeviceAccess import DeviceAccess
import AccountContext import AccountContext
import AlertUI
func presentContactsWarningSuppression(context: AccountContext, present: (ViewController, Any?) -> Void) { func presentContactsWarningSuppression(context: AccountContext, present: (ViewController, Any?) -> Void) {
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import AccountContext import AccountContext
import AlertUI
private final class TwoStepVerificationPasswordEntryControllerArguments { private final class TwoStepVerificationPasswordEntryControllerArguments {
let updateEntryText: (String) -> Void let updateEntryText: (String) -> Void

View File

@ -8,6 +8,7 @@ import TelegramPresentationData
import ItemListUI import ItemListUI
import TextFormat import TextFormat
import AccountContext import AccountContext
import AlertUI
private final class TwoStepVerificationResetControllerArguments { private final class TwoStepVerificationResetControllerArguments {
let updateEntryText: (String) -> Void let updateEntryText: (String) -> Void

View File

@ -9,6 +9,7 @@ import ItemListUI
import TextFormat import TextFormat
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI
private final class TwoStepVerificationUnlockSettingsControllerArguments { private final class TwoStepVerificationUnlockSettingsControllerArguments {
let updatePasswordText: (String) -> Void let updatePasswordText: (String) -> Void

View File

@ -14,6 +14,7 @@ import OverlayStatusController
import TelegramStringFormatting import TelegramStringFormatting
import AccountContext import AccountContext
import ShareController import ShareController
import AlertUI
private final class UserInfoControllerArguments { private final class UserInfoControllerArguments {
let account: Account let account: Account

View File

@ -32,7 +32,6 @@
091417F421EF4F5F00C8325A /* WallpaperGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */; }; 091417F421EF4F5F00C8325A /* WallpaperGalleryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */; };
091954792294754E00E11046 /* AnimatedStickerUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091954782294754E00E11046 /* AnimatedStickerUtils.swift */; }; 091954792294754E00E11046 /* AnimatedStickerUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091954782294754E00E11046 /* AnimatedStickerUtils.swift */; };
091BEAB3214552D9003AEA30 /* Vision.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D02DADBE2138D76F00116225 /* Vision.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 091BEAB3214552D9003AEA30 /* Vision.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D02DADBE2138D76F00116225 /* Vision.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
0921F60B228C8765001A13D7 /* ItemListPlaceholderItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0921F60A228C8765001A13D7 /* ItemListPlaceholderItem.swift */; };
0921F60E228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */; }; 0921F60E228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */; };
092F368D2154AAEA001A9F49 /* SFCompactRounded-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */; }; 092F368D2154AAEA001A9F49 /* SFCompactRounded-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */; };
092F36902157AB46001A9F49 /* ItemListCallListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F368F2157AB46001A9F49 /* ItemListCallListItem.swift */; }; 092F36902157AB46001A9F49 /* ItemListCallListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092F368F2157AB46001A9F49 /* ItemListCallListItem.swift */; };
@ -141,7 +140,6 @@
09DD88F121BE1090000766BC /* CallRatingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F021BE1090000766BC /* CallRatingController.swift */; }; 09DD88F121BE1090000766BC /* CallRatingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F021BE1090000766BC /* CallRatingController.swift */; };
09DD88F321BF907C000766BC /* WebSearchRecentQueryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */; }; 09DD88F321BF907C000766BC /* WebSearchRecentQueryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */; };
09DD88F521BF9730000766BC /* WebSearchRecentQueries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */; }; 09DD88F521BF9730000766BC /* WebSearchRecentQueries.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */; };
09DD88FA21BFD70B000766BC /* ThemedTextAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88F921BFD70B000766BC /* ThemedTextAlertController.swift */; };
09DE2F252269B7E80045E975 /* PasscodeSetupControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */; }; 09DE2F252269B7E80045E975 /* PasscodeSetupControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */; };
09DE2F272269D5730045E975 /* PrivacyIntroController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F262269D5730045E975 /* PrivacyIntroController.swift */; }; 09DE2F272269D5730045E975 /* PrivacyIntroController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F262269D5730045E975 /* PrivacyIntroController.swift */; };
09DE2F292269D5E30045E975 /* PrivacyIntroControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */; }; 09DE2F292269D5E30045E975 /* PrivacyIntroControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */; };
@ -529,9 +527,6 @@
D0AA29AE1F72770D00C050AC /* ChatListItemStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA29AD1F72770D00C050AC /* ChatListItemStrings.swift */; }; D0AA29AE1F72770D00C050AC /* ChatListItemStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA29AD1F72770D00C050AC /* ChatListItemStrings.swift */; };
D0AA840C1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA840B1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift */; }; D0AA840C1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA840B1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift */; };
D0AB262921C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB262821C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift */; }; D0AB262921C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB262821C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift */; };
D0AB262F21C3D3DE008F6685 /* CreatePollController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB262E21C3D3DE008F6685 /* CreatePollController.swift */; };
D0AB263121C3DB21008F6685 /* CreatePollOptionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB263021C3DB21008F6685 /* CreatePollOptionItem.swift */; };
D0AB263321C3DFEA008F6685 /* CreatePollOptionActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB263221C3DFEA008F6685 /* CreatePollOptionActionItem.swift */; };
D0AB269E21D56A12008F6685 /* ChannelPermissionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */; }; D0AB269E21D56A12008F6685 /* ChannelPermissionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */; };
D0ACCB1A1EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ACCB191EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift */; }; D0ACCB1A1EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ACCB191EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift */; };
D0ACCB1C1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ACCB1B1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift */; }; D0ACCB1C1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ACCB1B1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift */; };
@ -634,6 +629,8 @@
D0C44B641FC64D0500227BE0 /* SwipeToDismissGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C44B631FC64D0500227BE0 /* SwipeToDismissGestureRecognizer.swift */; }; D0C44B641FC64D0500227BE0 /* SwipeToDismissGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C44B631FC64D0500227BE0 /* SwipeToDismissGestureRecognizer.swift */; };
D0C45E9F213FFAFD00988156 /* Lottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C45E9E213FFAFD00988156 /* Lottie.framework */; }; D0C45E9F213FFAFD00988156 /* Lottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C45E9E213FFAFD00988156 /* Lottie.framework */; };
D0C683FC21AD797F00A6CAD5 /* ChatListSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C683FB21AD797F00A6CAD5 /* ChatListSelection.swift */; }; D0C683FC21AD797F00A6CAD5 /* ChatListSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C683FB21AD797F00A6CAD5 /* ChatListSelection.swift */; };
D0C9BFAD22FE316E00FAB518 /* ComposePollUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFAC22FE316E00FAB518 /* ComposePollUI.framework */; };
D0C9BFDF22FE349C00FAB518 /* AlertUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFDE22FE349C00FAB518 /* AlertUI.framework */; };
D0CAD90120AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */; }; D0CAD90120AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */; };
D0CB27CF20C17A4A001ACF93 /* TermsOfServiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */; }; D0CB27CF20C17A4A001ACF93 /* TermsOfServiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */; };
D0CB27D220C17A7F001ACF93 /* TermsOfServiceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */; }; D0CB27D220C17A7F001ACF93 /* TermsOfServiceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */; };
@ -1076,9 +1073,6 @@
D0EC6E351EB9F58900EBF1C3 /* ItemListAvatarAndNameItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */; }; D0EC6E351EB9F58900EBF1C3 /* ItemListAvatarAndNameItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */; };
D0EC6E3B1EB9F58900EBF1C3 /* ItemListPeerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B843D81DAAAA0C005F29E1 /* ItemListPeerItem.swift */; }; D0EC6E3B1EB9F58900EBF1C3 /* ItemListPeerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B843D81DAAAA0C005F29E1 /* ItemListPeerItem.swift */; };
D0EC6E3C1EB9F58900EBF1C3 /* ItemListPeerActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B843DA1DAAB138005F29E1 /* ItemListPeerActionItem.swift */; }; D0EC6E3C1EB9F58900EBF1C3 /* ItemListPeerActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B843DA1DAAB138005F29E1 /* ItemListPeerActionItem.swift */; };
D0EC6E3E1EB9F58900EBF1C3 /* ItemListSectionHeaderItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00B3F9D1E3A4847003872C3 /* ItemListSectionHeaderItem.swift */; };
D0EC6E441EB9F58900EBF1C3 /* ItemListSingleLineInputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0561DDE1E56FE8200E6B9E9 /* ItemListSingleLineInputItem.swift */; };
D0EC6E471EB9F58900EBF1C3 /* ItemListTextEmptyStateItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09AEFD31E5BAF67005C1A8B /* ItemListTextEmptyStateItem.swift */; };
D0EC6E4D1EB9F58900EBF1C3 /* PeerInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B843CC1DA903BB005F29E1 /* PeerInfoController.swift */; }; D0EC6E4D1EB9F58900EBF1C3 /* PeerInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0B843CC1DA903BB005F29E1 /* PeerInfoController.swift */; };
D0EC6E4E1EB9F58900EBF1C3 /* GroupInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0486F091E523C8500091F0C /* GroupInfoController.swift */; }; D0EC6E4E1EB9F58900EBF1C3 /* GroupInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0486F091E523C8500091F0C /* GroupInfoController.swift */; };
D0EC6E4F1EB9F58900EBF1C3 /* ChannelVisibilityController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E5E0E1E55F8B90029569A /* ChannelVisibilityController.swift */; }; D0EC6E4F1EB9F58900EBF1C3 /* ChannelVisibilityController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D03E5E0E1E55F8B90029569A /* ChannelVisibilityController.swift */; };
@ -1198,7 +1192,6 @@
091417F121EF4E5D00C8325A /* WallpaperGalleryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryController.swift; sourceTree = "<group>"; }; 091417F121EF4E5D00C8325A /* WallpaperGalleryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryController.swift; sourceTree = "<group>"; };
091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryItem.swift; sourceTree = "<group>"; }; 091417F321EF4F5F00C8325A /* WallpaperGalleryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperGalleryItem.swift; sourceTree = "<group>"; };
091954782294754E00E11046 /* AnimatedStickerUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimatedStickerUtils.swift; sourceTree = "<group>"; }; 091954782294754E00E11046 /* AnimatedStickerUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimatedStickerUtils.swift; sourceTree = "<group>"; };
0921F60A228C8765001A13D7 /* ItemListPlaceholderItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListPlaceholderItem.swift; sourceTree = "<group>"; };
0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageActionUrlAuthController.swift; sourceTree = "<group>"; }; 0921F60D228EE000001A13D7 /* ChatMessageActionUrlAuthController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageActionUrlAuthController.swift; sourceTree = "<group>"; };
092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SFCompactRounded-Semibold.otf"; sourceTree = "<group>"; }; 092F368C2154AAE9001A9F49 /* SFCompactRounded-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SFCompactRounded-Semibold.otf"; sourceTree = "<group>"; };
092F368F2157AB46001A9F49 /* ItemListCallListItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListCallListItem.swift; sourceTree = "<group>"; }; 092F368F2157AB46001A9F49 /* ItemListCallListItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListCallListItem.swift; sourceTree = "<group>"; };
@ -1307,7 +1300,6 @@
09DD88F021BE1090000766BC /* CallRatingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallRatingController.swift; sourceTree = "<group>"; }; 09DD88F021BE1090000766BC /* CallRatingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallRatingController.swift; sourceTree = "<group>"; };
09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueryItem.swift; sourceTree = "<group>"; }; 09DD88F221BF907C000766BC /* WebSearchRecentQueryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueryItem.swift; sourceTree = "<group>"; };
09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueries.swift; sourceTree = "<group>"; }; 09DD88F421BF9730000766BC /* WebSearchRecentQueries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSearchRecentQueries.swift; sourceTree = "<group>"; };
09DD88F921BFD70B000766BC /* ThemedTextAlertController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemedTextAlertController.swift; sourceTree = "<group>"; };
09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeSetupControllerNode.swift; sourceTree = "<group>"; }; 09DE2F242269B7E80045E975 /* PasscodeSetupControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeSetupControllerNode.swift; sourceTree = "<group>"; };
09DE2F262269D5730045E975 /* PrivacyIntroController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyIntroController.swift; sourceTree = "<group>"; }; 09DE2F262269D5730045E975 /* PrivacyIntroController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyIntroController.swift; sourceTree = "<group>"; };
09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyIntroControllerNode.swift; sourceTree = "<group>"; }; 09DE2F282269D5E30045E975 /* PrivacyIntroControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivacyIntroControllerNode.swift; sourceTree = "<group>"; };
@ -1415,7 +1407,6 @@
D00818CC22B595CB008A895F /* LightweightAccountData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LightweightAccountData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D00818CC22B595CB008A895F /* LightweightAccountData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LightweightAccountData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D00ACA4C20222C280045D427 /* libtgvoip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = libtgvoip.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D00ACA4C20222C280045D427 /* libtgvoip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = libtgvoip.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D00ACA592022897D0045D427 /* ProcessedPeerRestrictionText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProcessedPeerRestrictionText.swift; sourceTree = "<group>"; }; D00ACA592022897D0045D427 /* ProcessedPeerRestrictionText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProcessedPeerRestrictionText.swift; sourceTree = "<group>"; };
D00B3F9D1E3A4847003872C3 /* ItemListSectionHeaderItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListSectionHeaderItem.swift; sourceTree = "<group>"; };
D00BDA1E1EE5B69200C64C5E /* ChannelAdminController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelAdminController.swift; sourceTree = "<group>"; }; D00BDA1E1EE5B69200C64C5E /* ChannelAdminController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelAdminController.swift; sourceTree = "<group>"; };
D00C7CD81E36B2DB0080C3D5 /* ContactListNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactListNode.swift; sourceTree = "<group>"; }; D00C7CD81E36B2DB0080C3D5 /* ContactListNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactListNode.swift; sourceTree = "<group>"; };
D00C7CDB1E3776E50080C3D5 /* SecretMediaPreviewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretMediaPreviewController.swift; sourceTree = "<group>"; }; D00C7CDB1E3776E50080C3D5 /* SecretMediaPreviewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SecretMediaPreviewController.swift; sourceTree = "<group>"; };
@ -1663,7 +1654,6 @@
D0528E6C1E65DE3B00E2FEF5 /* WebpagePreviewAccessoryPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebpagePreviewAccessoryPanelNode.swift; sourceTree = "<group>"; }; D0528E6C1E65DE3B00E2FEF5 /* WebpagePreviewAccessoryPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebpagePreviewAccessoryPanelNode.swift; sourceTree = "<group>"; };
D053B4361F1A9CA000E2D58A /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; D053B4361F1A9CA000E2D58A /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
D053DADB201AAAB100993D32 /* ChatTextInputMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextInputMenu.swift; sourceTree = "<group>"; }; D053DADB201AAAB100993D32 /* ChatTextInputMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextInputMenu.swift; sourceTree = "<group>"; };
D0561DDE1E56FE8200E6B9E9 /* ItemListSingleLineInputItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListSingleLineInputItem.swift; sourceTree = "<group>"; };
D0561DE71E574C3200E6B9E9 /* ChannelAdminsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelAdminsController.swift; sourceTree = "<group>"; }; D0561DE71E574C3200E6B9E9 /* ChannelAdminsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChannelAdminsController.swift; sourceTree = "<group>"; };
D05677501F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceItem.swift; sourceTree = "<group>"; }; D05677501F4CA0C2001B723E /* InstantPagePeerReferenceItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceItem.swift; sourceTree = "<group>"; };
D05677521F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceNode.swift; sourceTree = "<group>"; }; D05677521F4CA0D0001B723E /* InstantPagePeerReferenceNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstantPagePeerReferenceNode.swift; sourceTree = "<group>"; };
@ -1841,7 +1831,6 @@
D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManagedMediaId.swift; sourceTree = "<group>"; }; D099EA261DE765DB001AF5A8 /* ManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ManagedMediaId.swift; sourceTree = "<group>"; };
D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMessageManagedMediaId.swift; sourceTree = "<group>"; }; D099EA2C1DE76782001AF5A8 /* PeerMessageManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMessageManagedMediaId.swift; sourceTree = "<group>"; };
D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatContextResultManagedMediaId.swift; sourceTree = "<group>"; }; D099EA2E1DE775BB001AF5A8 /* ChatContextResultManagedMediaId.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatContextResultManagedMediaId.swift; sourceTree = "<group>"; };
D09AEFD31E5BAF67005C1A8B /* ItemListTextEmptyStateItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListTextEmptyStateItem.swift; sourceTree = "<group>"; };
D09D88701F86D36700BEB4C9 /* CountryList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountryList.swift; sourceTree = "<group>"; }; D09D88701F86D36700BEB4C9 /* CountryList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountryList.swift; sourceTree = "<group>"; };
D09D88721F86D56B00BEB4C9 /* AuthorizationLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationLayout.swift; sourceTree = "<group>"; }; D09D88721F86D56B00BEB4C9 /* AuthorizationLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationLayout.swift; sourceTree = "<group>"; };
D09E637B1F0E7C28003444CD /* SharedMediaPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedMediaPlayer.swift; sourceTree = "<group>"; }; D09E637B1F0E7C28003444CD /* SharedMediaPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedMediaPlayer.swift; sourceTree = "<group>"; };
@ -1883,9 +1872,6 @@
D0AB0BB71D67191C002C78E7 /* SSignalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SSignalKit.framework; path = "../../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-diblohvjozhgaifjcniwdlixlilx/Build/Products/Debug-iphoneos/SSignalKit.framework"; sourceTree = "<group>"; }; D0AB0BB71D67191C002C78E7 /* SSignalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SSignalKit.framework; path = "../../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-diblohvjozhgaifjcniwdlixlilx/Build/Products/Debug-iphoneos/SSignalKit.framework"; sourceTree = "<group>"; };
D0AB0BBA1D6719B5002C78E7 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; }; D0AB0BBA1D6719B5002C78E7 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
D0AB262821C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessagePollBubbleContentNode.swift; sourceTree = "<group>"; }; D0AB262821C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessagePollBubbleContentNode.swift; sourceTree = "<group>"; };
D0AB262E21C3D3DE008F6685 /* CreatePollController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreatePollController.swift; sourceTree = "<group>"; };
D0AB263021C3DB21008F6685 /* CreatePollOptionItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreatePollOptionItem.swift; sourceTree = "<group>"; };
D0AB263221C3DFEA008F6685 /* CreatePollOptionActionItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreatePollOptionActionItem.swift; sourceTree = "<group>"; };
D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelPermissionsController.swift; sourceTree = "<group>"; }; D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelPermissionsController.swift; sourceTree = "<group>"; };
D0ACCB191EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerKeyPreviewNode.swift; sourceTree = "<group>"; }; D0ACCB191EC5E0C20079D8BF /* CallControllerKeyPreviewNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallControllerKeyPreviewNode.swift; sourceTree = "<group>"; };
D0ACCB1B1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageCallBubbleContentNode.swift; sourceTree = "<group>"; }; D0ACCB1B1EC5FF4B0079D8BF /* ChatMessageCallBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageCallBubbleContentNode.swift; sourceTree = "<group>"; };
@ -2014,6 +2000,8 @@
D0C932351E0988C60074F044 /* ChatButtonKeyboardInputNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatButtonKeyboardInputNode.swift; sourceTree = "<group>"; }; D0C932351E0988C60074F044 /* ChatButtonKeyboardInputNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatButtonKeyboardInputNode.swift; sourceTree = "<group>"; };
D0C932371E09E0EA0074F044 /* ChatBotInfoItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatBotInfoItem.swift; sourceTree = "<group>"; }; D0C932371E09E0EA0074F044 /* ChatBotInfoItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatBotInfoItem.swift; sourceTree = "<group>"; };
D0C9323B1E0B4AE90074F044 /* DataAndStorageSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataAndStorageSettingsController.swift; sourceTree = "<group>"; }; D0C9323B1E0B4AE90074F044 /* DataAndStorageSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataAndStorageSettingsController.swift; sourceTree = "<group>"; };
D0C9BFAC22FE316E00FAB518 /* ComposePollUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ComposePollUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9BFDE22FE349C00FAB518 /* AlertUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AlertUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatEditInterfaceMessageState.swift; sourceTree = "<group>"; }; D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatEditInterfaceMessageState.swift; sourceTree = "<group>"; };
D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceController.swift; sourceTree = "<group>"; }; D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceController.swift; sourceTree = "<group>"; };
D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceControllerNode.swift; sourceTree = "<group>"; }; D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceControllerNode.swift; sourceTree = "<group>"; };
@ -2381,6 +2369,8 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
D0C9BFDF22FE349C00FAB518 /* AlertUI.framework in Frameworks */,
D0C9BFAD22FE316E00FAB518 /* ComposePollUI.framework in Frameworks */,
D09E779322FA5CEA00B9CCA7 /* AccountContext.framework in Frameworks */, D09E779322FA5CEA00B9CCA7 /* AccountContext.framework in Frameworks */,
D09E779522FA5CEA00B9CCA7 /* ActionSheetPeerItem.framework in Frameworks */, D09E779522FA5CEA00B9CCA7 /* ActionSheetPeerItem.framework in Frameworks */,
D09E779722FA5CEA00B9CCA7 /* AnimationUI.framework in Frameworks */, D09E779722FA5CEA00B9CCA7 /* AnimationUI.framework in Frameworks */,
@ -2643,7 +2633,6 @@
09DD88F821BFD6FA000766BC /* Alert */ = { 09DD88F821BFD6FA000766BC /* Alert */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
09DD88F921BFD70B000766BC /* ThemedTextAlertController.swift */,
); );
name = Alert; name = Alert;
sourceTree = "<group>"; sourceTree = "<group>";
@ -3481,6 +3470,8 @@
D08D45281D5E340200A7428A /* Frameworks */ = { D08D45281D5E340200A7428A /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D0C9BFDE22FE349C00FAB518 /* AlertUI.framework */,
D0C9BFAC22FE316E00FAB518 /* ComposePollUI.framework */,
D09E779222FA5CEA00B9CCA7 /* AccountContext.framework */, D09E779222FA5CEA00B9CCA7 /* AccountContext.framework */,
D09E779422FA5CEA00B9CCA7 /* ActionSheetPeerItem.framework */, D09E779422FA5CEA00B9CCA7 /* ActionSheetPeerItem.framework */,
D09E779622FA5CEA00B9CCA7 /* AnimationUI.framework */, D09E779622FA5CEA00B9CCA7 /* AnimationUI.framework */,
@ -3636,9 +3627,6 @@
D0AB262D21C3D3CE008F6685 /* Poll */ = { D0AB262D21C3D3CE008F6685 /* Poll */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
D0AB262E21C3D3DE008F6685 /* CreatePollController.swift */,
D0AB263021C3DB21008F6685 /* CreatePollOptionItem.swift */,
D0AB263221C3DFEA008F6685 /* CreatePollOptionActionItem.swift */,
); );
name = Poll; name = Poll;
sourceTree = "<group>"; sourceTree = "<group>";
@ -4108,9 +4096,6 @@
D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */, D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */,
D0B843D81DAAAA0C005F29E1 /* ItemListPeerItem.swift */, D0B843D81DAAAA0C005F29E1 /* ItemListPeerItem.swift */,
D0B843DA1DAAB138005F29E1 /* ItemListPeerActionItem.swift */, D0B843DA1DAAB138005F29E1 /* ItemListPeerActionItem.swift */,
D00B3F9D1E3A4847003872C3 /* ItemListSectionHeaderItem.swift */,
D0561DDE1E56FE8200E6B9E9 /* ItemListSingleLineInputItem.swift */,
D09AEFD31E5BAF67005C1A8B /* ItemListTextEmptyStateItem.swift */,
09B4EE5521A8149C00847FA6 /* ItemListInfoItem.swift */, 09B4EE5521A8149C00847FA6 /* ItemListInfoItem.swift */,
); );
name = Items; name = Items;
@ -4711,7 +4696,6 @@
D0B2F76D2052B59F00D3BFB9 /* InviteContactsController.swift */, D0B2F76D2052B59F00D3BFB9 /* InviteContactsController.swift */,
D0B2F76F2052B5A800D3BFB9 /* InviteContactsControllerNode.swift */, D0B2F76F2052B5A800D3BFB9 /* InviteContactsControllerNode.swift */,
D0B2F7712052D0DD00D3BFB9 /* InviteContactsCountPanelNode.swift */, D0B2F7712052D0DD00D3BFB9 /* InviteContactsCountPanelNode.swift */,
0921F60A228C8765001A13D7 /* ItemListPlaceholderItem.swift */,
); );
name = Contacts; name = Contacts;
sourceTree = "<group>"; sourceTree = "<group>";
@ -5292,7 +5276,6 @@
D05D8B742195CD890064586F /* SetupTwoStepVerificationController.swift in Sources */, D05D8B742195CD890064586F /* SetupTwoStepVerificationController.swift in Sources */,
D06BEC8A1F6597A80035A545 /* OverlayVideoDecoration.swift in Sources */, D06BEC8A1F6597A80035A545 /* OverlayVideoDecoration.swift in Sources */,
09619B9621A4ABF600493558 /* InstantPageReferenceControllerNode.swift in Sources */, 09619B9621A4ABF600493558 /* InstantPageReferenceControllerNode.swift in Sources */,
D0AB263321C3DFEA008F6685 /* CreatePollOptionActionItem.swift in Sources */,
09FFBCDB22849CB500C33B4B /* PDF.swift in Sources */, 09FFBCDB22849CB500C33B4B /* PDF.swift in Sources */,
09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */, 09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */,
090E778E22AA863A00CD99F5 /* PeersNearbyIconNode.swift in Sources */, 090E778E22AA863A00CD99F5 /* PeersNearbyIconNode.swift in Sources */,
@ -5323,7 +5306,6 @@
D0EC6CFF1EB9F58800EBF1C3 /* OverlayMediaController.swift in Sources */, D0EC6CFF1EB9F58800EBF1C3 /* OverlayMediaController.swift in Sources */,
D0EC6D001EB9F58800EBF1C3 /* OverlayMediaControllerNode.swift in Sources */, D0EC6D001EB9F58800EBF1C3 /* OverlayMediaControllerNode.swift in Sources */,
D02C81712177729000CD1006 /* NotificationExceptions.swift in Sources */, D02C81712177729000CD1006 /* NotificationExceptions.swift in Sources */,
D0AB263121C3DB21008F6685 /* CreatePollOptionItem.swift in Sources */,
D0EC6D021EB9F58800EBF1C3 /* diag_range.c in Sources */, D0EC6D021EB9F58800EBF1C3 /* diag_range.c in Sources */,
D0E9BA1A1F05574500F079A4 /* STPPaymentCardTextField.m in Sources */, D0E9BA1A1F05574500F079A4 /* STPPaymentCardTextField.m in Sources */,
09CE95112237F3C100A7D2C3 /* SettingsSearchRecentQueries.swift in Sources */, 09CE95112237F3C100A7D2C3 /* SettingsSearchRecentQueries.swift in Sources */,
@ -5417,7 +5399,6 @@
D0E9BAE01F0574D800F079A4 /* STPDispatchFunctions.m in Sources */, D0E9BAE01F0574D800F079A4 /* STPDispatchFunctions.m in Sources */,
D0EC6D2B1EB9F58800EBF1C3 /* FileMediaResourceStatus.swift in Sources */, D0EC6D2B1EB9F58800EBF1C3 /* FileMediaResourceStatus.swift in Sources */,
D0EC6D2C1EB9F58800EBF1C3 /* TouchDownGestureRecognizer.swift in Sources */, D0EC6D2C1EB9F58800EBF1C3 /* TouchDownGestureRecognizer.swift in Sources */,
09DD88FA21BFD70B000766BC /* ThemedTextAlertController.swift in Sources */,
D0FA08C020483F9600DD23FC /* ExtractVideoData.swift in Sources */, D0FA08C020483F9600DD23FC /* ExtractVideoData.swift in Sources */,
D025402522E1E00100AC0195 /* ChatSlowmodeHintController.swift in Sources */, D025402522E1E00100AC0195 /* ChatSlowmodeHintController.swift in Sources */,
D008177D22B46B7E008A895F /* TGContactModel.m in Sources */, D008177D22B46B7E008A895F /* TGContactModel.m in Sources */,
@ -5466,7 +5447,6 @@
09749BC921F1BBA1008FDDE9 /* CallFeedbackController.swift in Sources */, 09749BC921F1BBA1008FDDE9 /* CallFeedbackController.swift in Sources */,
099529FA21DD8A3100805E13 /* NavigationBarSearchContentNode.swift in Sources */, 099529FA21DD8A3100805E13 /* NavigationBarSearchContentNode.swift in Sources */,
D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */, D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */,
0921F60B228C8765001A13D7 /* ItemListPlaceholderItem.swift in Sources */,
D0EC6D4F1EB9F58800EBF1C3 /* ChatListSearchItem.swift in Sources */, D0EC6D4F1EB9F58800EBF1C3 /* ChatListSearchItem.swift in Sources */,
D0EC6D501EB9F58800EBF1C3 /* ChatListNodeEntries.swift in Sources */, D0EC6D501EB9F58800EBF1C3 /* ChatListNodeEntries.swift in Sources */,
D0EC6D511EB9F58800EBF1C3 /* ChatListViewTransition.swift in Sources */, D0EC6D511EB9F58800EBF1C3 /* ChatListViewTransition.swift in Sources */,
@ -5956,14 +5936,12 @@
D0CE8CE71F6F35A300AA2DB0 /* ChatTextInputPanelState.swift in Sources */, D0CE8CE71F6F35A300AA2DB0 /* ChatTextInputPanelState.swift in Sources */,
D0AF796E22C2E26500CECCB8 /* astc.cc in Sources */, D0AF796E22C2E26500CECCB8 /* astc.cc in Sources */,
D0CE6F70213EEE5000BCD44B /* CreatePasswordController.swift in Sources */, D0CE6F70213EEE5000BCD44B /* CreatePasswordController.swift in Sources */,
D0EC6E3E1EB9F58900EBF1C3 /* ItemListSectionHeaderItem.swift in Sources */,
0958FBB9218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift in Sources */, 0958FBB9218AD6AF00E0CBD8 /* InstantPageFeedbackItem.swift in Sources */,
0940932622E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift in Sources */, 0940932622E73E12003846A3 /* ChatSendMessageActionSheetControllerNode.swift in Sources */,
D00817D022B47A14008A895F /* WakeupManager.swift in Sources */, D00817D022B47A14008A895F /* WakeupManager.swift in Sources */,
D0AF798822C2E26500CECCB8 /* matrix.cc in Sources */, D0AF798822C2E26500CECCB8 /* matrix.cc in Sources */,
D0E8175920122FE100B82BBB /* ChatRecentActionsFilterController.swift in Sources */, D0E8175920122FE100B82BBB /* ChatRecentActionsFilterController.swift in Sources */,
D08557E722C5FEB90026D6D2 /* AnimatedStickerNode.swift in Sources */, D08557E722C5FEB90026D6D2 /* AnimatedStickerNode.swift in Sources */,
D0EC6E441EB9F58900EBF1C3 /* ItemListSingleLineInputItem.swift in Sources */,
D084023420E295F000065674 /* GroupStickerPackSetupController.swift in Sources */, D084023420E295F000065674 /* GroupStickerPackSetupController.swift in Sources */,
D01C06BE1FBCAF06001561AB /* ChatMessageBubbleMosaicLayout.swift in Sources */, D01C06BE1FBCAF06001561AB /* ChatMessageBubbleMosaicLayout.swift in Sources */,
0900678D21ED5EA800530762 /* WallpaperColorPanelNode.swift in Sources */, 0900678D21ED5EA800530762 /* WallpaperColorPanelNode.swift in Sources */,
@ -5973,7 +5951,6 @@
D02F4AE91FCF370B004DFBAE /* ChatMessageInteractiveMediaBadge.swift in Sources */, D02F4AE91FCF370B004DFBAE /* ChatMessageInteractiveMediaBadge.swift in Sources */,
D00817CF22B47A14008A895F /* LegacyFileImport.swift in Sources */, D00817CF22B47A14008A895F /* LegacyFileImport.swift in Sources */,
D01A21AF1F39EA2E00DDA104 /* InstantPageTheme.swift in Sources */, D01A21AF1F39EA2E00DDA104 /* InstantPageTheme.swift in Sources */,
D0EC6E471EB9F58900EBF1C3 /* ItemListTextEmptyStateItem.swift in Sources */,
D0E412C62069B60600BEE4A2 /* FormControllerHeaderItem.swift in Sources */, D0E412C62069B60600BEE4A2 /* FormControllerHeaderItem.swift in Sources */,
D0E412D5206A842900BEE4A2 /* SecureIdVerificationDocument.swift in Sources */, D0E412D5206A842900BEE4A2 /* SecureIdVerificationDocument.swift in Sources */,
D0147BA9206EA35000E40378 /* SecureIdDocumentGalleryController.swift in Sources */, D0147BA9206EA35000E40378 /* SecureIdDocumentGalleryController.swift in Sources */,
@ -6010,7 +5987,6 @@
D0EC6E541EB9F58900EBF1C3 /* ConvertToSupergroupController.swift in Sources */, D0EC6E541EB9F58900EBF1C3 /* ConvertToSupergroupController.swift in Sources */,
D0EC6E561EB9F58900EBF1C3 /* UserInfoController.swift in Sources */, D0EC6E561EB9F58900EBF1C3 /* UserInfoController.swift in Sources */,
D0EC6E571EB9F58900EBF1C3 /* GroupsInCommonController.swift in Sources */, D0EC6E571EB9F58900EBF1C3 /* GroupsInCommonController.swift in Sources */,
D0AB262F21C3D3DE008F6685 /* CreatePollController.swift in Sources */,
D0EC6E581EB9F58900EBF1C3 /* PeerSelectionController.swift in Sources */, D0EC6E581EB9F58900EBF1C3 /* PeerSelectionController.swift in Sources */,
D093D7D92062A9CA00BC3599 /* SecureIdAuthControllerState.swift in Sources */, D093D7D92062A9CA00BC3599 /* SecureIdAuthControllerState.swift in Sources */,
D01590AB22BD467B0017C33E /* AnimationRenderer.swift in Sources */, D01590AB22BD467B0017C33E /* AnimationRenderer.swift in Sources */,