Context menu improvements

This commit is contained in:
Peter 2019-09-06 23:24:37 +04:00
commit c5693f06b3
1146 changed files with 156026 additions and 8021 deletions

View File

@ -1,14 +1,14 @@
[cxx]
default_platform = iphoneos-armv7
cflags = -fmodules -fobjc-arc -D BUCK -D DEBUG -w -fno-optimize-sibling-calls $(config custom.other_cflags)
cxxflags = -fobjc-arc -std=c++14 -D BUCK -D DEBUG -w -fno-optimize-sibling-calls $(config custom.other_cxxflags)
default_platform = iphonesimulator-x86_64
cflags = -g -fmodules -fobjc-arc -D BUCK -DTARGET_OS_IOS=1 -g -w $(config custom.other_cflags)
cxxflags = -fobjc-arc -std=c++14 -D BUCK -DTARGET_OS_IOS=1 -g $(config custom.other_cxxflags)
combined_preprocess_and_compile = true
pch_enabled = false
ldflags = -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -dead_strip -Xlinker -no_deduplicate $(config custom.other_cxxflags)
ldflags = -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime $(config custom.other_cxxflags)
[swift]
version = 5
compiler_flags = -DBUCK -enable-testing -O -whole-module-optimization -suppress-warnings -Xcc -fno-optimize-sibling-calls $(config custom.other_swift_compiler_flags)
compiler_flags = -g -DBUCK $(config custom.optimization) $(config custom.config_swift_compiler_flags) $(config custom.other_swift_compiler_flags)
use_filelist = true
[apple]
@ -19,8 +19,7 @@
iphoneos_target_sdk_version = 8.0
provisioning_profile_read_command = security cms -Di
xctool_default_destination_specifier = platform=iOS Simulator,OS=latest
;provisioning_profile_search_path = ./
;xctool_path = tools/xctool/bin/xctool
xctool_path = tools/xctool/bin/xctool
[parser]
polyglot_parsing_enabled = true
@ -33,6 +32,4 @@
allow_symlinks = forbid
ignore = tools, \
.git, \
[build]
thread_core_ratio = 2.0

607
BUCK
View File

@ -1,182 +1,499 @@
load('//tools:buck_utils.bzl', 'config_with_updated_linker_flags', 'configs_with_config', 'combined_config')
load('//tools:buck_defs.bzl', 'SHARED_CONFIGS')
load("//Config:configs.bzl",
"app_binary_configs",
"share_extension_configs",
"widget_extension_configs",
"notification_content_extension_configs",
"notification_service_extension_configs",
"intents_extension_configs",
"watch_extension_binary_configs",
"watch_binary_configs",
"library_configs",
"info_plist_substitutions",
"app_info_plist_substitutions",
"share_extension_info_plist_substitutions",
"widget_extension_info_plist_substitutions",
"notification_content_extension_info_plist_substitutions",
"notification_service_extension_info_plist_substitutions",
"intents_extension_info_plist_substitutions",
"watch_extension_info_plist_substitutions",
"watch_info_plist_substitutions",
"DEVELOPMENT_LANGUAGE",
)
# Adding `-all_load` to our binaries works around https://bugs.swift.org/browse/SR-6004. See the
# longer comment in `ViewController.swift` for more details.
ALL_LOAD_LINKER_FLAG = '-all_load'
load("//Config:buck_rule_macros.bzl",
"apple_lib",
"framework_binary_dependencies",
"framework_bundle_dependencies",
"glob_map",
"glob_sub_map",
"merge_maps",
)
BUILD_NUMBER = '2001'
framework_dependencies = [
"//submodules/MtProtoKit:MtProtoKit",
"//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit",
"//submodules/Postbox:Postbox",
"//submodules/TelegramCore:TelegramCore",
"//submodules/AsyncDisplayKit:AsyncDisplayKit",
"//submodules/Display:Display",
"//submodules/TelegramUI:TelegramUI",
]
APP_CONFIGS = {
'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES': 'YES',
'DEVELOPMENT_LANGUAGE': 'Swift',
'PRODUCT_BUNDLE_IDENTIFIER': 'ph.telegra.Telegraph',
'PROVISIONING_PROFILE_SPECIFIER': 'match Development ph.telegra.Telegraph',
'TARGETED_DEVICE_FAMILY': '1,2',
'APP_NAME': 'Telegram',
'BUILD_NUMBER': BUILD_NUMBER,
'CODE_SIGN_ENTITLEMENTS': 'Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements',
}
APP_CONFIGS.update(SHARED_CONFIGS)
resource_dependencies = [
"//submodules/LegacyComponents:LegacyComponentsResources",
"//submodules/TelegramUI:TelegramUIAssets",
"//submodules/TelegramUI:TelegramUIResources",
"//:AppResources",
"//:AppStringResources",
"//:AppIntentVocabularyResources",
"//:Icons",
"//:AdditionalIcons",
"//:LaunchScreen",
]
build_phase_scripts = [
]
apple_resource(
name = 'LaunchScreenXib',
files = [
'Telegram-iOS/Base.lproj/LaunchScreen.xib',
],
name = "AppResources",
files = glob([
"Telegram-iOS/Resources/**/*",
], exclude = ["Telegram-iOS/Resources/**/.*"]),
visibility = ["PUBLIC"],
)
apple_resource(
name = "StringResources",
name = "AppStringResources",
files = [],
variants = glob([
"Telegram-iOS/*.lproj/Localizable.strings",
]),
visibility = ["PUBLIC"],
)
apple_resource(
name = "InfoPlistStringResources",
files = [],
variants = glob([
"Telegram-iOS/*.lproj/InfoPlist.strings",
]),
)
apple_resource(
name = "AppIntentVocabularyStringResources",
name = "AppIntentVocabularyResources",
files = [],
variants = glob([
"Telegram-iOS/*.lproj/AppIntentVocabulary.plist",
]),
visibility = ["PUBLIC"],
)
apple_asset_catalog(
name = 'Images',
dirs = [
'Telegram-iOS/Images.xcassets',
name = "Icons",
dirs = [
"Telegram-iOS/Icons.xcassets",
"Telegram-iOS/AppIcons.xcassets",
],
app_icon = "AppIconLLC",
visibility = ["PUBLIC"],
)
apple_resource(
name = "AdditionalIcons",
files = glob([
"Telegram-iOS/*.png",
]),
visibility = ["PUBLIC"],
)
apple_resource(
name = "LaunchScreen",
files = [
"Telegram-iOS/Base.lproj/LaunchScreen.xib",
],
app_icon = 'AppIconLLC',
visibility = ["PUBLIC"],
)
apple_library(
name = 'BuildConfig',
srcs = glob([
'Telegram-iOS/BuildConfig.m',
]),
headers = [
'Telegram-iOS/BuildConfig.h',
name = "AppLibrary",
visibility = [
"//:",
"//...",
],
compiler_flags = [
'-w',
'-DAPP_CONFIG_IS_INTERNAL_BUILD=false',
'-DAPP_CONFIG_IS_APPSTORE_BUILD=true',
'-DAPP_CONFIG_APPSTORE_ID=686449807',
'-DAPP_SPECIFIC_URL_SCHEME=\"tgapp\"',
'-DAPP_CONFIG_API_ID=8',
'-DAPP_CONFIG_API_HASH=\"7245de8e747a0d6fbe11f7cc14fcc0bb\"',
'-DAPP_CONFIG_HOCKEYAPP_ID=\"ad8831329ffc8f8aff9a2b0b86558b24\"',
configs = library_configs(),
swift_version = native.read_config("swift", "version"),
srcs = [
"Telegram-iOS/main.m",
"Telegram-iOS/Application.swift"
],
header_namespace = 'BuildConfig',
exported_headers = [
'Telegram-iOS/BuildConfig.h',
],
modular = True,
visibility = ['PUBLIC'],
deps = [
'//submodules/MtProtoKit:MtProtoKit',
],
)
apple_library(
name = 'AppBinaryPrivate',
srcs = glob([
'Telegram-iOS/TGBridgeServer.m',
'Telegram-iOS/TGAutoDownloadPreferences.m',
'Telegram-iOS/TGPresentationAutoNightPreferences.m',
'Telegram-iOS/TGProxyItem.m',
'Telegram-iOS/UIImage+ImageEffects.m',
]),
headers = [
],
header_namespace = 'AppBinaryPrivate',
exported_headers = [
'Telegram-iOS/TGBridgeServer.h',
'Telegram-iOS/TGAutoDownloadPreferences.h',
'Telegram-iOS/TGPresentationAutoNightPreferences.h',
'Telegram-iOS/TGProxyItem.h',
'Telegram-iOS/UIImage+ImageEffects.h',
],
modular = True,
visibility = ['PUBLIC'],
deps = [
'//submodules/SSignalKit:SSignalKit',
'//Watch:WatchUtils',
'//submodules/LegacyComponents:LegacyComponents',
],
]
+ framework_binary_dependencies(framework_dependencies),
)
apple_binary(
name = 'AppBinary',
configs = configs_with_config(config_with_updated_linker_flags(APP_CONFIGS, ALL_LOAD_LINKER_FLAG)),
#srcs = glob([
# 'Telegram-iOS/*.swift',
#]) + [
# 'Telegram-iOS/main.m',
#],
srcs = ['Telegram-iOS/TempMain.m'],
entitlements_file = 'Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements',
deps = [
':LaunchScreenXib',
':StringResources',
':InfoPlistStringResources',
':AppIntentVocabularyStringResources',
':Images',
#'//submodules/AsyncDisplayKit:AsyncDisplayKit',
#'//submodules/MtProtoKit:MtProtoKit',
#'//submodules/SSignalKit:SwiftSignalKit',
#'//submodules/SSignalKit:SSignalKit',
#'//submodules/Display:Display',
#'//submodules/Postbox:Postbox',
#'//submodules/TelegramCore:TelegramCore',
#'//submodules/LegacyComponents:LegacyComponents',
#'//submodules/HockeySDK-iOS:HockeySDK',
#'//submodules/lottie-ios:Lottie',
'//submodules/libtgvoip:tgvoip',
#'//submodules/webp:WebPImage',
#'//submodules/ffmpeg:FFMpeg',
#'//submodules/TelegramUI:TelegramUI',
'//submodules/TelegramUI:TelegramUIFramework',
#'//Watch:WatchUtils',
':BuildConfig',
':AppBinaryPrivate',
name = "AppBinary",
visibility = [
"//:",
"//...",
],
configs = app_binary_configs(),
swift_version = native.read_config("swift", "version"),
srcs = [
"SupportFiles/Empty.swift",
],
deps = [
":AppLibrary",
]
+ resource_dependencies,
)
apple_bundle(
name = "Telegram",
visibility = [
"//:",
],
extension = "app",
binary = ":AppBinary",
product_name = "Telegram",
info_plist = "Telegram-iOS/Info.plist",
info_plist_substitutions = app_info_plist_substitutions(),
deps = [
":ShareExtension",
":WidgetExtension",
":NotificationContentExtension",
":NotificationServiceExtension",
":IntentsExtension",
":WatchApp#watch",
]
+ framework_bundle_dependencies(framework_dependencies),
)
# Share Extension
apple_binary(
name = "ShareBinary",
srcs = glob([
"Share/**/*.swift",
]),
configs = share_extension_configs(),
linker_flags = [
"-e",
"_NSExtensionMain",
"-Xlinker",
"-rpath",
"-Xlinker",
"/usr/lib/swift",
"-Xlinker",
"-rpath",
"-Xlinker",
"@executable_path/../../Frameworks",
],
deps = [
"//submodules/TelegramUI:TelegramUI#shared",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/UIKit.framework",
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
],
)
apple_bundle(
name = "ShareExtension",
binary = ":ShareBinary",
extension = "appex",
info_plist = "Share/Info.plist",
info_plist_substitutions = share_extension_info_plist_substitutions(),
deps = [
],
xcode_product_type = "com.apple.product-type.app-extension",
)
# Widget
apple_binary(
name = "WidgetBinary",
srcs = glob([
"Widget/**/*.swift",
]),
configs = widget_extension_configs(),
swift_compiler_flags = [
"-application-extension",
],
linker_flags = [
"-e",
"_NSExtensionMain",
"-Xlinker",
"-rpath",
"-Xlinker",
"/usr/lib/swift",
"-Xlinker",
"-rpath",
"-Xlinker",
"@executable_path/../../Frameworks",
],
deps = [
"//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared",
"//submodules/TelegramCore:TelegramCore#shared",
"//submodules/Postbox:Postbox#shared",
"//submodules/BuildConfig:BuildConfig",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/UIKit.framework",
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
"$SDKROOT/System/Library/Frameworks/NotificationCenter.framework",
],
)
apple_bundle(
name = "WidgetExtension",
binary = ":WidgetBinary",
extension = "appex",
info_plist = "Widget/Info.plist",
info_plist_substitutions = widget_extension_info_plist_substitutions(),
deps = [
],
xcode_product_type = "com.apple.product-type.app-extension",
)
# Notification Content
apple_binary(
name = "NotificationContentBinary",
srcs = glob([
"NotificationContent/**/*.swift",
]),
configs = notification_content_extension_configs(),
swift_compiler_flags = [
"-application-extension",
],
linker_flags = [
"-e",
"_NSExtensionMain",
"-Xlinker",
"-rpath",
"-Xlinker",
"/usr/lib/swift",
"-Xlinker",
"-rpath",
"-Xlinker",
"@executable_path/../../Frameworks",
],
deps = [
"//submodules/TelegramUI:TelegramUI#shared",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/UIKit.framework",
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
"$SDKROOT/System/Library/Frameworks/UserNotificationsUI.framework",
],
)
apple_bundle(
name = "NotificationContentExtension",
binary = ":NotificationContentBinary",
extension = "appex",
info_plist = "NotificationContent/Info.plist",
info_plist_substitutions = notification_content_extension_info_plist_substitutions(),
deps = [
],
xcode_product_type = "com.apple.product-type.app-extension",
)
#Notification Service
apple_binary(
name = "NotificationServiceBinary",
srcs = glob([
"NotificationService/**/*.m",
]),
headers = glob([
"NotificationService/**/*.h",
]),
configs = notification_service_extension_configs(),
swift_compiler_flags = [
"-application-extension",
],
linker_flags = [
"-e",
"_NSExtensionMain",
"-Xlinker",
"-rpath",
"-Xlinker",
"/usr/lib/swift",
"-Xlinker",
"-rpath",
"-Xlinker",
"@executable_path/../../Frameworks",
],
deps = [
"//submodules/BuildConfig:BuildConfig",
"//submodules/MtProtoKit:MtProtoKit#shared",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
"$SDKROOT/System/Library/Frameworks/UserNotifications.framework",
],
)
apple_bundle(
name = "NotificationServiceExtension",
binary = ":NotificationServiceBinary",
extension = "appex",
info_plist = "NotificationService/Info.plist",
info_plist_substitutions = notification_service_extension_info_plist_substitutions(),
deps = [
],
xcode_product_type = "com.apple.product-type.app-extension",
)
# Intents
apple_binary(
name = "IntentsBinary",
srcs = glob([
"SiriIntents/**/*.swift",
]),
configs = intents_extension_configs(),
swift_compiler_flags = [
"-application-extension",
],
linker_flags = [
"-e",
"_NSExtensionMain",
"-Xlinker",
"-rpath",
"-Xlinker",
"/usr/lib/swift",
"-Xlinker",
"-rpath",
"-Xlinker",
"@executable_path/../../Frameworks",
],
deps = [
"//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared",
"//submodules/Postbox:Postbox#shared",
"//submodules/TelegramCore:TelegramCore#shared",
"//submodules/BuildConfig:BuildConfig",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/UIKit.framework",
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
],
)
apple_bundle(
name = "IntentsExtension",
binary = ":IntentsBinary",
extension = "appex",
info_plist = "SiriIntents/Info.plist",
info_plist_substitutions = intents_extension_info_plist_substitutions(),
deps = [
],
xcode_product_type = "com.apple.product-type.app-extension",
)
# Watch
apple_binary(
name = "WatchAppExtensionBinary",
srcs = glob([
"Watch/Extension/**/*.m",
"Watch/SSignalKit/**/*.m",
"Watch/Bridge/**/*.m",
"Watch/WatchCommonWatch/**/*.m",
]),
headers = merge_maps([
glob_map(glob([
"Watch/Extension/*.h",
"Watch/Bridge/*.h",
])),
glob_sub_map("Watch/Extension/", glob([
"Watch/Extension/SSignalKit/*.h",
])),
glob_sub_map("Watch/", glob([
"Watch/WatchCommonWatch/*.h",
])),
]),
compiler_flags = [
"-DTARGET_OS_WATCH=1",
],
configs = watch_extension_binary_configs(),
frameworks = [
"$SDKROOT/System/Library/Frameworks/UserNotifications.framework",
"$SDKROOT/System/Library/Frameworks/CoreLocation.framework",
"$SDKROOT/System/Library/Frameworks/CoreGraphics.framework",
],
)
apple_bundle(
name = "WatchAppExtension",
binary = ":WatchAppExtensionBinary",
extension = "appex",
info_plist = "Watch/Extension/Info.plist",
info_plist_substitutions = watch_extension_info_plist_substitutions(),
xcode_product_type = "com.apple.product-type.watchkit2-extension",
)
apple_resource(
name = "WatchAppResources",
dirs = [],
files = glob(["Watch/Extension/Resources/*.png"])
)
apple_asset_catalog(
name = "WatchAppAssets",
dirs = [
"Watch/App/Assets.xcassets",
],
app_icon = "AppIcon",
visibility = ["PUBLIC"],
)
apple_resource(
name = "WatchAppInterface",
files = [
"Watch/App/Base.lproj/Interface.storyboard",
],
visibility = ["PUBLIC"],
)
apple_resource(
name = "WatchAppStringResources",
files = [],
variants = glob([
"Telegram-iOS/*.lproj/Localizable.strings",
]),
visibility = ["PUBLIC"],
)
apple_binary(
name = "WatchAppBinary",
configs = watch_binary_configs(),
deps = [
":WatchAppResources",
":WatchAppAssets",
":WatchAppInterface",
":WatchAppStringResources",
],
)
apple_bundle(
name = "WatchApp",
binary = ":WatchAppBinary",
visibility = [
"//:",
],
extension = "app",
info_plist = "Watch/App/Info.plist",
info_plist_substitutions = watch_info_plist_substitutions(),
xcode_product_type = "com.apple.product-type.application.watchapp2",
deps = [
":WatchAppExtension",
],
)
# Package
apple_package(
name = "AppPackage",
bundle = ":Telegram",
)
xcode_workspace_config(
name = "workspace",
workspace_name = "Telegram",
src_target = ":AppBinary",
)
apple_bundle(
name = 'AppBundle',
extension = 'app',
binary = ':AppBinary',
product_name = 'Telegram',
info_plist = 'Telegram-iOS/Info.plist',
info_plist_substitutions = {
'DEVELOPMENT_LANGUAGE': 'en-us',
'APP_NAME': 'Telegram',
'EXECUTABLE_NAME': 'Telegram',
'PRODUCT_BUNDLE_IDENTIFIER': 'ph.telegra.Telegraph',
'PRODUCT_NAME': 'Telegram',
'APP_SPECIFIC_URL_SCHEME': 'tgapp',
'VERSION': '5.8',
'BUILD_NUMBER': BUILD_NUMBER,
},
)
apple_package(
name = 'AppPackage',
bundle = ':AppBundle',
)
workspace_name = "Telegram_Buck",
src_target = ":Telegram",
)

10
Config/BUCK Normal file
View File

@ -0,0 +1,10 @@
# This file can be depended upon for any apple_test_lib rules.
genrule(
name = "test_info_plist",
visibility = ["PUBLIC"],
srcs = [
"BuckSupportFiles/TestInfo.plist",
],
out = 'TestInfo.plist',
cmd = 'cp $SRCDIR/BuckSupportFiles/TestInfo.plist $OUT',
)

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>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View File

@ -0,0 +1,20 @@
def appConfig():
apiId = native.read_config("custom", "apiId")
apiHash = native.read_config("custom", "apiHash")
hockeyAppId = native.read_config("custom", "hockeyAppId")
isInternalBuild = native.read_config("custom", "isInternalBuild")
isAppStoreBuild = native.read_config("custom", "isAppStoreBuild")
appStoreId = native.read_config("custom", "appStoreId")
appSpecificUrlScheme = native.read_config("custom", "appSpecificUrlScheme")
buildNumber = native.read_config("custom", "buildNumber")
return {
"apiId": apiId,
"apiHash": apiHash,
"hockeyAppId": hockeyAppId,
"isInternalBuild": isInternalBuild,
"isAppStoreBuild": isAppStoreBuild,
"appStoreId": appStoreId,
"appSpecificUrlScheme": appSpecificUrlScheme,
"buildNumber": buildNumber,
}

282
Config/buck_rule_macros.bzl Normal file
View File

@ -0,0 +1,282 @@
load("//Config:configs.bzl", "library_configs", "dynamic_library_configs", "info_plist_substitutions")
def apple_lib(
name,
visibility = ["PUBLIC"],
srcs = [],
headers = [],
exported_headers = [],
extra_xcode_files = [],
deps = [],
exported_deps = [],
additional_linker_flags = None,
frameworks = [],
swift_version = None,
modular = True,
compiler_flags = None,
platform_compiler_flags = None,
swift_compiler_flags = None,
warning_as_error = False,
suppress_warnings = False,
has_cpp = False,
framework = False):
swift_version = swift_version or native.read_config('swift', 'version')
swift_compiler_flags = swift_compiler_flags or []
if native.read_config("xcode", "beta") == "True":
warning_as_error = False
if platform_compiler_flags != None:
if compiler_flags != None:
fail("compiler_flags and platform_compiler_flags are mutually exclusive")
compiler_flags = []
for i in range(len(platform_compiler_flags)):
if warning_as_error:
platform_compiler_flags[i][1].append("-Werror")
elif suppress_warnings:
platform_compiler_flags[i][1].append("-w")
else:
compiler_flags = compiler_flags or []
if warning_as_error:
compiler_flags.append("-Werror")
elif suppress_warnings:
compiler_flags.append("-w")
if warning_as_error:
swift_compiler_flags.append("-warnings-as-errors")
elif suppress_warnings:
swift_compiler_flags.append("-suppress-warnings")
if framework:
additional_linker_flags = additional_linker_flags or []
if has_cpp:
linker_flags = [
"-lc++",
"-lz"
]
else:
linker_flags = []
if native.read_config("custom", "mode") == "project":
resolved_linker_flags = linker_flags + additional_linker_flags + ["-Wl,-install_name,@rpath/lib%s.dylib" % (name)]
else:
resolved_linker_flags = linker_flags + additional_linker_flags + ["-Wl,-install_name,@rpath/%s.framework/%s" % (name, name)]
native.apple_library(
name = name + "",
srcs = srcs,
header_namespace = name,
module_name = name,
soname = "lib" + name + ".dylib",
headers = headers,
exported_headers = exported_headers,
deps = deps,
exported_deps = exported_deps,
extra_xcode_files = extra_xcode_files,
frameworks = frameworks,
visibility = visibility,
swift_version = swift_version,
configs = dynamic_library_configs(),
modular = modular,
compiler_flags = compiler_flags,
platform_compiler_flags = platform_compiler_flags,
swift_compiler_flags = swift_compiler_flags,
preferred_linkage = "shared",
#link_style = "static",
linker_flags = resolved_linker_flags,
)
else:
additional_linker_flags = additional_linker_flags or []
if has_cpp:
linker_flags = [
"-lc++",
"-lz"
]
else:
linker_flags = []
resolved_exported_linker_flags = linker_flags + additional_linker_flags
native.apple_library(
name = name,
srcs = srcs,
headers = headers,
exported_headers = exported_headers,
deps = deps,
exported_deps = exported_deps,
exported_linker_flags = resolved_exported_linker_flags,
extra_xcode_files = extra_xcode_files,
frameworks = frameworks,
visibility = visibility,
swift_version = swift_version,
configs = library_configs(),
modular = modular,
compiler_flags = compiler_flags,
platform_compiler_flags = platform_compiler_flags,
swift_compiler_flags = swift_compiler_flags,
preferred_linkage = "static",
)
def static_library(
name,
visibility = ["PUBLIC"],
has_cpp = False,
srcs = [],
headers = [],
exported_headers = [],
extra_xcode_files = [],
deps = [],
additional_linker_flags = None,
frameworks = [],
info_plist = None,
info_plist_substitutions = {},
modular = True,
compiler_flags = None,
platform_compiler_flags = None,
swift_compiler_flags = None,
warning_as_error = False,
suppress_warnings = True):
apple_lib(
name = name,
srcs = srcs,
has_cpp = has_cpp,
exported_headers = exported_headers,
headers = headers,
modular = modular,
compiler_flags = compiler_flags,
platform_compiler_flags = platform_compiler_flags,
swift_compiler_flags = swift_compiler_flags,
extra_xcode_files = extra_xcode_files,
deps = deps,
additional_linker_flags = additional_linker_flags,
frameworks = frameworks,
warning_as_error = warning_as_error,
suppress_warnings = suppress_warnings
)
def framework(
name,
visibility = ["PUBLIC"],
has_cpp = False,
srcs = [],
headers = [],
exported_headers = [],
extra_xcode_files = [],
deps = [],
exported_deps = [],
additional_linker_flags = None,
frameworks = [],
info_plist = None,
info_plist_substitutions = {},
modular = True,
compiler_flags = None,
platform_compiler_flags = None,
swift_compiler_flags = None,
warning_as_error = False,
suppress_warnings = True):
apple_lib(
name = name,
srcs = srcs,
has_cpp = has_cpp,
exported_headers = exported_headers,
headers = headers,
modular = modular,
compiler_flags = compiler_flags,
platform_compiler_flags = platform_compiler_flags,
swift_compiler_flags = swift_compiler_flags,
extra_xcode_files = extra_xcode_files,
deps = deps,
exported_deps = exported_deps,
additional_linker_flags = additional_linker_flags,
frameworks = frameworks,
warning_as_error = warning_as_error,
suppress_warnings = suppress_warnings,
framework = True
)
CXX_SRC_EXT = ["mm", "cpp", "S"]
def apple_cxx_lib(
srcs = [],
additional_exported_linker_flags = [],
**kwargs):
c_srcs, cxx_srcs = [], []
cxx_compile_flags = native.read_config("cxx", "cxxflags").split(" ")
cxx_compile_flags.append("-w")
for file_ in srcs:
if file_.split(".")[-1] in CXX_SRC_EXT:
cxx_srcs.append((file_, cxx_compile_flags))
else:
c_srcs.append(file_)
apple_lib(
srcs = c_srcs + cxx_srcs,
exported_linker_flags = [
"-lc++",
"-lz"
] + additional_exported_linker_flags,
**kwargs
)
def framework_binary_dependencies(names):
result = []
for name in names:
result.append(name + "#shared")
return result
def framework_bundle_dependencies(names):
result = []
if native.read_config("custom", "mode") == "project":
for name in names:
pass
else:
for name in names:
result.append(name + "#shared")
return result
def gen_header_targets(header_paths, prefix, flavor, source_rule, source_path):
result = dict()
for header_path in header_paths:
name = prefix + header_path.replace('/', '_sub_')
native.genrule(
name = name + flavor,
cmd = 'cp $(location :' + source_rule + ')/' + source_path + '/' + header_path + ' $OUT',
out = name,
)
result[header_path] = ':' + name + flavor
return result
def merge_maps(dicts):
result = dict()
for d in dicts:
for key in d:
if key in result and result[key] != d[key]:
fail(
"Conflicting files in file search paths. " +
"\"%s\" maps to both \"%s\" and \"%s\"." %
(key, result[key], d[key]),
)
result.update(d)
return result
def basename(p):
return p.rpartition("/")[-1]
def glob_map(glob_results):
result = dict()
for path in glob_results:
file_name = basename(path)
if file_name in result:
fail('\"%s\" maps to both \"%s\" and \"%s\"' % (file_name, result[file_name], path))
result[file_name] = path
return result
def glob_sub_map(prefix, glob_specs):
result = dict()
for path in native.glob(glob_specs):
if not path.startswith(prefix):
fail('\"%s\" does not start with \"%s\"' % (path, prefix))
file_key = path[len(prefix):]
if file_key in result:
fail('\"%s\" maps to both \"%s\" and \"%s\"' % (file_key, result[file_key], path))
result[file_key] = path
return result

457
Config/configs.bzl Normal file
View File

@ -0,0 +1,457 @@
load("//Config:utils.bzl", "config_with_updated_linker_flags", "configs_with_config")
load("//Config:app_configuration.bzl", "appConfig")
DEVELOPMENT_LANGUAGE = "en"
def merge_dict(a, b):
d = {}
d.update(a)
d.update(b)
return d
def pretty(dict, current = ""):
current = "\n"
indent = 0
for key, value in dict.items():
current = current + str(key) + ": "
if type(value) == type({}):
current = current + "\n"
indent = 1
for key2, value2 in value.items():
current = current + "\t" * indent + str(key2)
current = current + ": " + str(value2) + "\n"
else:
current = current + "\t" * (indent + 1) + str(value) + "\n"
return current
SHARED_CONFIGS = {
"IPHONEOS_DEPLOYMENT_TARGET": "8.0",
"SDKROOT": "iphoneos",
"GCC_OPTIMIZATION_LEVEL": "0",
"SWIFT_WHOLE_MODULE_OPTIMIZATION": "NO",
"ONLY_ACTIVE_ARCH": "YES",
"LD_RUNPATH_SEARCH_PATHS": "@executable_path/Frameworks",
"ENABLE_BITCODE": "NO",
}
def optimization_config():
return {
"SWIFT_OPTIMIZATION_LEVEL": native.read_config("custom", "optimization"),
}
# Adding `-all_load` to our binaries works around https://bugs.swift.org/browse/SR-6004.
ALL_LOAD_LINKER_FLAG = "-all_load"
def read_config_nonempty(name):
value = native.read_config("custom", name)
if value == None:
fail("Configuration paramter custom.%s should be defined" % name)
elif len(value) == 0:
fail("Configuration paramter custom.%s should not be empty" % name)
else:
return value
def get_codesign_identity(environment):
if environment == "development":
return read_config_nonempty("developmentCodeSignIdentity")
elif environment == "distribution":
return read_config_nonempty("distributionCodeSignIdentity")
else:
fail("Unknown environment " + environment)
def get_provisioning_profile(environment, type):
if type == "app":
return read_config_nonempty(environment + "ProvisioningProfileApp")
elif type == "share":
return read_config_nonempty(environment + "ProvisioningProfileExtensionShare")
elif type == "widget":
return read_config_nonempty(environment + "ProvisioningProfileExtensionWidget")
elif type == "notification_service":
return read_config_nonempty(environment + "ProvisioningProfileExtensionNotificationService")
elif type == "notification_content":
return read_config_nonempty(environment + "ProvisioningProfileExtensionNotificationContent")
elif type == "intents":
return read_config_nonempty(environment + "ProvisioningProfileExtensionIntents")
elif type == "watch_app":
return read_config_nonempty(environment + "ProvisioningProfileWatchApp")
elif type == "watch_extension":
return read_config_nonempty(environment + "ProvisioningProfileWatchExtension")
else:
fail("Unknown provisioning profile type " + type)
def get_development_team():
return read_config_nonempty("developmentTeam")
def add_item_to_subdict(superdict, key, subkey, item):
subdict = dict(superdict[key])
subdict[subkey] = item
superdict[key] = subdict
valid_configurations = ["Debug", "Profile", "Release"]
def add_provisioning_profile_specifier(configs, type):
for configuration in configs:
if configuration not in valid_configurations:
fail("Unknown configuration " + configuration)
configs = dict(configs)
for configuration in valid_configurations:
if configuration == "Debug":
add_item_to_subdict(configs, configuration, "PROVISIONING_PROFILE_SPECIFIER", get_provisioning_profile(environment="development", type=type))
elif configuration == "Profile":
add_item_to_subdict(configs, configuration, "PROVISIONING_PROFILE_SPECIFIER", get_provisioning_profile(environment="development", type=type))
elif configuration == "Release":
add_item_to_subdict(configs, configuration, "PROVISIONING_PROFILE_SPECIFIER", get_provisioning_profile(environment="distribution", type=type))
return configs
def add_codesign_identity(configs):
for configuration in configs:
if configuration not in valid_configurations:
fail("Unknown configuration " + configuration)
configs = dict(configs)
for configuration in valid_configurations:
if configuration == "Debug":
add_item_to_subdict(configs, configuration, "CODE_SIGN_IDENTITY", get_codesign_identity(environment="development"))
elif configuration == "Profile":
add_item_to_subdict(configs, configuration, "CODE_SIGN_IDENTITY", get_codesign_identity(environment="development"))
elif configuration == "Release":
add_item_to_subdict(configs, configuration, "CODE_SIGN_IDENTITY", get_codesign_identity(environment="distribution"))
return configs
def get_codesign_entitlements(type):
if type == "app":
return read_config_nonempty("entitlementsApp")
elif type == "share":
return read_config_nonempty("entitlementsExtensionShare")
elif type == "widget":
return read_config_nonempty("entitlementsExtensionWidget")
elif type == "notification_service":
return read_config_nonempty("entitlementsExtensionNotificationService")
elif type == "notification_content":
return read_config_nonempty("entitlementsExtensionNotificationContent")
elif type == "intents":
return read_config_nonempty("entitlementsExtensionIntents")
else:
fail("unknown provisioning profile type")
def get_build_number():
return read_config_nonempty("buildNumber")
def bundle_identifier(suffix):
return read_config_nonempty("baseApplicationBundleId") + suffix
def library_configs():
lib_specific_config = {
"SWIFT_WHOLE_MODULE_OPTIMIZATION": "NO",
# Setting SKIP_INSTALL to NO for static library configs would create
# create a generic xcode archive which can not be uploaded the app store
# https://developer.apple.com/library/archive/technotes/tn2215/_index.html
"SKIP_INSTALL": "YES",
}
library_config = merge_dict(SHARED_CONFIGS, lib_specific_config)
library_config = merge_dict(library_config, optimization_config())
configs = {
"Debug": library_config,
"Profile": library_config,
"Release": library_config,
}
return configs
def dynamic_library_configs():
lib_specific_config = {
"SWIFT_WHOLE_MODULE_OPTIMIZATION": "NO",
# Setting SKIP_INSTALL to NO for static library configs would create
# create a generic xcode archive which can not be uploaded the app store
# https://developer.apple.com/library/archive/technotes/tn2215/_index.html
"SKIP_INSTALL": "YES",
"MACH_O_TYPE": "mh_dylib",
"CODE_SIGNING_ALLOWED": "NO",
}
library_config = merge_dict(SHARED_CONFIGS, lib_specific_config)
library_config = merge_dict(library_config, optimization_config())
#library_config = config_with_updated_linker_flags(library_config, ALL_LOAD_LINKER_FLAG)
configs = {
"Debug": library_config,
"Profile": library_config,
"Release": library_config,
}
return configs
def app_binary_configs():
config = {
"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES": "YES",
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=""),
"CODE_SIGN_ENTITLEMENTS": get_codesign_entitlements("app"),
"DEVELOPMENT_TEAM": get_development_team(),
"ASSETCATALOG_COMPILER_APPICON_NAME": "AppIcon",
"BUILD_NUMBER": get_build_number(),
"APP_NAME": "Telegram",
"PRODUCT_NAME": "Telegram",
"TARGETED_DEVICE_FAMILY": "1,2",
}
config = merge_dict(SHARED_CONFIGS, config)
config = merge_dict(config, optimization_config())
config = config_with_updated_linker_flags(config, ALL_LOAD_LINKER_FLAG)
configs = configs_with_config(config)
configs = add_provisioning_profile_specifier(configs, "app")
configs = add_codesign_identity(configs)
return configs
def share_extension_configs():
config = {
"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES": "NO",
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".Share"),
"CODE_SIGN_ENTITLEMENTS": get_codesign_entitlements("share"),
"DEVELOPMENT_TEAM": get_development_team(),
"BUILD_NUMBER": get_build_number(),
"APP_NAME": "Telegram",
"PRODUCT_NAME": "ShareExtension",
}
config = merge_dict(SHARED_CONFIGS, config)
config = merge_dict(config, optimization_config())
config = config_with_updated_linker_flags(config, ALL_LOAD_LINKER_FLAG)
configs = configs_with_config(config)
configs = add_provisioning_profile_specifier(configs, "share")
configs = add_codesign_identity(configs)
return configs
def widget_extension_configs():
config = {
"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES": "NO",
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".Widget"),
"CODE_SIGN_ENTITLEMENTS": get_codesign_entitlements("widget"),
"DEVELOPMENT_TEAM": get_development_team(),
"BUILD_NUMBER": get_build_number(),
"APP_NAME": "Telegram",
"PRODUCT_NAME": "WidgetExtension",
}
config = merge_dict(SHARED_CONFIGS, config)
config = merge_dict(config, optimization_config())
config = config_with_updated_linker_flags(config, ALL_LOAD_LINKER_FLAG)
configs = configs_with_config(config)
configs = add_provisioning_profile_specifier(configs, "widget")
configs = add_codesign_identity(configs)
return configs
def notification_content_extension_configs():
config = {
"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES": "NO",
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".NotificationContent"),
"CODE_SIGN_ENTITLEMENTS": get_codesign_entitlements("notification_content"),
"DEVELOPMENT_TEAM": get_development_team(),
"BUILD_NUMBER": get_build_number(),
"APP_NAME": "Telegram",
"PRODUCT_NAME": "NotificationContentExtension",
}
config = merge_dict(SHARED_CONFIGS, config)
config = merge_dict(config, optimization_config())
config = config_with_updated_linker_flags(config, ALL_LOAD_LINKER_FLAG)
configs = configs_with_config(config)
configs = add_provisioning_profile_specifier(configs, "notification_content")
configs = add_codesign_identity(configs)
return configs
def notification_service_extension_configs():
config = {
"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES": "NO",
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".NotificationService"),
"CODE_SIGN_ENTITLEMENTS": get_codesign_entitlements("notification_service"),
"DEVELOPMENT_TEAM": get_development_team(),
"BUILD_NUMBER": get_build_number(),
"APP_NAME": "Telegram",
"PRODUCT_NAME": "NotificationServiceExtension",
}
config = merge_dict(SHARED_CONFIGS, config)
config = merge_dict(config, optimization_config())
config = config_with_updated_linker_flags(config, ALL_LOAD_LINKER_FLAG)
configs = configs_with_config(config)
configs = add_provisioning_profile_specifier(configs, "notification_service")
configs = add_codesign_identity(configs)
return configs
def intents_extension_configs():
config = {
"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES": "NO",
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".SiriIntents"),
"CODE_SIGN_ENTITLEMENTS": get_codesign_entitlements("intents"),
"DEVELOPMENT_TEAM": get_development_team(),
"BUILD_NUMBER": get_build_number(),
"APP_NAME": "Telegram",
"PRODUCT_NAME": "IntentsExtension",
}
config = merge_dict(SHARED_CONFIGS, config)
config = merge_dict(config, optimization_config())
config = config_with_updated_linker_flags(config, ALL_LOAD_LINKER_FLAG)
configs = configs_with_config(config)
configs = add_provisioning_profile_specifier(configs, "intents")
configs = add_codesign_identity(configs)
return configs
def watch_extension_binary_configs():
config = {
"SDKROOT": "watchos",
"WATCHOS_DEPLOYMENT_TARGET": "4.0",
"TARGETED_DEVICE_FAMILY": "4",
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".watchkitapp.watchkitextension"),
"DEVELOPMENT_TEAM": get_development_team(),
"LD_RUNPATH_SEARCH_PATHS": "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks",
"WK_COMPANION_APP_BUNDLE_IDENTIFIER": bundle_identifier(suffix=""),
"WK_APP_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".watchkitapp"),
"APP_NAME": "Telegram",
"APP_BUNDLE_ID": bundle_identifier(suffix=""),
"BUILD_NUMBER": get_build_number(),
"ENABLE_BITCODE": "YES",
}
config = config_with_updated_linker_flags(config, ALL_LOAD_LINKER_FLAG)
configs = configs_with_config(config)
configs = add_provisioning_profile_specifier(configs, "watch_extension")
configs = add_codesign_identity(configs)
return configs
def watch_binary_configs():
config = {
"SDKROOT": "watchos",
"WATCHOS_DEPLOYMENT_TARGET": "4.0",
"TARGETED_DEVICE_FAMILY": "4",
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".watchkitapp"),
"DEVELOPMENT_TEAM": get_development_team(),
"LD_RUNPATH_SEARCH_PATHS": "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks",
"WK_COMPANION_APP_BUNDLE_IDENTIFIER": bundle_identifier(suffix=""),
"WK_APP_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".watchkitapp"),
"APP_NAME": "Telegram",
"APP_BUNDLE_ID": bundle_identifier(suffix=""),
"ASSETCATALOG_COMPILER_APPICON_NAME": "AppIcon",
"BUILD_NUMBER": get_build_number(),
"ENABLE_BITCODE": "YES",
}
config = config_with_updated_linker_flags(config, ALL_LOAD_LINKER_FLAG)
configs = configs_with_config(config)
configs = add_provisioning_profile_specifier(configs, "watch_app")
configs = add_codesign_identity(configs)
return configs
def info_plist_substitutions(name):
substitutions = {
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"EXECUTABLE_NAME": name,
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(name),
"PRODUCT_NAME": name,
"CURRENT_PROJECT_VERSION": "1",
}
return substitutions
def app_info_plist_substitutions():
substitutions = {
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"EXECUTABLE_NAME": "Telegram",
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=""),
"PRODUCT_NAME": "Telegram",
"APP_NAME": "Telegram",
"CURRENT_PROJECT_VERSION": "1",
"APP_SPECIFIC_URL_SCHEME": appConfig()["appSpecificUrlScheme"],
"BUILD_NUMBER": get_build_number(),
"ASSETCATALOG_COMPILER_APPICON_NAME": "AppIcon",
"TARGETED_DEVICE_FAMILY": "1,2",
}
return substitutions
def share_extension_info_plist_substitutions():
substitutions = {
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"EXECUTABLE_NAME": "ShareExtension",
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".Share"),
"PRODUCT_NAME": "Share",
"APP_NAME": "Telegram",
"CURRENT_PROJECT_VERSION": "1",
"APP_SPECIFIC_URL_SCHEME": appConfig()["appSpecificUrlScheme"],
"BUILD_NUMBER": get_build_number(),
}
return substitutions
def widget_extension_info_plist_substitutions():
substitutions = {
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"EXECUTABLE_NAME": "WidgetExtension",
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".Widget"),
"PRODUCT_NAME": "Widget",
"APP_NAME": "Telegram",
"CURRENT_PROJECT_VERSION": "1",
"APP_SPECIFIC_URL_SCHEME": appConfig()["appSpecificUrlScheme"],
"BUILD_NUMBER": get_build_number(),
}
return substitutions
def notification_content_extension_info_plist_substitutions():
substitutions = {
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"EXECUTABLE_NAME": "NotificationContentExtension",
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".NotificationContent"),
"PRODUCT_NAME": "Telegram",
"APP_NAME": "Telegram",
"CURRENT_PROJECT_VERSION": "1",
"BUILD_NUMBER": get_build_number(),
}
return substitutions
def notification_service_extension_info_plist_substitutions():
substitutions = {
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"EXECUTABLE_NAME": "NotificationServiceExtension",
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".NotificationService"),
"PRODUCT_NAME": "Telegram",
"APP_NAME": "Telegram",
"CURRENT_PROJECT_VERSION": "1",
"BUILD_NUMBER": get_build_number(),
}
return substitutions
def intents_extension_info_plist_substitutions():
substitutions = {
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"EXECUTABLE_NAME": "IntentsExtension",
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".SiriIntents"),
"PRODUCT_NAME": "Telegram",
"APP_NAME": "Telegram",
"CURRENT_PROJECT_VERSION": "1",
"APP_SPECIFIC_URL_SCHEME": appConfig()["appSpecificUrlScheme"],
"BUILD_NUMBER": get_build_number(),
"PRODUCT_MODULE_NAME": "SiriIntents",
}
return substitutions
def watch_extension_info_plist_substitutions():
substitutions = {
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"EXECUTABLE_NAME": "WatchAppExtension",
"PRODUCT_BUNDLE_IDENTIFIER": bundle_identifier(suffix=".watchkitapp.watchkitextension"),
"APP_NAME": "Telegram",
"APP_BUNDLE_ID": bundle_identifier(suffix=""),
"PRODUCT_NAME": "Telegram",
"CURRENT_PROJECT_VERSION": "1",
"BUILD_NUMBER": get_build_number(),
}
return substitutions
def watch_info_plist_substitutions():
substitutions = {
"DEVELOPMENT_LANGUAGE": DEVELOPMENT_LANGUAGE,
"EXECUTABLE_NAME": "WatchApp",
"PRODUCT_BUNDLE_IDENTIFIER":bundle_identifier(suffix=".watchkitapp"),
"APP_NAME": "Telegram",
"APP_BUNDLE_ID": bundle_identifier(suffix=""),
"PRODUCT_NAME": "Telegram",
"CURRENT_PROJECT_VERSION": "1",
"BUILD_NUMBER": get_build_number(),
}
return substitutions

35
Config/utils.bzl Normal file
View File

@ -0,0 +1,35 @@
OTHER_LINKER_FLAGS_KEY = 'OTHER_LDFLAGS'
def configs_with_config(config):
return {
"Debug": config,
"Profile": config,
"Release": config,
}
def configs_with_updated_linker_flags(configs, other_linker_flags):
if other_linker_flags == None:
return configs
else:
updated_configs = { }
for build_configuration in configs:
updated_configs[build_configuration] = config_with_updated_linker_flags(
configs[build_configuration],
other_linker_flags)
return updated_configs
def config_with_updated_linker_flags(config, other_linker_flags, config_key=OTHER_LINKER_FLAGS_KEY):
new_config = { }
config_key_found = False
for key in config:
if key == config_key:
new_config[key] = config[key] + (" %s" % other_linker_flags)
config_key_found = True
else:
new_config[key] = config[key]
if config_key_found == False:
# If `config` does not currently contain `config_key`, add it. Inherit for good measure.
new_config[config_key] = '$(inherited) ' + other_linker_flags
return new_config

264
Makefile Normal file
View File

@ -0,0 +1,264 @@
.PHONY : check_env build build_arm64 build_debug_arm64 package package_arm64 app app_arm64 app_debug_arm64 build_buckdebug build_verbose kill_xcode clean project project_buckdebug temp
BUCK_DEBUG_OPTIONS=\
--config custom.other_cflags="-O0 -D DEBUG" \
--config custom.other_cxxflags="-O0 -D DEBUG" \
--config custom.optimization="-Onone" \
--config custom.config_swift_compiler_flags=""
BUCK_RELEASE_OPTIONS=\
--config custom.other_cflags="-Os" \
--config custom.other_cxxflags="-Os" \
--config custom.optimization="-O" \
--config custom.config_swift_compiler_flags="-whole-module-optimization"
BUCK_OPTIONS=\
--config custom.developmentCodeSignIdentity="${DEVELOPMENT_CODE_SIGN_IDENTITY}" \
--config custom.distributionCodeSignIdentity="${DISTRIBUTION_CODE_SIGN_IDENTITY}" \
--config custom.developmentTeam="${DEVELOPMENT_TEAM}" \
--config custom.baseApplicationBundleId="${BUNDLE_ID}" \
--config custom.apiId="${API_ID}" \
--config custom.apiHash="${API_HASH}" \
--config custom.hockeyAppId="${HOCKEYAPP_ID}" \
--config custom.isInternalBuild="${IS_INTERNAL_BUILD}" \
--config custom.isAppStoreBuild="${IS_APPSTORE_BUILD}" \
--config custom.appStoreId="${APPSTORE_ID}" \
--config custom.appSpecificUrlScheme="${APP_SPECIFIC_URL_SCHEME}" \
--config custom.buildNumber="${BUILD_NUMBER}" \
--config custom.entitlementsApp="${ENTITLEMENTS_APP}" \
--config custom.developmentProvisioningProfileApp="${DEVELOPMENT_PROVISIONING_PROFILE_APP}" \
--config custom.distributionProvisioningProfileApp="${DISTRIBUTION_PROVISIONING_PROFILE_APP}" \
--config custom.entitlementsExtensionShare="${ENTITLEMENTS_EXTENSION_SHARE}" \
--config custom.developmentProvisioningProfileExtensionShare="${DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_SHARE}" \
--config custom.distributionProvisioningProfileExtensionShare="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_SHARE}" \
--config custom.entitlementsExtensionWidget="${ENTITLEMENTS_EXTENSION_WIDGET}" \
--config custom.developmentProvisioningProfileExtensionWidget="${DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_WIDGET}" \
--config custom.distributionProvisioningProfileExtensionWidget="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_WIDGET}" \
--config custom.entitlementsExtensionNotificationService="${ENTITLEMENTS_EXTENSION_NOTIFICATIONSERVICE}" \
--config custom.developmentProvisioningProfileExtensionNotificationService="${DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONSERVICE}" \
--config custom.distributionProvisioningProfileExtensionNotificationService="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONSERVICE}" \
--config custom.entitlementsExtensionNotificationContent="${ENTITLEMENTS_EXTENSION_NOTIFICATIONCONTENT}" \
--config custom.developmentProvisioningProfileExtensionNotificationContent="${DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONCONTENT}" \
--config custom.distributionProvisioningProfileExtensionNotificationContent="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONCONTENT}" \
--config custom.entitlementsExtensionIntents="${ENTITLEMENTS_EXTENSION_INTENTS}" \
--config custom.developmentProvisioningProfileExtensionIntents="${DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_INTENTS}" \
--config custom.distributionProvisioningProfileExtensionIntents="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_INTENTS}" \
--config custom.developmentProvisioningProfileWatchApp="${DEVELOPMENT_PROVISIONING_PROFILE_WATCH_APP}" \
--config custom.distributionProvisioningProfileWatchApp="${DISTRIBUTION_PROVISIONING_PROFILE_WATCH_APP}" \
--config custom.developmentProvisioningProfileWatchExtension="${DEVELOPMENT_PROVISIONING_PROFILE_WATCH_EXTENSION}" \
--config custom.distributionProvisioningProfileWatchExtension="${DISTRIBUTION_PROVISIONING_PROFILE_WATCH_EXTENSION}"
BUCK_THREADS_OPTIONS=--config build.threads=$(shell sysctl -n hw.logicalcpu)
BUCK_CACHE_OPTIONS=
ifneq ($(BUCK_HTTP_CACHE),)
ifeq ($(BUCK_CACHE_MODE),)
BUCK_CACHE_MODE=readwrite
endif
BUCK_CACHE_OPTIONS=\
--config cache.mode=http \
--config cache.http_url="$(BUCK_HTTP_CACHE)" \
--config cache.http_mode="$(BUCK_CACHE_MODE)"
endif
check_env:
ifndef BUCK
$(error BUCK is not set)
endif
sh check_env.sh
build_arm64: check_env
$(BUCK) build \
//:AppPackage#iphoneos-arm64 \
//:Telegram#dwarf-and-dsym,iphoneos-arm64 \
//submodules/MtProtoKit:MtProtoKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/MtProtoKit:MtProtoKit#shared,iphoneos-arm64 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#shared,iphoneos-arm64 \
//submodules/Display:Display#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Display:Display#shared,iphoneos-arm64 \
//submodules/TelegramUI:TelegramUI#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramUI:TelegramUI#shared,iphoneos-arm64 \
//:WatchAppExtension#dwarf-and-dsym,watchos-arm64_32,watchos-armv7k \
//:ShareExtension#dwarf-and-dsym,iphoneos-arm64 \
//:WidgetExtension#dwarf-and-dsym,iphoneos-arm64 \
//:NotificationContentExtension#dwarf-and-dsym,iphoneos-arm64 \
//:NotificationServiceExtension#dwarf-and-dsym,iphoneos-arm64 \
//:IntentsExtension#dwarf-and-dsym,iphoneos-arm64 \
${BUCK_OPTIONS} ${BUCK_RELEASE_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_CACHE_OPTIONS}
build_debug_arm64: check_env
$(BUCK) build \
//:AppPackage#iphoneos-arm64 \
//:Telegram#dwarf-and-dsym,iphoneos-arm64 \
//submodules/MtProtoKit:MtProtoKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/MtProtoKit:MtProtoKit#shared,iphoneos-arm64 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#shared,iphoneos-arm64 \
//submodules/Display:Display#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Display:Display#shared,iphoneos-arm64 \
//submodules/TelegramUI:TelegramUI#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramUI:TelegramUI#shared,iphoneos-arm64 \
//:WatchAppExtension#dwarf-and-dsym,watchos-arm64_32,watchos-armv7k \
//:ShareExtension#dwarf-and-dsym,iphoneos-arm64 \
//:WidgetExtension#dwarf-and-dsym,iphoneos-arm64 \
//:NotificationContentExtension#dwarf-and-dsym,iphoneos-arm64 \
//:NotificationServiceExtension#dwarf-and-dsym,iphoneos-arm64 \
//:IntentsExtension#dwarf-and-dsym,iphoneos-arm64 \
${BUCK_OPTIONS} ${BUCK_DEBUG_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_CACHE_OPTIONS}
build: check_env
$(BUCK) build \
//:AppPackage#iphoneos-arm64,iphoneos-armv7 \
//:Telegram#dwarf-and-dsym,iphoneos-arm64,iphoneos-armv7 \
//submodules/MtProtoKit:MtProtoKit#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/MtProtoKit:MtProtoKit#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/Display:Display#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/Display:Display#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/TelegramUI:TelegramUI#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/TelegramUI:TelegramUI#shared,iphoneos-arm64,iphoneos-armv7 \
//:WatchAppExtension#dwarf-and-dsym,watchos-arm64_32,watchos-armv7k \
//:ShareExtension#dwarf-and-dsym,iphoneos-arm64,iphoneos-armv7 \
//:WidgetExtension#dwarf-and-dsym,iphoneos-arm64,iphoneos-armv7 \
//:NotificationContentExtension#dwarf-and-dsym,iphoneos-arm64,iphoneos-armv7 \
//:NotificationServiceExtension#dwarf-and-dsym,iphoneos-arm64,iphoneos-armv7 \
//:IntentsExtension#dwarf-and-dsym,iphoneos-arm64,iphoneos-armv7 \
${BUCK_OPTIONS} ${BUCK_RELEASE_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_CACHE_OPTIONS}
package_arm64:
PACKAGE_DEVELOPMENT_TEAM="${DEVELOPMENT_TEAM}" \
PACKAGE_CODE_SIGN_IDENTITY="${DISTRIBUTION_CODE_SIGN_IDENTITY}" \
PACKAGE_PROVISIONING_PROFILE_APP="${DISTRIBUTION_PROVISIONING_PROFILE_APP}" \
PACKAGE_ENTITLEMENTS_APP="${ENTITLEMENTS_APP}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_Share="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_SHARE}" \
PACKAGE_ENTITLEMENTS_EXTENSION_Share="${ENTITLEMENTS_EXTENSION_SHARE}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_Widget="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_WIDGET}" \
PACKAGE_ENTITLEMENTS_EXTENSION_Widget="${ENTITLEMENTS_EXTENSION_WIDGET}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_NotificationService="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONSERVICE}" \
PACKAGE_ENTITLEMENTS_EXTENSION_NotificationService="${ENTITLEMENTS_EXTENSION_NOTIFICATIONSERVICE}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_NotificationContent="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONCONTENT}" \
PACKAGE_ENTITLEMENTS_EXTENSION_NotificationContent="${ENTITLEMENTS_EXTENSION_NOTIFICATIONCONTENT}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_Intents="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_INTENTS}" \
PACKAGE_ENTITLEMENTS_EXTENSION_Intents="${ENTITLEMENTS_EXTENSION_INTENTS}" \
PACKAGE_PROVISIONING_PROFILE_WATCH_APP="${DISTRIBUTION_PROVISIONING_PROFILE_WATCH_APP}" \
PACKAGE_PROVISIONING_PROFILE_WATCH_EXTENSION="${DISTRIBUTION_PROVISIONING_PROFILE_WATCH_EXTENSION}" \
PACKAGE_BUNDLE_ID="${BUNDLE_ID}" \
sh package_app.sh iphoneos-arm64 $(BUCK) $(BUCK_OPTIONS) ${BUCK_RELEASE_OPTIONS}
package:
PACKAGE_DEVELOPMENT_TEAM="${DEVELOPMENT_TEAM}" \
PACKAGE_CODE_SIGN_IDENTITY="${DISTRIBUTION_CODE_SIGN_IDENTITY}" \
PACKAGE_PROVISIONING_PROFILE_APP="${DISTRIBUTION_PROVISIONING_PROFILE_APP}" \
PACKAGE_ENTITLEMENTS_APP="${ENTITLEMENTS_APP}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_Share="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_SHARE}" \
PACKAGE_ENTITLEMENTS_EXTENSION_Share="${ENTITLEMENTS_EXTENSION_SHARE}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_Widget="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_WIDGET}" \
PACKAGE_ENTITLEMENTS_EXTENSION_Widget="${ENTITLEMENTS_EXTENSION_WIDGET}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_NotificationService="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONSERVICE}" \
PACKAGE_ENTITLEMENTS_EXTENSION_NotificationService="${ENTITLEMENTS_EXTENSION_NOTIFICATIONSERVICE}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_NotificationContent="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONCONTENT}" \
PACKAGE_ENTITLEMENTS_EXTENSION_NotificationContent="${ENTITLEMENTS_EXTENSION_NOTIFICATIONCONTENT}" \
PACKAGE_PROVISIONING_PROFILE_EXTENSION_Intents="${DISTRIBUTION_PROVISIONING_PROFILE_EXTENSION_INTENTS}" \
PACKAGE_ENTITLEMENTS_EXTENSION_Intents="${ENTITLEMENTS_EXTENSION_INTENTS}" \
PACKAGE_PROVISIONING_PROFILE_WATCH_APP="${DISTRIBUTION_PROVISIONING_PROFILE_WATCH_APP}" \
PACKAGE_PROVISIONING_PROFILE_WATCH_EXTENSION="${DISTRIBUTION_PROVISIONING_PROFILE_WATCH_EXTENSION}" \
PACKAGE_BUNDLE_ID="${BUNDLE_ID}" \
sh package_app.sh iphoneos-arm64,iphoneos-armv7 $(BUCK) $(BUCK_OPTIONS) ${BUCK_RELEASE_OPTIONS}
app: build package
app_arm64: build_arm64 package_arm64
app_debug_arm64: build_debug_arm64 package_arm64
build_buckdebug: check_env
BUCK_DEBUG_MODE=1 $(BUCK) build \
//:AppPackage#iphoneos-arm64 \
//:Telegram#dwarf-and-dsym,iphoneos-arm64 \
//submodules/MtProtoKit:MtProtoKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/MtProtoKit:MtProtoKit#shared,iphoneos-arm64 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#shared,iphoneos-arm64 \
//submodules/Display:Display#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Display:Display#shared,iphoneos-arm64 \
//submodules/TelegramUI:TelegramUI#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramUI:TelegramUI#shared,iphoneos-arm64 \
//:WatchAppExtension#dwarf-and-dsym,watchos-arm64_32,watchos-armv7k \
//:ShareExtension#dwarf-and-dsym,iphoneos-arm64 \
//:WidgetExtension#dwarf-and-dsym,iphoneos-arm64 \
//:NotificationContentExtension#dwarf-and-dsym,iphoneos-arm64 \
//:NotificationServiceExtension#dwarf-and-dsym,iphoneos-arm64 \
//:IntentsExtension#dwarf-and-dsym,iphoneos-arm64 \
--verbose 7 ${BUCK_OPTIONS} ${BUCK_DEBUG_OPTIONS}
build_verbose: check_env
$(BUCK) build \
//:AppPackage#iphoneos-arm64 \
//:Telegram#dwarf-and-dsym,iphoneos-arm64 \
//submodules/MtProtoKit:MtProtoKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/MtProtoKit:MtProtoKit#shared,iphoneos-arm64 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#shared,iphoneos-arm64 \
//submodules/Display:Display#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Display:Display#shared,iphoneos-arm64 \
//submodules/TelegramUI:TelegramUI#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramUI:TelegramUI#shared,iphoneos-arm64 \
//:WatchAppExtension#dwarf-and-dsym,watchos-arm64_32,watchos-armv7k \
//:ShareExtension#dwarf-and-dsym,iphoneos-arm64 \
//:WidgetExtension#dwarf-and-dsym,iphoneos-arm64 \
//:NotificationContentExtension#dwarf-and-dsym,iphoneos-arm64 \
//:NotificationServiceExtension#dwarf-and-dsym,iphoneos-arm64 \
//:IntentsExtension#dwarf-and-dsym,iphoneos-arm64 \
--verbose 8 ${BUCK_OPTIONS} ${BUCK_THREADS_OPTIONS} ${BUCK_DEBUG_OPTIONS}
kill_xcode:
killall Xcode || true
clean: kill_xcode
sh clean.sh
project: check_env kill_xcode
$(BUCK) project //:workspace --config custom.mode=project ${BUCK_OPTIONS} ${BUCK_DEBUG_OPTIONS}
open Telegram_Buck.xcworkspace
project_buckdebug: check_env kill_xcode
BUCK_DEBUG_MODE=1 $(BUCK) project //:workspace --config custom.mode=project ${BUCK_OPTIONS} ${BUCK_DEBUG_OPTIONS}
open Telegram_Buck.xcworkspace
temp_project: check_env kill_xcode
$(BUCK) project //Temp:workspace --config custom.mode=project ${BUCK_OPTIONS} ${BUCK_DEBUG_OPTIONS}
open Temp/Telegram_Buck.xcworkspace

View File

@ -1,260 +0,0 @@
import Foundation
import Display
import TelegramCore
import TelegramUI
import Postbox
import SwiftSignalKit
private let accountCache = Atomic<[AccountRecordId: Account]>(value: [:])
private struct ChatHistoryFragmentEntry: Comparable, Identifiable {
let message: Message
let read: Bool
var stableId: UInt32 {
return self.message.stableId
}
}
private func==(lhs: ChatHistoryFragmentEntry, rhs: ChatHistoryFragmentEntry) -> Bool {
if MessageIndex(lhs.message) == MessageIndex(rhs.message) && lhs.message.flags == rhs.message.flags {
if lhs.message.media.count != rhs.message.media.count {
return false
}
if lhs.read != rhs.read {
return false
}
for i in 0 ..< lhs.message.media.count {
if !lhs.message.media[i].isEqual(rhs.message.media[i]) {
return false
}
}
return true
} else {
return false
}
}
private func <(lhs: ChatHistoryFragmentEntry, rhs: ChatHistoryFragmentEntry) -> Bool {
return MessageIndex(lhs.message) < MessageIndex(rhs.message)
}
private final class ChatHistoryFragmentDisplayItem {
fileprivate let item: ListViewItem
fileprivate var node: ListViewItemNode?
init(item: ListViewItem) {
self.item = item
}
init(item: ListViewItem, node: ListViewItemNode?) {
self.item = item
self.node = node
}
}
final class ChatHistoryFragmentView: UIView {
private let sizeUpdated: (CGSize) -> Void
private var layoutWidth: CGFloat?
private var displayItems: [ChatHistoryFragmentDisplayItem] = []
private let disposable = MetaDisposable()
let account = Promise<Account>()
init(peerId: PeerId, width: CGFloat, sizeUpdated: @escaping (CGSize) -> Void) {
self.sizeUpdated = sizeUpdated
self.layoutWidth = width
super.init(frame: CGRect())
/*let appBundleIdentifier = Bundle.main.bundleIdentifier!
guard let lastDotRange = appBundleIdentifier.range(of: ".", options: [.backwards]) else {
return
}
let appGroupName = "group.\(appBundleIdentifier.substring(to: lastDotRange.lowerBound))"
let maybeAppGroupUrl = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroupName)
guard let appGroupUrl = maybeAppGroupUrl else {
return
}
let accountPromise = self.account
let accountId = currentAccountId(appGroupPath: appGroupUrl.path, testingEnvironment: false)
let authorizedAccount: Signal<Account, NoError>
let cachedAccount = accountCache.with { dict -> Account? in
if let account = dict[accountId] {
return account
} else {
return nil
}
}
if let cachedAccount = cachedAccount {
authorizedAccount = .single(cachedAccount)
} else {
authorizedAccount = accountWithId(accountId, appGroupPath: appGroupUrl.path, logger: .named("notification-content"), testingEnvironment: false) |> mapToSignal { account -> Signal<Account, NoError> in
switch account {
case .left:
return .complete()
case let .right(authorizedAccount):
setupAccount(authorizedAccount)
let _ = accountCache.modify { dict in
var dict = dict
dict[accountId] = authorizedAccount
return dict
}
return .single(authorizedAccount)
}
}
}
let view = authorizedAccount
|> take(1)
|> mapToSignal { account -> Signal<(Account, MessageHistoryView, ViewUpdateType), NoError> in
accountPromise.set(.single(account))
account.stateManager.reset()
account.shouldBeServiceTaskMaster.set(.single(.now))
let view = account.viewTracker.aroundMessageHistoryViewForPeerId(peerId, index: MessageIndex.upperBound(peerId: peerId), count: 20, anchorIndex: MessageIndex.upperBound(peerId: peerId), fixedCombinedReadStates: nil, tagMask: nil)
|> map { view, updateType, _ -> (Account, MessageHistoryView, ViewUpdateType) in
return (account, view, updateType)
}
return view
}
let previousEntries = Atomic<[ChatHistoryFragmentEntry]>(value: [])
let controllerInteraction = ChatControllerInteraction(openMessage: { _ in }, openSecretMessagePreview: { _ in }, closeSecretMessagePreview: { }, openPeer: { _ in }, openPeerMention: { _ in }, openMessageContextMenu: { _ in }, navigateToMessage: { _ in }, clickThroughMessage: { }, toggleMessagesSelection: { _ in }, sendMessage: { _ in }, sendSticker: { _ in }, requestMessageActionCallback: { _ in }, openUrl: { _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _ in }, openHashtag: { _ in }, updateInputState: { _ in })
let messages = view
|> map { (account, view, viewUpdateType) -> (Account, [ChatHistoryFragmentEntry], [Int: Int]) in
var entries: [ChatHistoryFragmentEntry] = []
for entry in view.entries.reversed() {
switch entry {
case let .MessageEntry(message, read, _):
entries.append(ChatHistoryFragmentEntry(message: message, read: read))
default:
break
}
}
var previousIndices: [Int: Int] = [:]
let _ = previousEntries.modify { previousEntries in
var index = 0
for entry in entries {
var previousIndex = 0
for previousEntry in previousEntries {
if previousEntry.stableId == entry.stableId {
previousIndices[index] = previousIndex
break
}
previousIndex += 1
}
index += 1
}
return entries
}
return (account, entries, previousIndices)
}
let displayItems = messages
|> map { (account, messages, previousIndices) -> ([ChatHistoryFragmentDisplayItem], [Int: Int]) in
var result: [ChatHistoryFragmentDisplayItem] = []
for entry in messages {
result.append(ChatHistoryFragmentDisplayItem(item: ChatMessageItem(account: account, peerId: peerId, controllerInteraction: controllerInteraction, message: entry.message, read: entry.read)))
}
return (result, previousIndices)
}
let semaphore = DispatchSemaphore(value: 0)
var resultItems: [ChatHistoryFragmentDisplayItem]?
disposable.set(displayItems.start(next: { [weak self] (displayItems, previousIndices) in
if resultItems == nil {
resultItems = displayItems
semaphore.signal()
} else {
Queue.mainQueue().async {
if let strongSelf = self {
var updatedDisplayItems: [ChatHistoryFragmentDisplayItem] = []
for i in 0 ..< displayItems.count {
if let previousIndex = previousIndices[i] {
updatedDisplayItems.append(ChatHistoryFragmentDisplayItem(item: displayItems[i].item, node: strongSelf.displayItems[previousIndex].node))
} else {
updatedDisplayItems.append(displayItems[i])
}
}
let previousIndexSet = Set(previousIndices.values)
for i in 0 ..< strongSelf.displayItems.count {
if !previousIndexSet.contains(i) {
strongSelf.displayItems[i].node?.removeFromSupernode()
}
}
strongSelf.displayItems = updatedDisplayItems
if let layoutWidth = strongSelf.layoutWidth {
strongSelf.updateDisplayItems(width: layoutWidth)
}
}
}
}
}))
semaphore.wait()
if let resultItems = resultItems {
self.displayItems = resultItems
}
if let layoutWidth = self.layoutWidth {
self.updateDisplayItems(width: layoutWidth)
}*/
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
deinit {
self.disposable.dispose()
}
private func updateDisplayItems(width: CGFloat) {
for i in 0 ..< self.displayItems.count {
if let node = self.displayItems[i].node {
self.displayItems[i].item.updateNode(async: { $0() }, node: node, width: width, previousItem: i == 0 ? nil : self.displayItems[i - 1].item, nextItem: i == self.displayItems.count - 1 ? nil : self.displayItems[i + 1].item, animation: .None, completion: { layout, apply in
node.insets = layout.insets
node.contentSize = layout.contentSize
apply()
})
node.layoutForWidth(width, item: self.displayItems[i].item, previousItem: i == 0 ? nil : self.displayItems[i - 1].item, nextItem: i == self.displayItems.count - 1 ? nil : self.displayItems[i + 1].item)
} else {
self.displayItems[i].item.nodeConfiguredForWidth(async: { $0() }, width: width, previousItem: i == 0 ? nil : self.displayItems[i - 1].item, nextItem: i == self.displayItems.count - 1 ? nil : self.displayItems[i + 1].item, completion: { node, apply in
apply()
self.displayItems[i].node = node
self.addSubnode(node)
})
}
}
var verticalOffset: CGFloat = 4.0
for displayItem in self.displayItems {
if let node = displayItem.node {
node.frame = CGRect(origin: CGPoint(x: 0.0, y: verticalOffset), size: node.layout.size)
verticalOffset += node.layout.size.height
}
}
let displaySize = CGSize(width: width, height: verticalOffset + 4.0)
self.sizeUpdated(displaySize)
}
override func layoutSubviews() {
super.layoutSubviews()
if self.layoutWidth != self.bounds.size.width {
self.layoutWidth = self.bounds.size.width
self.updateDisplayItems(width: self.bounds.size.width)
}
}
}

View File

@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>5.11</string>
<string>5.12</string>
<key>CFBundleVersion</key>
<string>${BUILD_NUMBER}</string>
<key>NSExtension</key>

View File

@ -5,6 +5,7 @@ import TelegramUI
import BuildConfig
@objc(NotificationViewController)
@available(iOSApplicationExtension 10.0, *)
class NotificationViewController: UIViewController, UNNotificationContentExtension {
private var impl: NotificationViewControllerImpl?

View File

@ -1,6 +1,11 @@
#import "Attachments.h"
#import <MtProtoKitDynamic/MtProtoKitDynamic.h>
#ifdef BUCK
#import <MTProtoKit/MTProtoKit.h>
#else
#import <MTProtoKitDynamic/MTProtoKitDynamic.h>
#endif
#import "Api.h"
id _Nullable parseAttachment(NSData * _Nonnull data) {

View File

@ -1,6 +1,10 @@
#import "FetchImage.h"
#ifdef BUCK
#import <MTProtoKit/MTProtoKit.h>
#else
#import <MTProtoKitDynamic/MTProtoKitDynamic.h>
#endif
#import "Serialization.h"

View File

@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>5.11</string>
<string>5.12</string>
<key>CFBundleVersion</key>
<string>${BUILD_NUMBER}</string>
<key>NSExtension</key>
@ -27,5 +27,7 @@
<key>NSExtensionPrincipalClass</key>
<string>NotificationService</string>
</dict>
<key>MinimumOSVersion</key>
<string>10.0</string>
</dict>
</plist>

View File

@ -1,5 +1,10 @@
#import <Foundation/Foundation.h>
#ifdef BUCK
#import <MTProtoKit/MTProtoKit.h>
#else
#import <MTProtoKitDynamic/MTProtoKitDynamic.h>
#endif
NS_ASSUME_NONNULL_BEGIN

View File

@ -3,7 +3,7 @@
@implementation Serialization
- (NSUInteger)currentLayer {
return 105;
return 106;
}
- (id _Nullable)parseMessage:(NSData * _Nullable)data {

View File

@ -1,6 +1,11 @@
#import "StoredAccountInfos.h"
#import <MtProtoKitDynamic/MtProtoKitDynamic.h>
#ifdef BUCK
#import <MTProtoKit/MTProtoKit.h>
#else
#import <MTProtoKitDynamic/MTProtoKitDynamic.h>
#endif
#import <CommonCrypto/CommonDigest.h>
@implementation AccountNotificationKey

View File

@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>5.11</string>
<string>5.12</string>
<key>CFBundleVersion</key>
<string>${BUILD_NUMBER}</string>
<key>NSExtension</key>

View File

@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>5.11</string>
<string>5.12</string>
<key>CFBundleVersion</key>
<string>${BUILD_NUMBER}</string>
<key>NSExtension</key>

View File

@ -45,6 +45,7 @@ private func cleanPhoneNumber(_ text: String) -> String {
return result
}
@available(iOSApplicationExtension 10.0, *)
func matchingDeviceContacts(stableIds: [String]) -> Signal<[MatchingDeviceContact], IntentContactsError> {
guard CNContactStore.authorizationStatus(for: .contacts) == .authorized else {
return .fail(.generic)
@ -118,6 +119,7 @@ func matchingCloudContact(postbox: Postbox, peerId: PeerId) -> Signal<TelegramUs
}
}
@available(iOSApplicationExtension 10.0, *)
func personWithUser(stableId: String, user: TelegramUser) -> INPerson {
var nameComponents = PersonNameComponents()
nameComponents.givenName = user.firstName

View File

@ -47,6 +47,7 @@ enum IntentHandlingError {
case generic
}
@available(iOSApplicationExtension 10.0, *)
class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessagesIntentHandling, INSetMessageAttributeIntentHandling, INStartAudioCallIntentHandling, INSearchCallHistoryIntentHandling {
private let accountPromise = Promise<Account?>()

View File

@ -16,6 +16,7 @@ extension MessageId {
}
}
@available(iOSApplicationExtension 10.0, *)
func getMessages(account: Account, ids: [MessageId]) -> Signal<[INMessage], NoError> {
return account.postbox.transaction { transaction -> [INMessage] in
var messages: [INMessage] = []
@ -28,6 +29,7 @@ func getMessages(account: Account, ids: [MessageId]) -> Signal<[INMessage], NoEr
}
}
@available(iOSApplicationExtension 10.0, *)
func unreadMessages(account: Account) -> Signal<[INMessage], NoError> {
return account.postbox.tailChatListView(groupId: .root, count: 20, summaryComponents: ChatListEntrySummaryComponents())
|> take(1)
@ -86,6 +88,7 @@ func unreadMessages(account: Account) -> Signal<[INMessage], NoError> {
}
}
@available(iOSApplicationExtension 10.0, *)
struct CallRecord {
let identifier: String
let date: Date
@ -99,6 +102,7 @@ struct CallRecord {
}
}
@available(iOSApplicationExtension 10.0, *)
func missedCalls(account: Account) -> Signal<[CallRecord], NoError> {
return account.viewTracker.callListView(type: .missed, index: MessageIndex.absoluteUpperBound(), count: 30)
|> take(1)
@ -120,6 +124,7 @@ func missedCalls(account: Account) -> Signal<[CallRecord], NoError> {
}
}
@available(iOSApplicationExtension 10.0, *)
private func callWithTelegramMessage(_ telegramMessage: Message, account: Account) -> CallRecord? {
guard let author = telegramMessage.author, let user = telegramMessage.peers[author.id] as? TelegramUser else {
return nil
@ -158,6 +163,7 @@ private func callWithTelegramMessage(_ telegramMessage: Message, account: Accoun
return CallRecord(identifier: identifier, date: date, caller: caller, duration: duration, unseen: true)
}
@available(iOSApplicationExtension 10.0, *)
private func messageWithTelegramMessage(_ telegramMessage: Message) -> INMessage? {
guard let author = telegramMessage.author, let user = telegramMessage.peers[author.id] as? TelegramUser, user.id.id != 777000 else {
return nil

1
SupportFiles/Empty.swift Normal file
View File

@ -0,0 +1 @@

View File

@ -219,20 +219,20 @@
09EC5CDA22CBBF9600292E42 /* telegram_plane1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 09EC5CD922CBBF9600292E42 /* telegram_plane1@2x.png */; };
09FDAEE62140477F00BF856F /* MtProtoKitDynamic.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09FDAEE52140477F00BF856F /* MtProtoKitDynamic.framework */; };
D000CACF21FB6E380011B15D /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = D000CAC821FB6E370011B15D /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
D001D5AA1F878DA300DF975A /* PhoneCountries.txt in Resources */ = {isa = PBXBuildFile; fileRef = D001D5A91F878DA300DF975A /* PhoneCountries.txt */; };
D008185022B5797A008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008184F22B5797A008A895F /* BuildConfig.framework */; };
D008185222B57986008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185122B57986008A895F /* BuildConfig.framework */; };
D008185422B57994008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185322B57994008A895F /* BuildConfig.framework */; };
D008185622B579A1008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185522B579A1008A895F /* BuildConfig.framework */; };
D008185822B579AD008A895F /* BuildConfig.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D008185722B579AD008A895F /* BuildConfig.framework */; };
D00818A522B58CCB008A895F /* WatchCommonWatch.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D00818A422B58CCB008A895F /* WatchCommonWatch.framework */; };
D00859A91B28189D00EAF753 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D00859A81B28189D00EAF753 /* Images.xcassets */; };
D00859A91B28189D00EAF753 /* Icons.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D00859A81B28189D00EAF753 /* Icons.xcassets */; };
D00859AC1B28189D00EAF753 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = D00859AA1B28189D00EAF753 /* LaunchScreen.xib */; };
D00ED75A1FE94630001F38BD /* AppIntentVocabulary.plist in Resources */ = {isa = PBXBuildFile; fileRef = D00ED7581FE94630001F38BD /* AppIntentVocabulary.plist */; };
D00ED75D1FE95287001F38BD /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D00ED75B1FE95287001F38BD /* InfoPlist.strings */; };
D015E04D225D2D8F00CB9E8A /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D015E04C225D2D8F00CB9E8A /* WebP.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
D015E050225D303F00CB9E8A /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D015E04C225D2D8F00CB9E8A /* WebP.framework */; };
D015E051225D303F00CB9E8A /* WebP.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D015E04C225D2D8F00CB9E8A /* WebP.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
D01748C7231976B200AF3D3A /* LegacyComponentsResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D01748C6231976B100AF3D3A /* LegacyComponentsResources.bundle */; };
D021D4D9219CAEDD0064BEBA /* Config-Fork.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = D021D4D8219CAEDD0064BEBA /* Config-Fork.xcconfig */; };
D02CF5FD215D9ABF00E0F56A /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AA1A671D568BA400152314 /* UserNotifications.framework */; };
D02CF5FE215D9ABF00E0F56A /* UserNotificationsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0AA1A691D568BA400152314 /* UserNotificationsUI.framework */; };
@ -400,8 +400,95 @@
D0E8C2E02285EA6A009F26E8 /* BlackIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0E8C2DF2285EA6A009F26E8 /* BlackIcon@3x.png */; };
D0ECCB7F1FE9C38500609802 /* Telegram_iOS_UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ECCB7E1FE9C38500609802 /* Telegram_iOS_UITests.swift */; };
D0ECCB8A1FE9C4AC00609802 /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0ECCB891FE9C4AC00609802 /* SnapshotHelper.swift */; };
D0EFF27C2319835B00CF5164 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF27B2319835A00CF5164 /* Images.xcassets */; };
D0EFF2D52319838800CF5164 /* PhoneCountries.txt in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF27D2319838400CF5164 /* PhoneCountries.txt */; };
D0EFF2D62319838800CF5164 /* currencies.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF27E2319838500CF5164 /* currencies.json */; };
D0EFF2D72319838800CF5164 /* Emoji.mapping in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF27F2319838500CF5164 /* Emoji.mapping */; };
D0EFF2D82319838800CF5164 /* lol.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2812319838500CF5164 /* lol.tgs */; };
D0EFF2D92319838800CF5164 /* thumbsup.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2822319838500CF5164 /* thumbsup.tgs */; };
D0EFF2DA2319838800CF5164 /* poker.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2832319838500CF5164 /* poker.tgs */; };
D0EFF2DB2319838800CF5164 /* cry.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2842319838500CF5164 /* cry.tgs */; };
D0EFF2DC2319838800CF5164 /* meh.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2852319838500CF5164 /* meh.tgs */; };
D0EFF2DD2319838800CF5164 /* sad.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2862319838500CF5164 /* sad.tgs */; };
D0EFF2DE2319838800CF5164 /* surprised.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2872319838500CF5164 /* surprised.tgs */; };
D0EFF2DF2319838800CF5164 /* ok.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2882319838500CF5164 /* ok.tgs */; };
D0EFF2E02319838800CF5164 /* heart.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2892319838500CF5164 /* heart.tgs */; };
D0EFF2E12319838800CF5164 /* poop.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF28A2319838500CF5164 /* poop.tgs */; };
D0EFF2E22319838800CF5164 /* celebrate.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF28B2319838600CF5164 /* celebrate.tgs */; };
D0EFF2E32319838800CF5164 /* smile.tgs in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF28C2319838600CF5164 /* smile.tgs */; };
D0EFF2E42319838800CF5164 /* ChatWallpaperBuiltin0.jpg in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF28D2319838600CF5164 /* ChatWallpaperBuiltin0.jpg */; };
D0EFF2E52319838800CF5164 /* stp_card_visa_template@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF28F2319838600CF5164 /* stp_card_visa_template@3x.png */; };
D0EFF2E62319838800CF5164 /* stp_card_form_back@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2902319838600CF5164 /* stp_card_form_back@3x.png */; };
D0EFF2E72319838800CF5164 /* stp_card_amex@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2912319838600CF5164 /* stp_card_amex@3x.png */; };
D0EFF2E82319838800CF5164 /* stp_card_diners@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2922319838600CF5164 /* stp_card_diners@2x.png */; };
D0EFF2E92319838800CF5164 /* stp_card_diners_template@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2932319838600CF5164 /* stp_card_diners_template@2x.png */; };
D0EFF2EA2319838800CF5164 /* stp_card_amex_template@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2942319838600CF5164 /* stp_card_amex_template@3x.png */; };
D0EFF2EB2319838800CF5164 /* stp_card_diners_template@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2952319838600CF5164 /* stp_card_diners_template@3x.png */; };
D0EFF2EC2319838800CF5164 /* stp_card_amex_template@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2962319838600CF5164 /* stp_card_amex_template@2x.png */; };
D0EFF2ED2319838800CF5164 /* stp_card_diners@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2972319838600CF5164 /* stp_card_diners@3x.png */; };
D0EFF2EE2319838800CF5164 /* stp_card_amex@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2982319838600CF5164 /* stp_card_amex@2x.png */; };
D0EFF2EF2319838800CF5164 /* stp_card_form_back@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2992319838600CF5164 /* stp_card_form_back@2x.png */; };
D0EFF2F02319838800CF5164 /* stp_card_visa_template@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF29A2319838600CF5164 /* stp_card_visa_template@2x.png */; };
D0EFF2F12319838800CF5164 /* stp_card_form_front@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF29B2319838600CF5164 /* stp_card_form_front@2x.png */; };
D0EFF2F22319838800CF5164 /* stp_card_applepay_template@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF29C2319838600CF5164 /* stp_card_applepay_template@2x.png */; };
D0EFF2F32319838800CF5164 /* stp_card_cvc_amex@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF29D2319838600CF5164 /* stp_card_cvc_amex@3x.png */; };
D0EFF2F42319838800CF5164 /* stp_card_discover@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF29E2319838600CF5164 /* stp_card_discover@3x.png */; };
D0EFF2F52319838800CF5164 /* stp_card_cvc@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF29F2319838600CF5164 /* stp_card_cvc@2x.png */; };
D0EFF2F62319838800CF5164 /* stp_card_jcb_template@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A02319838600CF5164 /* stp_card_jcb_template@3x.png */; };
D0EFF2F72319838800CF5164 /* stp_card_jcb@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A12319838600CF5164 /* stp_card_jcb@3x.png */; };
D0EFF2F82319838800CF5164 /* stp_card_jcb@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A22319838600CF5164 /* stp_card_jcb@2x.png */; };
D0EFF2F92319838800CF5164 /* stp_card_cvc@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A32319838600CF5164 /* stp_card_cvc@3x.png */; };
D0EFF2FA2319838800CF5164 /* stp_card_jcb_template@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A42319838600CF5164 /* stp_card_jcb_template@2x.png */; };
D0EFF2FB2319838800CF5164 /* stp_card_discover@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A52319838600CF5164 /* stp_card_discover@2x.png */; };
D0EFF2FC2319838800CF5164 /* stp_card_cvc_amex@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A62319838600CF5164 /* stp_card_cvc_amex@2x.png */; };
D0EFF2FD2319838800CF5164 /* stp_card_applepay_template@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A72319838600CF5164 /* stp_card_applepay_template@3x.png */; };
D0EFF2FE2319838800CF5164 /* stp_card_form_front@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A82319838600CF5164 /* stp_card_form_front@3x.png */; };
D0EFF2FF2319838800CF5164 /* stp_card_visa@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2A92319838600CF5164 /* stp_card_visa@3x.png */; };
D0EFF3002319838800CF5164 /* stp_card_placeholder_template@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2AA2319838600CF5164 /* stp_card_placeholder_template@3x.png */; };
D0EFF3012319838800CF5164 /* stp_card_applepay@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2AB2319838600CF5164 /* stp_card_applepay@2x.png */; };
D0EFF3022319838800CF5164 /* stp_card_applepay@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2AC2319838600CF5164 /* stp_card_applepay@3x.png */; };
D0EFF3032319838800CF5164 /* stp_card_placeholder_template@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2AD2319838600CF5164 /* stp_card_placeholder_template@2x.png */; };
D0EFF3042319838800CF5164 /* stp_card_visa@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2AE2319838600CF5164 /* stp_card_visa@2x.png */; };
D0EFF3052319838800CF5164 /* stp_card_mastercard_template@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2AF2319838600CF5164 /* stp_card_mastercard_template@3x.png */; };
D0EFF3062319838800CF5164 /* stp_card_discover_template@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2B02319838600CF5164 /* stp_card_discover_template@2x.png */; };
D0EFF3072319838800CF5164 /* stp_card_form_applepay@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2B12319838600CF5164 /* stp_card_form_applepay@3x.png */; };
D0EFF3082319838800CF5164 /* stp_card_mastercard@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2B22319838600CF5164 /* stp_card_mastercard@2x.png */; };
D0EFF3092319838800CF5164 /* stp_card_mastercard@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2B32319838600CF5164 /* stp_card_mastercard@3x.png */; };
D0EFF30A2319838800CF5164 /* stp_card_discover_template@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2B42319838600CF5164 /* stp_card_discover_template@3x.png */; };
D0EFF30B2319838800CF5164 /* stp_card_form_applepay@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2B52319838600CF5164 /* stp_card_form_applepay@2x.png */; };
D0EFF30C2319838800CF5164 /* stp_card_mastercard_template@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2B62319838600CF5164 /* stp_card_mastercard_template@2x.png */; };
D0EFF30D2319838800CF5164 /* anim_read.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2B82319838700CF5164 /* anim_read.json */; };
D0EFF30E2319838800CF5164 /* anim_archive.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2B92319838700CF5164 /* anim_archive.json */; };
D0EFF30F2319838800CF5164 /* anim_pin.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2BA2319838700CF5164 /* anim_pin.json */; };
D0EFF3102319838800CF5164 /* anim_infotip.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2BB2319838700CF5164 /* anim_infotip.json */; };
D0EFF3112319838800CF5164 /* anim_unmute.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2BC2319838700CF5164 /* anim_unmute.json */; };
D0EFF3122319838800CF5164 /* anim_unpin.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2BD2319838700CF5164 /* anim_unpin.json */; };
D0EFF3132319838800CF5164 /* anim_success.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2BE2319838700CF5164 /* anim_success.json */; };
D0EFF3142319838800CF5164 /* anim_unread.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2BF2319838700CF5164 /* anim_unread.json */; };
D0EFF3152319838800CF5164 /* anim_archiveswipe.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2C02319838700CF5164 /* anim_archiveswipe.json */; };
D0EFF3162319838800CF5164 /* anim_delete.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2C12319838700CF5164 /* anim_delete.json */; };
D0EFF3172319838800CF5164 /* anim_archiveAvatar.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2C22319838700CF5164 /* anim_archiveAvatar.json */; };
D0EFF3182319838800CF5164 /* anim_unarchive.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2C32319838700CF5164 /* anim_unarchive.json */; };
D0EFF3192319838800CF5164 /* anim_ungroup.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2C42319838700CF5164 /* anim_ungroup.json */; };
D0EFF31A2319838800CF5164 /* anim_hide.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2C52319838700CF5164 /* anim_hide.json */; };
D0EFF31B2319838800CF5164 /* anim_group.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2C62319838700CF5164 /* anim_group.json */; };
D0EFF31C2319838800CF5164 /* anim_mute.json in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2C72319838700CF5164 /* anim_mute.json */; };
D0EFF31D2319838800CF5164 /* PresentationStrings.mapping in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2C82319838700CF5164 /* PresentationStrings.mapping */; };
D0EFF31E2319838800CF5164 /* VimeoUserScript.js in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2CA2319838700CF5164 /* VimeoUserScript.js */; };
D0EFF31F2319838800CF5164 /* TwitchUserScript.js in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2CB2319838700CF5164 /* TwitchUserScript.js */; };
D0EFF3202319838800CF5164 /* Youtube.html in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2CC2319838700CF5164 /* Youtube.html */; };
D0EFF3212319838800CF5164 /* Twitch.html in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2CD2319838700CF5164 /* Twitch.html */; };
D0EFF3222319838800CF5164 /* Vimeo.html in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2CE2319838700CF5164 /* Vimeo.html */; };
D0EFF3232319838800CF5164 /* Instagram.html in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2CF2319838700CF5164 /* Instagram.html */; };
D0EFF3242319838800CF5164 /* Generic.html in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2D02319838700CF5164 /* Generic.html */; };
D0EFF3252319838800CF5164 /* GenericUserScript.js in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2D12319838700CF5164 /* GenericUserScript.js */; };
D0EFF3262319838800CF5164 /* YoutubeUserScript.js in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2D22319838700CF5164 /* YoutubeUserScript.js */; };
D0EFF3272319838800CF5164 /* SFCompactRounded-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF2D42319838700CF5164 /* SFCompactRounded-Semibold.otf */; };
D0EFF32B231983BF00CF5164 /* MessageSent.caf in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF329231983BF00CF5164 /* MessageSent.caf */; };
D0EFF32C231983BF00CF5164 /* notification.caf in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF32A231983BF00CF5164 /* notification.caf */; };
D0EFF33023198D3200CF5164 /* NavigationBackArrowLight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF32E23198D3200CF5164 /* NavigationBackArrowLight@2x.png */; };
D0EFF33123198D3200CF5164 /* NavigationShadow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D0EFF32F23198D3200CF5164 /* NavigationShadow@2x.png */; };
D0F575132083B96B00F1C1E1 /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0F575122083B96B00F1C1E1 /* CloudKit.framework */; };
D0FC1948201D2DA800FEDBB2 /* SFCompactRounded-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = D0FC1947201D2DA700FEDBB2 /* SFCompactRounded-Semibold.otf */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -547,7 +634,6 @@
094DDF5222E8C30F004B0256 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = Localizable.strings; sourceTree = "<group>"; };
094DDF5422E8C30F004B0256 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = InfoPlist.strings; sourceTree = "<group>"; };
094DDF5622E8C30F004B0256 /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = id; path = AppIntentVocabulary.plist; sourceTree = "<group>"; };
0956AF2B217B4642008106D0 /* WatchCommunicationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchCommunicationManager.swift; sourceTree = "<group>"; };
0956AF2D217B8109008106D0 /* TGNeoUnsupportedMessageViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TGNeoUnsupportedMessageViewModel.h; sourceTree = "<group>"; };
0956AF2E217B8109008106D0 /* TGNeoUnsupportedMessageViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TGNeoUnsupportedMessageViewModel.m; sourceTree = "<group>"; };
0972C6DF21791D950069E98A /* UserNotifications.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotifications.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS5.0.sdk/System/Library/Frameworks/UserNotifications.framework; sourceTree = DEVELOPER_DIR; };
@ -565,11 +651,8 @@
09A4192D22B7A4D400637EB4 /* BlueClassicIconLargeIpad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlueClassicIconLargeIpad@2x.png"; sourceTree = "<group>"; };
09A4192E22B7A4D400637EB4 /* BlackClassicIconIpad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlackClassicIconIpad.png; sourceTree = "<group>"; };
09A4192F22B7A4D400637EB4 /* BlackClassicIconIpad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlackClassicIconIpad@2x.png"; sourceTree = "<group>"; };
09C50E7921738178009E676F /* TGBridgeServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TGBridgeServer.h; sourceTree = "<group>"; };
09C50E7A21738178009E676F /* TGBridgeServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TGBridgeServer.m; sourceTree = "<group>"; };
09C50E852173854D009E676F /* WatchKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WatchKit.framework; path = System/Library/Frameworks/WatchKit.framework; sourceTree = SDKROOT; };
09C50E87217385CF009E676F /* WatchConnectivity.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WatchConnectivity.framework; path = System/Library/Frameworks/WatchConnectivity.framework; sourceTree = SDKROOT; };
09C50E892173AEDB009E676F /* WatchRequestHandlers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchRequestHandlers.swift; sourceTree = "<group>"; };
09C56F8B2172797200BDF00F /* Watch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Watch.app; sourceTree = BUILT_PRODUCTS_DIR; };
09C56F8E2172797200BDF00F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Interface.storyboard; sourceTree = "<group>"; };
09C56F902172797400BDF00F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
@ -848,7 +931,6 @@
09C573132172953800BDF00F /* TGBridgeStickerPack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TGBridgeStickerPack.h; path = Bridge/TGBridgeStickerPack.h; sourceTree = "<group>"; };
09C573152172953800BDF00F /* TGBridgeLocationVenue+TGTableItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "TGBridgeLocationVenue+TGTableItem.h"; path = "Bridge/TGBridgeLocationVenue+TGTableItem.h"; sourceTree = "<group>"; };
09CFB211217299E80083F7A3 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS5.0.sdk/System/Library/Frameworks/CoreLocation.framework; sourceTree = DEVELOPER_DIR; };
09D304212174335F00C00567 /* WatchBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchBridge.swift; sourceTree = "<group>"; };
09E9600122C23FF000B13673 /* BlackNotificationIcon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "BlackNotificationIcon@3x.png"; sourceTree = "<group>"; };
09E9600222C23FF000B13673 /* BlackNotificationIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlackNotificationIcon.png; sourceTree = "<group>"; };
09E9600322C23FF000B13673 /* BlueNotificationIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BlueNotificationIcon.png; sourceTree = "<group>"; };
@ -881,7 +963,6 @@
D000CAC221FB6E170011B15D /* NotificationService-AppStore.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "NotificationService-AppStore.entitlements"; sourceTree = "<group>"; };
D000CAC321FB6E170011B15D /* NotificationService-AppStoreLLC.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "NotificationService-AppStoreLLC.entitlements"; sourceTree = "<group>"; };
D000CAC821FB6E370011B15D /* NotificationService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = NotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; };
D001D5A91F878DA300DF975A /* PhoneCountries.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PhoneCountries.txt; path = "Telegram-iOS/Resources/PhoneCountries.txt"; sourceTree = "<group>"; };
D006CFA121A8D12600FDCD32 /* ModernProto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ModernProto.framework; path = "../../../Library/Developer/Xcode/DerivedData/Telegram-iOS-ffbqcdyqpehxdvcwhyaorlehrrdc/Build/Products/Debug Hockeyapp-iphoneos/ModernProto.framework"; sourceTree = "<group>"; };
D008184B22B578EC008A895F /* WatchCommon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WatchCommon.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D008184D22B5796E008A895F /* BuildConfig.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = BuildConfig.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@ -895,13 +976,14 @@
D00818CE22B595DB008A895F /* LightweightAccountData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LightweightAccountData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D008599C1B28189D00EAF753 /* Telegram.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Telegram.app; sourceTree = BUILT_PRODUCTS_DIR; };
D00859A01B28189D00EAF753 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D00859A81B28189D00EAF753 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
D00859A81B28189D00EAF753 /* Icons.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Icons.xcassets; sourceTree = "<group>"; };
D00859AB1B28189D00EAF753 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
D00859B61B28189D00EAF753 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D00859B71B28189D00EAF753 /* Telegram_iOSTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Telegram_iOSTests.swift; sourceTree = "<group>"; };
D00ED7591FE94630001F38BD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = en; path = en.lproj/AppIntentVocabulary.plist; sourceTree = "<group>"; };
D00ED75C1FE95287001F38BD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
D015E04C225D2D8F00CB9E8A /* WebP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WebP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D01748C6231976B100AF3D3A /* LegacyComponentsResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = LegacyComponentsResources.bundle; path = submodules/LegacyComponents/LegacyComponents/Resources/LegacyComponentsResources.bundle; sourceTree = "<group>"; };
D01A47521F4DBEB100383CC1 /* libHockeySDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libHockeySDK.a; path = "../../build/HockeySDK-iOS/Support/build/Debug-iphoneos/libHockeySDK.a"; sourceTree = "<group>"; };
D01A47541F4DBED700383CC1 /* HockeySDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = HockeySDK.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D021D4D7219CAEDD0064BEBA /* Telegram-iOS-Fork.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = "Telegram-iOS-Fork.entitlements"; sourceTree = "<group>"; };
@ -1129,8 +1211,95 @@
D0ECCB801FE9C38500609802 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D0ECCB891FE9C4AC00609802 /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SnapshotHelper.swift; sourceTree = "<group>"; };
D0ED633C21FF3F28001D4648 /* NotificationService-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NotificationService-Bridging-Header.h"; sourceTree = "<group>"; };
D0EFF27B2319835A00CF5164 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = submodules/TelegramUI/Images.xcassets; sourceTree = "<group>"; };
D0EFF27D2319838400CF5164 /* PhoneCountries.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PhoneCountries.txt; path = submodules/TelegramUI/TelegramUI/Resources/PhoneCountries.txt; sourceTree = "<group>"; };
D0EFF27E2319838500CF5164 /* currencies.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = currencies.json; path = submodules/TelegramUI/TelegramUI/Resources/currencies.json; sourceTree = "<group>"; };
D0EFF27F2319838500CF5164 /* Emoji.mapping */ = {isa = PBXFileReference; lastKnownFileType = file; name = Emoji.mapping; path = submodules/TelegramUI/TelegramUI/Resources/Emoji.mapping; sourceTree = "<group>"; };
D0EFF2812319838500CF5164 /* lol.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = lol.tgs; sourceTree = "<group>"; };
D0EFF2822319838500CF5164 /* thumbsup.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = thumbsup.tgs; sourceTree = "<group>"; };
D0EFF2832319838500CF5164 /* poker.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = poker.tgs; sourceTree = "<group>"; };
D0EFF2842319838500CF5164 /* cry.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = cry.tgs; sourceTree = "<group>"; };
D0EFF2852319838500CF5164 /* meh.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = meh.tgs; sourceTree = "<group>"; };
D0EFF2862319838500CF5164 /* sad.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = sad.tgs; sourceTree = "<group>"; };
D0EFF2872319838500CF5164 /* surprised.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = surprised.tgs; sourceTree = "<group>"; };
D0EFF2882319838500CF5164 /* ok.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = ok.tgs; sourceTree = "<group>"; };
D0EFF2892319838500CF5164 /* heart.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = heart.tgs; sourceTree = "<group>"; };
D0EFF28A2319838500CF5164 /* poop.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = poop.tgs; sourceTree = "<group>"; };
D0EFF28B2319838600CF5164 /* celebrate.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = celebrate.tgs; sourceTree = "<group>"; };
D0EFF28C2319838600CF5164 /* smile.tgs */ = {isa = PBXFileReference; lastKnownFileType = file; path = smile.tgs; sourceTree = "<group>"; };
D0EFF28D2319838600CF5164 /* ChatWallpaperBuiltin0.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = ChatWallpaperBuiltin0.jpg; path = submodules/TelegramUI/TelegramUI/Resources/ChatWallpaperBuiltin0.jpg; sourceTree = "<group>"; };
D0EFF28F2319838600CF5164 /* stp_card_visa_template@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_visa_template@3x.png"; sourceTree = "<group>"; };
D0EFF2902319838600CF5164 /* stp_card_form_back@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_form_back@3x.png"; sourceTree = "<group>"; };
D0EFF2912319838600CF5164 /* stp_card_amex@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_amex@3x.png"; sourceTree = "<group>"; };
D0EFF2922319838600CF5164 /* stp_card_diners@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_diners@2x.png"; sourceTree = "<group>"; };
D0EFF2932319838600CF5164 /* stp_card_diners_template@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_diners_template@2x.png"; sourceTree = "<group>"; };
D0EFF2942319838600CF5164 /* stp_card_amex_template@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_amex_template@3x.png"; sourceTree = "<group>"; };
D0EFF2952319838600CF5164 /* stp_card_diners_template@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_diners_template@3x.png"; sourceTree = "<group>"; };
D0EFF2962319838600CF5164 /* stp_card_amex_template@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_amex_template@2x.png"; sourceTree = "<group>"; };
D0EFF2972319838600CF5164 /* stp_card_diners@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_diners@3x.png"; sourceTree = "<group>"; };
D0EFF2982319838600CF5164 /* stp_card_amex@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_amex@2x.png"; sourceTree = "<group>"; };
D0EFF2992319838600CF5164 /* stp_card_form_back@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_form_back@2x.png"; sourceTree = "<group>"; };
D0EFF29A2319838600CF5164 /* stp_card_visa_template@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_visa_template@2x.png"; sourceTree = "<group>"; };
D0EFF29B2319838600CF5164 /* stp_card_form_front@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_form_front@2x.png"; sourceTree = "<group>"; };
D0EFF29C2319838600CF5164 /* stp_card_applepay_template@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_applepay_template@2x.png"; sourceTree = "<group>"; };
D0EFF29D2319838600CF5164 /* stp_card_cvc_amex@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_cvc_amex@3x.png"; sourceTree = "<group>"; };
D0EFF29E2319838600CF5164 /* stp_card_discover@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_discover@3x.png"; sourceTree = "<group>"; };
D0EFF29F2319838600CF5164 /* stp_card_cvc@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_cvc@2x.png"; sourceTree = "<group>"; };
D0EFF2A02319838600CF5164 /* stp_card_jcb_template@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_jcb_template@3x.png"; sourceTree = "<group>"; };
D0EFF2A12319838600CF5164 /* stp_card_jcb@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_jcb@3x.png"; sourceTree = "<group>"; };
D0EFF2A22319838600CF5164 /* stp_card_jcb@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_jcb@2x.png"; sourceTree = "<group>"; };
D0EFF2A32319838600CF5164 /* stp_card_cvc@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_cvc@3x.png"; sourceTree = "<group>"; };
D0EFF2A42319838600CF5164 /* stp_card_jcb_template@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_jcb_template@2x.png"; sourceTree = "<group>"; };
D0EFF2A52319838600CF5164 /* stp_card_discover@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_discover@2x.png"; sourceTree = "<group>"; };
D0EFF2A62319838600CF5164 /* stp_card_cvc_amex@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_cvc_amex@2x.png"; sourceTree = "<group>"; };
D0EFF2A72319838600CF5164 /* stp_card_applepay_template@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_applepay_template@3x.png"; sourceTree = "<group>"; };
D0EFF2A82319838600CF5164 /* stp_card_form_front@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_form_front@3x.png"; sourceTree = "<group>"; };
D0EFF2A92319838600CF5164 /* stp_card_visa@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_visa@3x.png"; sourceTree = "<group>"; };
D0EFF2AA2319838600CF5164 /* stp_card_placeholder_template@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_placeholder_template@3x.png"; sourceTree = "<group>"; };
D0EFF2AB2319838600CF5164 /* stp_card_applepay@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_applepay@2x.png"; sourceTree = "<group>"; };
D0EFF2AC2319838600CF5164 /* stp_card_applepay@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_applepay@3x.png"; sourceTree = "<group>"; };
D0EFF2AD2319838600CF5164 /* stp_card_placeholder_template@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_placeholder_template@2x.png"; sourceTree = "<group>"; };
D0EFF2AE2319838600CF5164 /* stp_card_visa@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_visa@2x.png"; sourceTree = "<group>"; };
D0EFF2AF2319838600CF5164 /* stp_card_mastercard_template@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_mastercard_template@3x.png"; sourceTree = "<group>"; };
D0EFF2B02319838600CF5164 /* stp_card_discover_template@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_discover_template@2x.png"; sourceTree = "<group>"; };
D0EFF2B12319838600CF5164 /* stp_card_form_applepay@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_form_applepay@3x.png"; sourceTree = "<group>"; };
D0EFF2B22319838600CF5164 /* stp_card_mastercard@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_mastercard@2x.png"; sourceTree = "<group>"; };
D0EFF2B32319838600CF5164 /* stp_card_mastercard@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_mastercard@3x.png"; sourceTree = "<group>"; };
D0EFF2B42319838600CF5164 /* stp_card_discover_template@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_discover_template@3x.png"; sourceTree = "<group>"; };
D0EFF2B52319838600CF5164 /* stp_card_form_applepay@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_form_applepay@2x.png"; sourceTree = "<group>"; };
D0EFF2B62319838600CF5164 /* stp_card_mastercard_template@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "stp_card_mastercard_template@2x.png"; sourceTree = "<group>"; };
D0EFF2B82319838700CF5164 /* anim_read.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_read.json; sourceTree = "<group>"; };
D0EFF2B92319838700CF5164 /* anim_archive.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_archive.json; sourceTree = "<group>"; };
D0EFF2BA2319838700CF5164 /* anim_pin.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_pin.json; sourceTree = "<group>"; };
D0EFF2BB2319838700CF5164 /* anim_infotip.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_infotip.json; sourceTree = "<group>"; };
D0EFF2BC2319838700CF5164 /* anim_unmute.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unmute.json; sourceTree = "<group>"; };
D0EFF2BD2319838700CF5164 /* anim_unpin.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unpin.json; sourceTree = "<group>"; };
D0EFF2BE2319838700CF5164 /* anim_success.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_success.json; sourceTree = "<group>"; };
D0EFF2BF2319838700CF5164 /* anim_unread.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unread.json; sourceTree = "<group>"; };
D0EFF2C02319838700CF5164 /* anim_archiveswipe.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_archiveswipe.json; sourceTree = "<group>"; };
D0EFF2C12319838700CF5164 /* anim_delete.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_delete.json; sourceTree = "<group>"; };
D0EFF2C22319838700CF5164 /* anim_archiveAvatar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_archiveAvatar.json; sourceTree = "<group>"; };
D0EFF2C32319838700CF5164 /* anim_unarchive.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_unarchive.json; sourceTree = "<group>"; };
D0EFF2C42319838700CF5164 /* anim_ungroup.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_ungroup.json; sourceTree = "<group>"; };
D0EFF2C52319838700CF5164 /* anim_hide.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_hide.json; sourceTree = "<group>"; };
D0EFF2C62319838700CF5164 /* anim_group.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_group.json; sourceTree = "<group>"; };
D0EFF2C72319838700CF5164 /* anim_mute.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = anim_mute.json; sourceTree = "<group>"; };
D0EFF2C82319838700CF5164 /* PresentationStrings.mapping */ = {isa = PBXFileReference; lastKnownFileType = file; name = PresentationStrings.mapping; path = submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping; sourceTree = "<group>"; };
D0EFF2CA2319838700CF5164 /* VimeoUserScript.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = VimeoUserScript.js; sourceTree = "<group>"; };
D0EFF2CB2319838700CF5164 /* TwitchUserScript.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = TwitchUserScript.js; sourceTree = "<group>"; };
D0EFF2CC2319838700CF5164 /* Youtube.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Youtube.html; sourceTree = "<group>"; };
D0EFF2CD2319838700CF5164 /* Twitch.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Twitch.html; sourceTree = "<group>"; };
D0EFF2CE2319838700CF5164 /* Vimeo.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Vimeo.html; sourceTree = "<group>"; };
D0EFF2CF2319838700CF5164 /* Instagram.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Instagram.html; sourceTree = "<group>"; };
D0EFF2D02319838700CF5164 /* Generic.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = Generic.html; sourceTree = "<group>"; };
D0EFF2D12319838700CF5164 /* GenericUserScript.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = GenericUserScript.js; sourceTree = "<group>"; };
D0EFF2D22319838700CF5164 /* YoutubeUserScript.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = YoutubeUserScript.js; sourceTree = "<group>"; };
D0EFF2D42319838700CF5164 /* SFCompactRounded-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SFCompactRounded-Semibold.otf"; sourceTree = "<group>"; };
D0EFF329231983BF00CF5164 /* MessageSent.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MessageSent.caf; sourceTree = "<group>"; };
D0EFF32A231983BF00CF5164 /* notification.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = notification.caf; sourceTree = "<group>"; };
D0EFF32E23198D3200CF5164 /* NavigationBackArrowLight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "NavigationBackArrowLight@2x.png"; path = "Telegram-iOS/Resources/NavigationBackArrowLight@2x.png"; sourceTree = "<group>"; };
D0EFF32F23198D3200CF5164 /* NavigationShadow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "NavigationShadow@2x.png"; path = "Telegram-iOS/Resources/NavigationShadow@2x.png"; sourceTree = "<group>"; };
D0F575122083B96B00F1C1E1 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; };
D0FC1947201D2DA700FEDBB2 /* SFCompactRounded-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "SFCompactRounded-Semibold.otf"; path = "Telegram-iOS/Resources/SFCompactRounded-Semibold.otf"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -1369,18 +1538,6 @@
name = "App Icons";
sourceTree = "<group>";
};
09C50E7821738150009E676F /* Watch */ = {
isa = PBXGroup;
children = (
0956AF2B217B4642008106D0 /* WatchCommunicationManager.swift */,
09C50E892173AEDB009E676F /* WatchRequestHandlers.swift */,
09D304212174335F00C00567 /* WatchBridge.swift */,
09C50E7921738178009E676F /* TGBridgeServer.h */,
09C50E7A21738178009E676F /* TGBridgeServer.m */,
);
name = Watch;
sourceTree = "<group>";
};
09C56F8C2172797200BDF00F /* Watch */ = {
isa = PBXGroup;
children = (
@ -1945,13 +2102,12 @@
children = (
09A218E122A14E5600DE6898 /* App Icons */,
D0338729223A8347007A2CE4 /* Config */,
09C50E7821738150009E676F /* Watch */,
D021D4D8219CAEDD0064BEBA /* Config-Fork.xcconfig */,
D0ADF913212B398000310BBC /* Telegram-iOS-AppStoreLLC.entitlements */,
D079FD001F06BBD10038FADE /* Telegram-iOS-AppStore.entitlements */,
D0E3A7071B285B5000A402D9 /* Telegram-iOS-Hockeyapp.entitlements */,
D021D4D7219CAEDD0064BEBA /* Telegram-iOS-Fork.entitlements */,
D00859A81B28189D00EAF753 /* Images.xcassets */,
D00859A81B28189D00EAF753 /* Icons.xcassets */,
D00859AA1B28189D00EAF753 /* LaunchScreen.xib */,
D008599F1B28189D00EAF753 /* Supporting Files */,
);
@ -2085,14 +2241,27 @@
D023EBB31DDB2F0E00BD496D /* Resources */ = {
isa = PBXGroup;
children = (
D0EFF32E23198D3200CF5164 /* NavigationBackArrowLight@2x.png */,
D0EFF32F23198D3200CF5164 /* NavigationShadow@2x.png */,
D0EFF328231983BF00CF5164 /* Sounds */,
D0EFF2B72319838700CF5164 /* Animations */,
D0EFF2802319838500CF5164 /* BuiltinReactions */,
D0EFF28D2319838600CF5164 /* ChatWallpaperBuiltin0.jpg */,
D0EFF27E2319838500CF5164 /* currencies.json */,
D0EFF27F2319838500CF5164 /* Emoji.mapping */,
D0EFF2D32319838700CF5164 /* Fonts */,
D0EFF27D2319838400CF5164 /* PhoneCountries.txt */,
D0EFF2C82319838700CF5164 /* PresentationStrings.mapping */,
D0EFF28E2319838600CF5164 /* Stripe */,
D0EFF2C92319838700CF5164 /* WebEmbed */,
D0EFF27B2319835A00CF5164 /* Images.xcassets */,
D01748C6231976B100AF3D3A /* LegacyComponentsResources.bundle */,
D0E8B8AC2044496C00605593 /* voip_busy.caf */,
D0E8B8A82044496B00605593 /* voip_connecting.mp3 */,
D0E8B8A92044496C00605593 /* voip_end.caf */,
D0E8B8AA2044496C00605593 /* voip_fail.caf */,
D0E8B8AB2044496C00605593 /* voip_ringback.caf */,
D0FC1947201D2DA700FEDBB2 /* SFCompactRounded-Semibold.otf */,
D0CFBB921FD88C2900B65C0D /* begin_record.caf */,
D001D5A91F878DA300DF975A /* PhoneCountries.txt */,
D04DCC0A1F71C80000B021D7 /* notifications */,
D050F21B1E49DEDE00988324 /* intro */,
);
@ -2480,6 +2649,134 @@
path = "Telegram-iOS UITests";
sourceTree = "<group>";
};
D0EFF2802319838500CF5164 /* BuiltinReactions */ = {
isa = PBXGroup;
children = (
D0EFF2812319838500CF5164 /* lol.tgs */,
D0EFF2822319838500CF5164 /* thumbsup.tgs */,
D0EFF2832319838500CF5164 /* poker.tgs */,
D0EFF2842319838500CF5164 /* cry.tgs */,
D0EFF2852319838500CF5164 /* meh.tgs */,
D0EFF2862319838500CF5164 /* sad.tgs */,
D0EFF2872319838500CF5164 /* surprised.tgs */,
D0EFF2882319838500CF5164 /* ok.tgs */,
D0EFF2892319838500CF5164 /* heart.tgs */,
D0EFF28A2319838500CF5164 /* poop.tgs */,
D0EFF28B2319838600CF5164 /* celebrate.tgs */,
D0EFF28C2319838600CF5164 /* smile.tgs */,
);
name = BuiltinReactions;
path = submodules/TelegramUI/TelegramUI/Resources/BuiltinReactions;
sourceTree = "<group>";
};
D0EFF28E2319838600CF5164 /* Stripe */ = {
isa = PBXGroup;
children = (
D0EFF28F2319838600CF5164 /* stp_card_visa_template@3x.png */,
D0EFF2902319838600CF5164 /* stp_card_form_back@3x.png */,
D0EFF2912319838600CF5164 /* stp_card_amex@3x.png */,
D0EFF2922319838600CF5164 /* stp_card_diners@2x.png */,
D0EFF2932319838600CF5164 /* stp_card_diners_template@2x.png */,
D0EFF2942319838600CF5164 /* stp_card_amex_template@3x.png */,
D0EFF2952319838600CF5164 /* stp_card_diners_template@3x.png */,
D0EFF2962319838600CF5164 /* stp_card_amex_template@2x.png */,
D0EFF2972319838600CF5164 /* stp_card_diners@3x.png */,
D0EFF2982319838600CF5164 /* stp_card_amex@2x.png */,
D0EFF2992319838600CF5164 /* stp_card_form_back@2x.png */,
D0EFF29A2319838600CF5164 /* stp_card_visa_template@2x.png */,
D0EFF29B2319838600CF5164 /* stp_card_form_front@2x.png */,
D0EFF29C2319838600CF5164 /* stp_card_applepay_template@2x.png */,
D0EFF29D2319838600CF5164 /* stp_card_cvc_amex@3x.png */,
D0EFF29E2319838600CF5164 /* stp_card_discover@3x.png */,
D0EFF29F2319838600CF5164 /* stp_card_cvc@2x.png */,
D0EFF2A02319838600CF5164 /* stp_card_jcb_template@3x.png */,
D0EFF2A12319838600CF5164 /* stp_card_jcb@3x.png */,
D0EFF2A22319838600CF5164 /* stp_card_jcb@2x.png */,
D0EFF2A32319838600CF5164 /* stp_card_cvc@3x.png */,
D0EFF2A42319838600CF5164 /* stp_card_jcb_template@2x.png */,
D0EFF2A52319838600CF5164 /* stp_card_discover@2x.png */,
D0EFF2A62319838600CF5164 /* stp_card_cvc_amex@2x.png */,
D0EFF2A72319838600CF5164 /* stp_card_applepay_template@3x.png */,
D0EFF2A82319838600CF5164 /* stp_card_form_front@3x.png */,
D0EFF2A92319838600CF5164 /* stp_card_visa@3x.png */,
D0EFF2AA2319838600CF5164 /* stp_card_placeholder_template@3x.png */,
D0EFF2AB2319838600CF5164 /* stp_card_applepay@2x.png */,
D0EFF2AC2319838600CF5164 /* stp_card_applepay@3x.png */,
D0EFF2AD2319838600CF5164 /* stp_card_placeholder_template@2x.png */,
D0EFF2AE2319838600CF5164 /* stp_card_visa@2x.png */,
D0EFF2AF2319838600CF5164 /* stp_card_mastercard_template@3x.png */,
D0EFF2B02319838600CF5164 /* stp_card_discover_template@2x.png */,
D0EFF2B12319838600CF5164 /* stp_card_form_applepay@3x.png */,
D0EFF2B22319838600CF5164 /* stp_card_mastercard@2x.png */,
D0EFF2B32319838600CF5164 /* stp_card_mastercard@3x.png */,
D0EFF2B42319838600CF5164 /* stp_card_discover_template@3x.png */,
D0EFF2B52319838600CF5164 /* stp_card_form_applepay@2x.png */,
D0EFF2B62319838600CF5164 /* stp_card_mastercard_template@2x.png */,
);
name = Stripe;
path = submodules/TelegramUI/TelegramUI/Resources/Stripe;
sourceTree = "<group>";
};
D0EFF2B72319838700CF5164 /* Animations */ = {
isa = PBXGroup;
children = (
D0EFF2B82319838700CF5164 /* anim_read.json */,
D0EFF2B92319838700CF5164 /* anim_archive.json */,
D0EFF2BA2319838700CF5164 /* anim_pin.json */,
D0EFF2BB2319838700CF5164 /* anim_infotip.json */,
D0EFF2BC2319838700CF5164 /* anim_unmute.json */,
D0EFF2BD2319838700CF5164 /* anim_unpin.json */,
D0EFF2BE2319838700CF5164 /* anim_success.json */,
D0EFF2BF2319838700CF5164 /* anim_unread.json */,
D0EFF2C02319838700CF5164 /* anim_archiveswipe.json */,
D0EFF2C12319838700CF5164 /* anim_delete.json */,
D0EFF2C22319838700CF5164 /* anim_archiveAvatar.json */,
D0EFF2C32319838700CF5164 /* anim_unarchive.json */,
D0EFF2C42319838700CF5164 /* anim_ungroup.json */,
D0EFF2C52319838700CF5164 /* anim_hide.json */,
D0EFF2C62319838700CF5164 /* anim_group.json */,
D0EFF2C72319838700CF5164 /* anim_mute.json */,
);
name = Animations;
path = submodules/TelegramUI/TelegramUI/Resources/Animations;
sourceTree = "<group>";
};
D0EFF2C92319838700CF5164 /* WebEmbed */ = {
isa = PBXGroup;
children = (
D0EFF2CA2319838700CF5164 /* VimeoUserScript.js */,
D0EFF2CB2319838700CF5164 /* TwitchUserScript.js */,
D0EFF2CC2319838700CF5164 /* Youtube.html */,
D0EFF2CD2319838700CF5164 /* Twitch.html */,
D0EFF2CE2319838700CF5164 /* Vimeo.html */,
D0EFF2CF2319838700CF5164 /* Instagram.html */,
D0EFF2D02319838700CF5164 /* Generic.html */,
D0EFF2D12319838700CF5164 /* GenericUserScript.js */,
D0EFF2D22319838700CF5164 /* YoutubeUserScript.js */,
);
name = WebEmbed;
path = submodules/TelegramUI/TelegramUI/Resources/WebEmbed;
sourceTree = "<group>";
};
D0EFF2D32319838700CF5164 /* Fonts */ = {
isa = PBXGroup;
children = (
D0EFF2D42319838700CF5164 /* SFCompactRounded-Semibold.otf */,
);
name = Fonts;
path = submodules/TelegramUI/TelegramUI/Resources/Fonts;
sourceTree = "<group>";
};
D0EFF328231983BF00CF5164 /* Sounds */ = {
isa = PBXGroup;
children = (
D0EFF329231983BF00CF5164 /* MessageSent.caf */,
D0EFF32A231983BF00CF5164 /* notification.caf */,
);
name = Sounds;
path = submodules/TelegramUI/TelegramUI/Sounds;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -2827,21 +3124,32 @@
buildActionMask = 2147483647;
files = (
D0CE6F6B213EDA4400BCD44B /* InfoPlist.strings in Resources */,
D0EFF2E02319838800CF5164 /* heart.tgs in Resources */,
D08DB0AC213F4D1D00F2ADBF /* ic_bubble_dot@2x.png in Resources */,
D08DB0B0213F4D1D00F2ADBF /* ic_pin@2x.png in Resources */,
D04DCC211F71C80000B021D7 /* 0.m4a in Resources */,
D04DCC261F71C80000B021D7 /* 103.m4a in Resources */,
09A218F222A1570A00DE6898 /* BlueFilledIcon@2x.png in Resources */,
D0EFF2EC2319838800CF5164 /* stp_card_amex_template@2x.png in Resources */,
D0EFF30B2319838800CF5164 /* stp_card_form_applepay@2x.png in Resources */,
D0EFF2F52319838800CF5164 /* stp_card_cvc@2x.png in Resources */,
09E9600922C23FF200B13673 /* BlueNotificationIcon.png in Resources */,
D0EFF30F2319838800CF5164 /* anim_pin.json in Resources */,
090E777722A6945900CD99F5 /* BlueClassicIcon@2x.png in Resources */,
D0CE6F69213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */,
D08DB0C0213F4D1D00F2ADBF /* telegram_sphere@2x.png in Resources */,
D0EFF3062319838800CF5164 /* stp_card_discover_template@2x.png in Resources */,
D08DB0AB213F4D1D00F2ADBF /* ic_bubble@2x.png in Resources */,
D0EFF32C231983BF00CF5164 /* notification.caf in Resources */,
D04DCC341F71C80000B021D7 /* 7.m4a in Resources */,
09E9600722C23FF200B13673 /* BlackNotificationIcon@3x.png in Resources */,
09EBE2A522B004EA00F670AB /* BlueFilledIconIpad.png in Resources */,
094DDF5C22E8C310004B0256 /* AppIntentVocabulary.plist in Resources */,
094DDF3C22E7A98E004B0256 /* Localizable.strings in Resources */,
D0EFF2F62319838800CF5164 /* stp_card_jcb_template@3x.png in Resources */,
D0EFF2D92319838800CF5164 /* thumbsup.tgs in Resources */,
D0EFF3022319838800CF5164 /* stp_card_applepay@3x.png in Resources */,
D0EFF2E62319838800CF5164 /* stp_card_form_back@3x.png in Resources */,
094DDF3422E7A61B004B0256 /* AppIntentVocabulary.plist in Resources */,
D0CE6F60213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */,
D0CE6F63213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */,
@ -2855,21 +3163,40 @@
D0CE6F68213EDA4400BCD44B /* InfoPlist.strings in Resources */,
09A218EE22A1570A00DE6898 /* BlueFilledIcon@3x.png in Resources */,
09E9600C22C23FF200B13673 /* BlueNotificationIcon@3x.png in Resources */,
D0EFF2FE2319838800CF5164 /* stp_card_form_front@3x.png in Resources */,
09E9601422C2441000B13673 /* BlackClassicNotificationIcon@3x.png in Resources */,
D0CE6F6A213EDA4400BCD44B /* Localizable.strings in Resources */,
D0EFF3132319838800CF5164 /* anim_success.json in Resources */,
D0EFF3212319838800CF5164 /* Twitch.html in Resources */,
D0EFF2FF2319838800CF5164 /* stp_card_visa@3x.png in Resources */,
D0EFF2F02319838800CF5164 /* stp_card_visa_template@2x.png in Resources */,
09A4193522B7A4D500637EB4 /* BlackClassicIconIpad@2x.png in Resources */,
D0EFF3122319838800CF5164 /* anim_unpin.json in Resources */,
D0EFF3112319838800CF5164 /* anim_unmute.json in Resources */,
D0EFF2E32319838800CF5164 /* smile.tgs in Resources */,
D0EFF3142319838800CF5164 /* anim_unread.json in Resources */,
09E9601622C2441000B13673 /* BlueClassicNotificationIcon@2x.png in Resources */,
D0EFF2D52319838800CF5164 /* PhoneCountries.txt in Resources */,
09E9601322C2441000B13673 /* BlackClassicNotificationIcon@2x.png in Resources */,
D0EFF3052319838800CF5164 /* stp_card_mastercard_template@3x.png in Resources */,
D0E8C2DE2285EA55009F26E8 /* BlackIcon@2x.png in Resources */,
D0EFF3272319838800CF5164 /* SFCompactRounded-Semibold.otf in Resources */,
D09DCBB71D0C856B00F51FFE /* Localizable.strings in Resources */,
094DDF5722E8C310004B0256 /* Localizable.strings in Resources */,
D0EFF2E92319838800CF5164 /* stp_card_diners_template@2x.png in Resources */,
D0CE6F66213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */,
D0EFF2E72319838800CF5164 /* stp_card_amex@3x.png in Resources */,
D08DB0B8213F4D1D00F2ADBF /* powerful_mask@2x.png in Resources */,
D08DB0B4213F4D1D00F2ADBF /* knot_down@2x.png in Resources */,
D0EFF2DB2319838800CF5164 /* cry.tgs in Resources */,
D0EFF2F72319838800CF5164 /* stp_card_jcb@3x.png in Resources */,
094DDF4822E7A9A8004B0256 /* AppIntentVocabulary.plist in Resources */,
09EC5CDA22CBBF9600292E42 /* telegram_plane1@2x.png in Resources */,
D0EFF3082319838800CF5164 /* stp_card_mastercard@2x.png in Resources */,
D08DB0BC213F4D1D00F2ADBF /* start_arrow@2x.png in Resources */,
D0EFF2FB2319838800CF5164 /* stp_card_discover@2x.png in Resources */,
D08DB0B6213F4D1D00F2ADBF /* powerful_infinity@2x.png in Resources */,
D0EFF3042319838800CF5164 /* stp_card_visa@2x.png in Resources */,
094DDF5B22E8C310004B0256 /* InfoPlist.strings in Resources */,
09EBE2AA22B004EA00F670AB /* BlueIconLargeIpad@2x.png in Resources */,
D0CE6F5B213EDA4400BCD44B /* Localizable.strings in Resources */,
@ -2877,10 +3204,13 @@
094DDF5922E8C310004B0256 /* AppIntentVocabulary.plist in Resources */,
09A4193422B7A4D500637EB4 /* BlackClassicIconIpad.png in Resources */,
094DDF4622E7A9A8004B0256 /* Localizable.strings in Resources */,
D0EFF27C2319835B00CF5164 /* Images.xcassets in Resources */,
09A4193222B7A4D500637EB4 /* BlueClassicIconIpad.png in Resources */,
D0EFF2D82319838800CF5164 /* lol.tgs in Resources */,
D0CE6F62213EDA4400BCD44B /* InfoPlist.strings in Resources */,
D08DB0A8213F4D1D00F2ADBF /* fast_arrow_shadow@2x.png in Resources */,
D0CFBB931FD88C2900B65C0D /* begin_record.caf in Resources */,
D0EFF3002319838800CF5164 /* stp_card_placeholder_template@3x.png in Resources */,
D04DCC2C1F71C80000B021D7 /* 109.m4a in Resources */,
D08DB0BD213F4D1D00F2ADBF /* start_arrow_ipad.png in Resources */,
09EBE2AB22B004EA00F670AB /* BlackIconLargeIpad@2x.png in Resources */,
@ -2888,92 +3218,146 @@
D0CE6F64213EDA4400BCD44B /* Localizable.strings in Resources */,
D0CE6F6C213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */,
094DDF3E22E7A98E004B0256 /* AppIntentVocabulary.plist in Resources */,
D0EFF3252319838800CF5164 /* GenericUserScript.js in Resources */,
094DDF3D22E7A98E004B0256 /* InfoPlist.strings in Resources */,
D04DCC231F71C80000B021D7 /* 100.m4a in Resources */,
D0EFF2EF2319838800CF5164 /* stp_card_form_back@2x.png in Resources */,
D0EFF33123198D3200CF5164 /* NavigationShadow@2x.png in Resources */,
D0EFF31D2319838800CF5164 /* PresentationStrings.mapping in Resources */,
D0EFF2EE2319838800CF5164 /* stp_card_amex@2x.png in Resources */,
09E9600A22C23FF200B13673 /* BlueNotificationIcon@2x.png in Resources */,
094DDF3222E7A61B004B0256 /* Localizable.strings in Resources */,
09A218EF22A1570A00DE6898 /* BlueIcon@2x.png in Resources */,
D04DCC281F71C80000B021D7 /* 105.m4a in Resources */,
D0EFF32B231983BF00CF5164 /* MessageSent.caf in Resources */,
D08DB0BB213F4D1D00F2ADBF /* private_screw@2x.png in Resources */,
D0CE6F5F213EDA4400BCD44B /* InfoPlist.strings in Resources */,
D0EFF2EA2319838800CF5164 /* stp_card_amex_template@3x.png in Resources */,
D04DCC2D1F71C80000B021D7 /* 110.m4a in Resources */,
094DDF5A22E8C310004B0256 /* Localizable.strings in Resources */,
D0EFF2DF2319838800CF5164 /* ok.tgs in Resources */,
D04DCC2B1F71C80000B021D7 /* 108.m4a in Resources */,
D00859AC1B28189D00EAF753 /* LaunchScreen.xib in Resources */,
D08DB0B5213F4D1D00F2ADBF /* knot_up1@2x.png in Resources */,
D0E8B8AD2044496C00605593 /* voip_connecting.mp3 in Resources */,
D0EFF31F2319838800CF5164 /* TwitchUserScript.js in Resources */,
D0EFF2F42319838800CF5164 /* stp_card_discover@3x.png in Resources */,
D08DB0BE213F4D1D00F2ADBF /* start_arrow_ipad@2x.png in Resources */,
D08DB0A9213F4D1D00F2ADBF /* fast_body@2x.png in Resources */,
D04DCC321F71C80000B021D7 /* 5.m4a in Resources */,
D04DCC241F71C80000B021D7 /* 101.m4a in Resources */,
09A4193122B7A4D500637EB4 /* BlackClassicIconLargeIpad@2x.png in Resources */,
D0EFF3262319838800CF5164 /* YoutubeUserScript.js in Resources */,
D0EFF2E42319838800CF5164 /* ChatWallpaperBuiltin0.jpg in Resources */,
D04DCC351F71C80000B021D7 /* 8.m4a in Resources */,
D0EFF3182319838800CF5164 /* anim_unarchive.json in Resources */,
D0EFF2DA2319838800CF5164 /* poker.tgs in Resources */,
D08DB0B1213F4D1D00F2ADBF /* ic_smile@2x.png in Resources */,
D0EFF3102319838800CF5164 /* anim_infotip.json in Resources */,
D0EFF2DC2319838800CF5164 /* meh.tgs in Resources */,
09EBE2A722B004EA00F670AB /* BlueIconIpad.png in Resources */,
D0EFF33023198D3200CF5164 /* NavigationBackArrowLight@2x.png in Resources */,
D0CE6F57213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */,
D0EFF2FD2319838800CF5164 /* stp_card_applepay_template@3x.png in Resources */,
D0CE6F59213EDA4400BCD44B /* InfoPlist.strings in Resources */,
D08DB0B9213F4D1D00F2ADBF /* powerful_star@2x.png in Resources */,
D04DCC271F71C80000B021D7 /* 104.m4a in Resources */,
09E9600B22C23FF200B13673 /* BlackNotificationIcon@2x.png in Resources */,
090E777522A6945900CD99F5 /* BlueClassicIcon@3x.png in Resources */,
D0EFF2F92319838800CF5164 /* stp_card_cvc@3x.png in Resources */,
D0EFF2FA2319838800CF5164 /* stp_card_jcb_template@2x.png in Resources */,
D0EFF2F12319838800CF5164 /* stp_card_form_front@2x.png in Resources */,
09A218F122A1570A00DE6898 /* BlackFilledIcon@3x.png in Resources */,
D04DCC2A1F71C80000B021D7 /* 107.m4a in Resources */,
D08DB0BA213F4D1D00F2ADBF /* private_door@2x.png in Resources */,
D0EFF2E52319838800CF5164 /* stp_card_visa_template@3x.png in Resources */,
09A218F022A1570A00DE6898 /* BlackFilledIcon@2x.png in Resources */,
D0EFF30C2319838800CF5164 /* stp_card_mastercard_template@2x.png in Resources */,
D08DB0AE213F4D1D00F2ADBF /* ic_cam_lens@2x.png in Resources */,
D0EFF3192319838800CF5164 /* anim_ungroup.json in Resources */,
D0EFF30D2319838800CF5164 /* anim_read.json in Resources */,
D0EFF2D72319838800CF5164 /* Emoji.mapping in Resources */,
D0EFF3202319838800CF5164 /* Youtube.html in Resources */,
09A218F322A1570A00DE6898 /* BlueIcon@3x.png in Resources */,
D0EFF2F32319838800CF5164 /* stp_card_cvc_amex@3x.png in Resources */,
D0EFF2D62319838800CF5164 /* currencies.json in Resources */,
D04DCC2F1F71C80000B021D7 /* 2.m4a in Resources */,
D0EFF2DE2319838800CF5164 /* surprised.tgs in Resources */,
09EBE2AC22B004EA00F670AB /* BlackIconIpad.png in Resources */,
D0EFF2E12319838800CF5164 /* poop.tgs in Resources */,
D0EFF31B2319838800CF5164 /* anim_group.json in Resources */,
09EBE2B022B004EA00F670AB /* BlueFilledIconLargeIpad@2x.png in Resources */,
D0EFF3222319838800CF5164 /* Vimeo.html in Resources */,
D0EFF2E22319838800CF5164 /* celebrate.tgs in Resources */,
D0CE6F58213EDA4400BCD44B /* Localizable.strings in Resources */,
D08DB0AF213F4D1D00F2ADBF /* ic_pencil@2x.png in Resources */,
094DDF5822E8C310004B0256 /* InfoPlist.strings in Resources */,
D0EFF2DD2319838800CF5164 /* sad.tgs in Resources */,
09E9601822C2441000B13673 /* BlueClassicNotificationIcon@3x.png in Resources */,
D01748C7231976B200AF3D3A /* LegacyComponentsResources.bundle in Resources */,
D0CE6F67213EDA4400BCD44B /* Localizable.strings in Resources */,
D0EFF3242319838800CF5164 /* Generic.html in Resources */,
09A4193322B7A4D500637EB4 /* BlueClassicIconLargeIpad@2x.png in Resources */,
D04DCC291F71C80000B021D7 /* 106.m4a in Resources */,
D0CE6F5E213EDA4400BCD44B /* Localizable.strings in Resources */,
D052974622B0073F004ABAF6 /* WhiteFilledIcon@3x.png in Resources */,
D08DB0B7213F4D1D00F2ADBF /* powerful_infinity_white@2x.png in Resources */,
D00859A91B28189D00EAF753 /* Images.xcassets in Resources */,
D00859A91B28189D00EAF753 /* Icons.xcassets in Resources */,
094DDF0922E7A0D3004B0256 /* InfoPlist.strings in Resources */,
D001D5AA1F878DA300DF975A /* PhoneCountries.txt in Resources */,
D0EFF3172319838800CF5164 /* anim_archiveAvatar.json in Resources */,
D0EFF3092319838800CF5164 /* stp_card_mastercard@3x.png in Resources */,
D0EFF2F22319838800CF5164 /* stp_card_applepay_template@2x.png in Resources */,
094DDF0822E7A0D3004B0256 /* Localizable.strings in Resources */,
094DDF4722E7A9A8004B0256 /* InfoPlist.strings in Resources */,
D0CE6F56213EDA4400BCD44B /* InfoPlist.strings in Resources */,
D0CE6F65213EDA4400BCD44B /* InfoPlist.strings in Resources */,
D0EFF31E2319838800CF5164 /* VimeoUserScript.js in Resources */,
D0E8B8B12044496C00605593 /* voip_busy.caf in Resources */,
D0EFF3072319838800CF5164 /* stp_card_form_applepay@3x.png in Resources */,
D0EFF3152319838800CF5164 /* anim_archiveswipe.json in Resources */,
D0EFF3032319838800CF5164 /* stp_card_placeholder_template@2x.png in Resources */,
09EBE2A622B004EA00F670AB /* BlueIconIpad@2x.png in Resources */,
D08DB0A7213F4D1D00F2ADBF /* fast_arrow@2x.png in Resources */,
094DDF0A22E7A0D3004B0256 /* AppIntentVocabulary.plist in Resources */,
D0E8B8AF2044496C00605593 /* voip_fail.caf in Resources */,
D0CE6F55213EDA4400BCD44B /* Localizable.strings in Resources */,
D0EFF2E82319838800CF5164 /* stp_card_diners@2x.png in Resources */,
D08DB0B2213F4D1D00F2ADBF /* ic_smile_eye@2x.png in Resources */,
D08DB0B3213F4D1D00F2ADBF /* ic_videocam@2x.png in Resources */,
D04DCC2E1F71C80000B021D7 /* 111.m4a in Resources */,
D08DB0AA213F4D1D00F2ADBF /* fast_spiral@2x.png in Resources */,
D0EFF2EB2319838800CF5164 /* stp_card_diners_template@3x.png in Resources */,
D0CE6F5C213EDA4400BCD44B /* InfoPlist.strings in Resources */,
D052974722B0073F004ABAF6 /* WhiteFilledIcon@2x.png in Resources */,
D0CE6F5D213EDA4400BCD44B /* AppIntentVocabulary.plist in Resources */,
D0CE6F61213EDA4400BCD44B /* Localizable.strings in Resources */,
D04DCC311F71C80000B021D7 /* 4.m4a in Resources */,
D0FC1948201D2DA800FEDBB2 /* SFCompactRounded-Semibold.otf in Resources */,
D0EFF31C2319838800CF5164 /* anim_mute.json in Resources */,
D04DCC331F71C80000B021D7 /* 6.m4a in Resources */,
D04DCC251F71C80000B021D7 /* 102.m4a in Resources */,
09EBE2A822B004EA00F670AB /* BlackFilledIconIpad@2x.png in Resources */,
D021D4D9219CAEDD0064BEBA /* Config-Fork.xcconfig in Resources */,
D0EFF31A2319838800CF5164 /* anim_hide.json in Resources */,
D08DB0AD213F4D1D00F2ADBF /* ic_cam@2x.png in Resources */,
D0EFF3232319838800CF5164 /* Instagram.html in Resources */,
D0EFF30E2319838800CF5164 /* anim_archive.json in Resources */,
094DDF3322E7A61B004B0256 /* InfoPlist.strings in Resources */,
090E777622A6945900CD99F5 /* BlackClassicIcon@3x.png in Resources */,
D0E8B8B02044496C00605593 /* voip_ringback.caf in Resources */,
09E9600822C23FF200B13673 /* BlackNotificationIcon.png in Resources */,
D0EFF2ED2319838800CF5164 /* stp_card_diners@3x.png in Resources */,
D0EFF2F82319838800CF5164 /* stp_card_jcb@2x.png in Resources */,
D0EFF3012319838800CF5164 /* stp_card_applepay@2x.png in Resources */,
09EBE2A922B004EA00F670AB /* BlackFilledIconLargeIpad@2x.png in Resources */,
D0EFF30A2319838800CF5164 /* stp_card_discover_template@3x.png in Resources */,
090E777422A6945900CD99F5 /* BlackClassicIcon@2x.png in Resources */,
D0EFF2FC2319838800CF5164 /* stp_card_cvc_amex@2x.png in Resources */,
D00ED75A1FE94630001F38BD /* AppIntentVocabulary.plist in Resources */,
D04DCC221F71C80000B021D7 /* 1.m4a in Resources */,
09EBE2AD22B004EA00F670AB /* BlackFilledIconIpad.png in Resources */,
09E9601522C2441000B13673 /* BlueClassicNotificationIcon.png in Resources */,
D0E8C2E02285EA6A009F26E8 /* BlackIcon@3x.png in Resources */,
D0EFF3162319838800CF5164 /* anim_delete.json in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@ -63,6 +63,9 @@
<Group
location = "container:"
name = "Utils">
<FileRef
location = "group:submodules/AppBundle/AppBundle_Xcode.xcodeproj">
</FileRef>
<FileRef
location = "group:submodules/AccountContext/AccountContext_Xcode.xcodeproj">
</FileRef>
@ -180,7 +183,7 @@
location = "container:"
name = "Image Processing">
<FileRef
location = "group:submodules/YuvConversion/YuvConversion.xcodeproj">
location = "group:submodules/YuvConversion/YuvConversion_Xcode.xcodeproj">
</FileRef>
<FileRef
location = "group:submodules/ImageBlur/ImageBlur_Xcode.xcodeproj">

View File

Before

Width:  |  Height:  |  Size: 370 KiB

After

Width:  |  Height:  |  Size: 370 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -185,7 +185,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>5.11</string>
<string>5.12</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@ -356,5 +356,10 @@
</dict>
</dict>
</array>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
</dict>
</plist>

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,232 +0,0 @@
1876;JM;Jamaica
1869;KN;Saint Kitts & Nevis
1868;TT;Trinidad & Tobago
1784;VC;Saint Vincent & the Grenadines
1767;DM;Dominica
1758;LC;Saint Lucia
1721;SX;Sint Maarten
1684;AS;American Samoa
1671;GU;Guam
1670;MP;Northern Mariana Islands
1664;MS;Montserrat
1649;TC;Turks & Caicos Islands
1473;GD;Grenada
1441;BM;Bermuda
1345;KY;Cayman Islands
1340;VI;US Virgin Islands
1284;VG;British Virgin Islands
1268;AG;Antigua & Barbuda
1264;AI;Anguilla
1246;BB;Barbados
1242;BS;Bahamas
998;UZ;Uzbekistan
996;KG;Kyrgyzstan
995;GE;Georgia
994;AZ;Azerbaijan
993;TM;Turkmenistan
992;TJ;Tajikistan
977;NP;Nepal
976;MN;Mongolia
975;BT;Bhutan
974;QA;Qatar
973;BH;Bahrain
972;IL;Israel
971;AE;United Arab Emirates
970;PS;Palestine
968;OM;Oman
967;YE;Yemen
966;SA;Saudi Arabia
965;KW;Kuwait
964;IQ;Iraq
963;SY;Syrian Arab Republic
962;JO;Jordan
961;LB;Lebanon
960;MV;Maldives
886;TW;Taiwan
880;BD;Bangladesh
856;LA;Laos
855;KH;Cambodia
853;MO;Macau
852;HK;Hong Kong
850;KP;North Korea
692;MH;Marshall Islands
691;FM;Micronesia
690;TK;Tokelau
689;PF;French Polynesia
688;TV;Tuvalu
687;NC;New Caledonia
686;KI;Kiribati
685;WS;Samoa
683;NU;Niue
682;CK;Cook Islands
681;WF;Wallis & Futuna
680;PW;Palau
679;FJ;Fiji
678;VU;Vanuatu
677;SB;Solomon Islands
676;TO;Tonga
675;PG;Papua New Guinea
674;NR;Nauru
673;BN;Brunei Darussalam
672;NF;Norfolk Island
670;TL;Timor-Leste
599;BQ;Bonaire, Sint Eustatius & Saba
599;CW;Curaçao
598;UY;Uruguay
597;SR;Suriname
596;MQ;Martinique
595;PY;Paraguay
594;GF;French Guiana
593;EC;Ecuador
592;GY;Guyana
591;BO;Bolivia
590;GP;Guadeloupe
509;HT;Haiti
508;PM;Saint Pierre & Miquelon
507;PA;Panama
506;CR;Costa Rica
505;NI;Nicaragua
504;HN;Honduras
503;SV;El Salvador
502;GT;Guatemala
501;BZ;Belize
500;FK;Falkland Islands
423;LI;Liechtenstein
421;SK;Slovakia
420;CZ;Czech Republic
383;XK;Kosovo
389;MK;Macedonia
387;BA;Bosnia & Herzegovina
386;SI;Slovenia
385;HR;Croatia
382;ME;Montenegro
381;RS;Serbia
380;UA;Ukraine
378;SM;San Marino
377;MC;Monaco
376;AD;Andorra
375;BY;Belarus
374;AM;Armenia
373;MD;Moldova
372;EE;Estonia
371;LV;Latvia
370;LT;Lithuania
359;BG;Bulgaria
358;FI;Finland
357;CY;Cyprus
356;MT;Malta
355;AL;Albania
354;IS;Iceland
353;IE;Ireland
352;LU;Luxembourg
351;PT;Portugal
350;GI;Gibraltar
299;GL;Greenland
298;FO;Faroe Islands
297;AW;Aruba
291;ER;Eritrea
290;SH;Saint Helena
269;KM;Comoros
268;SZ;Swaziland
267;BW;Botswana
266;LS;Lesotho
265;MW;Malawi
264;NA;Namibia
263;ZW;Zimbabwe
262;RE;Réunion
261;MG;Madagascar
260;ZM;Zambia
258;MZ;Mozambique
257;BI;Burundi
256;UG;Uganda
255;TZ;Tanzania
254;KE;Kenya
253;DJ;Djibouti
252;SO;Somalia
251;ET;Ethiopia
250;RW;Rwanda
249;SD;Sudan
248;SC;Seychelles
247;SH;Saint Helena
246;IO;Diego Garcia
245;GW;Guinea-Bissau
244;AO;Angola
243;CD;Congo (Dem. Rep.)
242;CG;Congo (Rep.)
241;GA;Gabon
240;GQ;Equatorial Guinea
239;ST;São Tomé & Príncipe
238;CV;Cape Verde
237;CM;Cameroon
236;CF;Central African Rep.
235;TD;Chad
234;NG;Nigeria
233;GH;Ghana
232;SL;Sierra Leone
231;LR;Liberia
230;MU;Mauritius
229;BJ;Benin
228;TG;Togo
227;NE;Niger
226;BF;Burkina Faso
225;CI;Côte d`Ivoire
224;GN;Guinea
223;ML;Mali
222;MR;Mauritania
221;SN;Senegal
220;GM;Gambia
218;LY;Libya
216;TN;Tunisia
213;DZ;Algeria
212;MA;Morocco
211;SS;South Sudan
98;IR;Iran
95;MM;Myanmar
94;LK;Sri Lanka
93;AF;Afghanistan
92;PK;Pakistan
91;IN;India
90;TR;Turkey
86;CN;China
84;VN;Vietnam
82;KR;South Korea
81;JP;Japan
66;TH;Thailand
65;SG;Singapore
64;NZ;New Zealand
63;PH;Philippines
62;ID;Indonesia
61;AU;Australia
60;MY;Malaysia
58;VE;Venezuela
57;CO;Colombia
56;CL;Chile
55;BR;Brazil
54;AR;Argentina
53;CU;Cuba
52;MX;Mexico
51;PE;Peru
49;DE;Germany
48;PL;Poland
47;NO;Norway
46;SE;Sweden
45;DK;Denmark
44;GB;United Kingdom
43;AT;Austria
41;CH;Switzerland
40;RO;Romania
39;IT;Italy
36;HU;Hungary
34;ES;Spain
33;FR;France
32;BE;Belgium
31;NL;Netherlands
30;GR;Greece
27;ZA;South Africa
20;EG;Egypt
7;RU;Russian Federation
7;KZ;Kazakhstan
1;US;USA
1;PR;Puerto Rico
1;DO;Dominican Rep.
1;CA;Canada

View File

@ -30,7 +30,7 @@
</array>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)org.telegram.Telegram-iOS</string>
<string>X834Q8SBVP.org.telegram.Telegram-iOS</string>
</array>
</dict>
</plist>

View File

@ -218,6 +218,7 @@
"PUSH_CHAT_MESSAGE_VIDEOS" = "%1$@ sent %3$@ videos to the group %2$@";
"PUSH_REMINDER_TITLE" = "🗓 Reminder";
"PUSH_SENDER_YOU" = "📅 You";
"LOCAL_MESSAGE_FWDS" = "%1$@ forwarded you %2$d messages";
"LOCAL_CHANNEL_MESSAGE_FWDS" = "%1$@ posted %2$d forwarded messages";
@ -243,6 +244,7 @@
"Common.Search" = "Search";
"Common.More" = "More";
"Common.Select" = "Select";
"Items.NOfM" = "%1$@ of %2$@";
// State
"State.Connecting" = "Connecting...";
@ -309,6 +311,7 @@
"LastSeen.HoursAgo_0" = "last seen %@ hours ago";
"LastSeen.YesterdayAt" = "last seen yesterday at %@";
"LastSeen.AtDate" = "last seen %@";
"LastSeen.TodayAt" = "last seen today at %@";
"LastSeen.Lately" = "last seen recently";
"LastSeen.WithinAWeek" = "last seen within a week";
"LastSeen.WithinAMonth" = "last seen within a month";
@ -4679,7 +4682,8 @@ Any member of this group will be able to see messages in the channel.";
"EditTheme.Preview" = "CHAT PREVIEW";
"EditTheme.UploadNewTheme" = "Create from File...";
"EditTheme.UploadEditedTheme" = "Update from File...";
"EditTheme.ThemeTemplateAlert" = "New Theme Added\n\nPress and hold on your theme to edit it or get a sharing link. Users who install your theme will get automatic updates each time you change it.\n\nFor advanced editing purposes, you can find a file with your theme in Saved Messages.";
"EditTheme.ThemeTemplateAlertTitle" = "New Theme Added";
"EditTheme.ThemeTemplateAlertText" = "Press and hold on your theme to edit it or get a sharing link. Users who install your theme will get automatic updates each time you change it.\n\nFor advanced editing purposes, you can find a file with your theme in Saved Messages.";
"EditTheme.FileReadError" = "Invalid theme file";
"EditTheme.Create.TopInfo" = "The theme will be based on your currently selected colors and wallpaper.";
@ -4707,6 +4711,7 @@ Any member of this group will be able to see messages in the channel.";
"EditTheme.Edit.Preview.OutgoingText" = "Or upload a theme file";
"EditTheme.ErrorLinkTaken" = "Sorry, this link is already taken";
"EditTheme.ErrorInvalidCharacters" = "Sorry, this link is invalid.";
"Wallpaper.ErrorNotFound" = "Sorry, this chat background doesn't seem to exist.";
"Theme.ErrorNotFound" = "Sorry, this color theme doesn't seem to exist.";
@ -4720,3 +4725,27 @@ Any member of this group will be able to see messages in the channel.";
"Theme.UsersCount_0" = "%@ people are using this theme";
"Conversation.SendMessageErrorTooMuchScheduled" = "Sorry, you can not schedule more than 100 messages.";
"ChatList.Context.MarkAllAsRead" = "Mark All as Read";
"ChatList.Context.HideArchive" = "Hide Above the List";
"ChatList.Context.UnhideArchive" = "Pin in the list";
"ChatList.Context.RemoveFromRecents" = "Clear from Recents";
"ChatList.Context.AddToContacts" = "Add to Contacts";
"ChatList.Context.MarkAsRead" = "Mark as Read";
"ChatList.Context.MarkAsUnread" = "Mark as Unread";
"ChatList.Context.Archive" = "Archive";
"ChatList.Context.Unarchive" = "Unarchive";
"ChatList.Context.Pin" = "Pin";
"ChatList.Context.Unpin" = "Unpin";
"ChatList.Context.Mute" = "Mute";
"ChatList.Context.Unmute" = "Unmute";
"ChatList.Context.JoinChannel" = "Join Channel";
"ChatList.Context.Delete" = "Delete";
"ContactList.Context.SendMessage" = "Send Message";
"ContactList.Context.StartSecretChat" = "Start Secret Chat";
"ContactList.Context.Call" = "Cal";
"Theme.Context.Apply" = "Apply";
"Settings.Context.Logout" = "Logout";

View File

@ -8,7 +8,8 @@ int main(int argc, char *argv[]) {
sleep(1000);
void *NotificationService = dlopen([[basePath stringByAppendingPathComponent:@"PlugIns/NotificationService.appex/NotificationService"] UTF8String], RTLD_LAZY);
void *SiriIntents = dlopen([[basePath stringByAppendingPathComponent:@"PlugIns/SiriIntents.appex/SiriIntents"] UTF8String], RTLD_LAZY);
void *Widget = dlopen([[basePath stringByAppendingPathComponent:@"PlugIns/Widget.appex/Widget"] UTF8String], RTLD_LAZY);*/
void *Widget = dlopen([[basePath stringByAppendingPathComponent:@"PlugIns/Widget.appex/Widget"] UTF8String], RTLD_LAZY);
1*/
@autoreleasepool {
return UIApplicationMain(argc, argv, @"Application", @"AppDelegate");

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,8 @@
<?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>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?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>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
<false/>
</dict>
</plist>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "9999"
wasCreatedForAppExtension = "YES"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04ECA074AD000000000"
BuildableName = "IntentsExtension.appex"
BlueprintName = "IntentsExtension#iphonesimulator-x86_64"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "9999"
wasCreatedForAppExtension = "YES"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EF6E8B68700000000"
BuildableName = "NotificationContentExtension.appex"
BlueprintName = "NotificationContentExtension#iphonesimulator-x86_64"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "9999"
wasCreatedForAppExtension = "YES"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04E8C3D58C300000000"
BuildableName = "NotificationServiceExtension.appex"
BlueprintName = "NotificationServiceExtension#iphonesimulator-x86_64"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "9999"
wasCreatedForAppExtension = "YES"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EE64F555800000000"
BuildableName = "ShareExtension.appex"
BlueprintName = "ShareExtension#iphonesimulator-x86_64"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "9999"
wasCreatedForAppExtension = "YES"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04E86ED67FD00000000"
BuildableName = "WidgetExtension.appex"
BlueprintName = "WidgetExtension#iphonesimulator-x86_64"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Project.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

File diff suppressed because it is too large Load Diff

80
Temp/BUCK Normal file
View File

@ -0,0 +1,80 @@
load("//Config:configs.bzl",
"app_binary_configs",
"library_configs",
"app_info_plist_substitutions",
"DEVELOPMENT_LANGUAGE",
)
load("//Config:buck_rule_macros.bzl",
"framework_binary_dependencies",
"framework_bundle_dependencies",
"glob_map",
"glob_sub_map",
"merge_maps",
)
framework_dependencies = [
"//submodules/MtProtoKit:MtProtoKit",
#"//submodules/Emoji:Emoji",
]
apple_library(
name = "AppLibrary",
visibility = [
"//:",
"//...",
],
configs = library_configs(),
swift_version = native.read_config("swift", "version"),
srcs = [
"Telegram-iOS/main.m",
"Telegram-iOS/Application.swift"
],
deps = [
"//submodules/MtProtoKit:MtProtoKitFramework",
]
)
apple_binary(
name = "AppBinary",
visibility = [
"//:",
"//...",
],
configs = app_binary_configs(),
swift_version = native.read_config("swift", "version"),
srcs = [
"Empty.swift",
],
deps = [
":AppLibrary",
]
)
apple_bundle(
name = "Telegram",
visibility = [
"//:",
],
extension = "app",
binary = ":AppBinary",
product_name = "Telegram",
info_plist = "Telegram-iOS/Info.plist",
info_plist_substitutions = app_info_plist_substitutions(),
deps = [
"//submodules/MtProtoKit:MtProtoKitFramework",
]
)
# Package
apple_package(
name = "AppPackage",
bundle = ":Telegram",
)
xcode_workspace_config(
name = "workspace",
workspace_name = "Telegram_Buck",
src_target = ":Telegram",
)

1
Temp/Empty.swift Normal file
View File

@ -0,0 +1 @@

View File

@ -0,0 +1,5 @@
import UIKit
@objc(Application) class Application: UIApplication {
}

View File

@ -0,0 +1,365 @@
<?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>CFBundleAllowMixedLocalizations</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${APP_NAME}</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>Black</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlackIcon</string>
<string>BlackNotificationIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>BlackClassic</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlackClassicIcon</string>
<string>BlackClassicNotificationIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>BlackFilled</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlackFilledIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>Blue</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlueIcon</string>
<string>BlueNotificationIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>BlueClassic</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlueClassicIcon</string>
<string>BlueClassicNotificationIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>BlueFilled</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlueFilledIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>WhiteFilled</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>WhiteFilledIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
</dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconName</key>
<string>AppIconLLC</string>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>Black</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlackIconIpad</string>
<string>BlackIconLargeIpad</string>
<string>BlackNotificationIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>BlackClassic</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlackClassicIconIpad</string>
<string>BlackClassicIconLargeIpad</string>
<string>BlackClassicNotificationIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>BlackFilled</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlackFilledIconIpad</string>
<string>BlackFilledIconLargeIpad</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>Blue</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlueIconIpad</string>
<string>BlueIconLargeIpad</string>
<string>BlueNotificationIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>BlueClassic</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlueClassicIconIpad</string>
<string>BlueClassicIconLargeIpad</string>
<string>BlueClassicNotificationIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>BlueFilled</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BlueFilledIconIpad</string>
<string>BlueFilledIconLargeIpad</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
<key>WhiteFilled</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>WhiteFilledIcon</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
</dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconName</key>
<string>AppIconLLC</string>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
</dict>
<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>APPL</string>
<key>CFBundleShortVersionString</key>
<string>5.12</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleURLSchemes</key>
<array>
<string>telegram</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER).compatibility</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tg</string>
<string>$(APP_SPECIFIC_URL_SCHEME)</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER).dropbox</string>
<key>CFBundleURLSchemes</key>
<array>
<string>db-pa9wtoz9l514anx</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>${BUILD_NUMBER}</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>instagram</string>
<string>comgooglemaps-x-callback</string>
<string>foursquare</string>
<string>here-location</string>
<string>yandexmaps</string>
<string>yandexnavi</string>
<string>comgooglemaps</string>
<string>youtube</string>
<string>twitter</string>
<string>vk</string>
<string>waze</string>
<string>googlechrome</string>
<string>googlechromes</string>
<string>firefox</string>
<string>touch-http</string>
<string>touch-https</string>
<string>yandexbrowser-open-url</string>
<string>vimeo</string>
<string>vine</string>
<string>coub</string>
<string>uber</string>
<string>citymapper</string>
<string>lyft</string>
<string>opera-http</string>
<string>opera-https</string>
<string>firefox-focus</string>
<string>ddgQuickLink</string>
<string>moovit</string>
</array>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSCameraUsageDescription</key>
<string>We need this so that you can take and share photos and videos.</string>
<key>NSContactsUsageDescription</key>
<string>Telegram stores your contacts heavily encrypted in the cloud to let you connect with your friends across all your devices.</string>
<key>NSFaceIDUsageDescription</key>
<string>You can use Face ID to unlock the app.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>When you send your location to your friends, Telegram needs access to show them a map. You also need this to send locations from an Apple Watch.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>When you send your location to your friends, Telegram needs access to show them a map.</string>
<key>NSMicrophoneUsageDescription</key>
<string>We need this so that you can record and share voice messages and videos with sound.</string>
<key>NSMotionUsageDescription</key>
<string>When you send your location to your friends, Telegram needs access to show them a map.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>We need this so that you can share photos and videos from your photo library.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need this so that you can share photos and videos from your photo library.</string>
<key>NSSiriUsageDescription</key>
<string>You can use Siri to send messages.</string>
<key>NSUserActivityTypes</key>
<array>
<string>INSendMessageIntent</string>
<string>RemindAboutChatIntent</string>
</array>
<key>UIAppFonts</key>
<array>
<string>SFCompactRounded-Semibold.otf</string>
</array>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>fetch</string>
<string>location</string>
<string>remote-notification</string>
<string>voip</string>
</array>
<key>UIFileSharingEnabled</key>
<false/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIRequiresPersistentWiFi</key>
<true/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleDefault</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIViewEdgeAntialiasing</key>
<false/>
<key>UIViewGroupOpacity</key>
<false/>
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Telegram iOS Color Theme File</string>
<key>UTTypeIconFiles</key>
<array>
<string>BlueIcon@3x.png</string>
</array>
<key>UTTypeIdentifier</key>
<string>org.telegram.Telegram-iOS.theme</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>tgios-theme</string>
</array>
</dict>
</dict>
</array>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
</dict>
</plist>

View File

@ -0,0 +1,36 @@
<?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>aps-environment</key>
<string>development</string>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>
<key>com.apple.developer.icloud-container-identifiers</key>
<array>
<string>iCloud.org.telegram.Telegram-iOS</string>
</array>
<key>com.apple.developer.icloud-services</key>
<array>
<string>CloudKit</string>
<string>CloudDocuments</string>
</array>
<key>com.apple.developer.siri</key>
<true/>
<key>com.apple.developer.ubiquity-container-identifiers</key>
<array>
<string>iCloud.org.telegram.Telegram-iOS</string>
</array>
<key>com.apple.security.application-groups</key>
<array>
<string>group.org.telegram.Telegram-iOS</string>
</array>
<key>keychain-access-groups</key>
<array>
<string>X834Q8SBVP.org.telegram.Telegram-iOS</string>
</array>
</dict>
</plist>

17
Temp/Telegram-iOS/main.m Normal file
View File

@ -0,0 +1,17 @@
#import <UIKit/UIKit.h>
#import <dlfcn.h>
#import <MtProtoKit/MTProtoKit.h>
int main(int argc, char *argv[]) {
/*NSString *basePath = [[NSString stringWithUTF8String:argv[0]] stringByDeletingLastPathComponent];
void *Share = dlopen([[basePath stringByAppendingPathComponent:@"PlugIns/Share.appex/Share"] UTF8String], RTLD_LAZY);
void *NotificationContent = dlopen([[basePath stringByAppendingPathComponent:@"PlugIns/NotificationContent.appex/NotificationContent"] UTF8String], RTLD_LAZY);
sleep(1000);
void *NotificationService = dlopen([[basePath stringByAppendingPathComponent:@"PlugIns/NotificationService.appex/NotificationService"] UTF8String], RTLD_LAZY);
void *SiriIntents = dlopen([[basePath stringByAppendingPathComponent:@"PlugIns/SiriIntents.appex/SiriIntents"] UTF8String], RTLD_LAZY);
void *Widget = dlopen([[basePath stringByAppendingPathComponent:@"PlugIns/Widget.appex/Widget"] UTF8String], RTLD_LAZY);*/
@autoreleasepool {
return UIApplicationMain(argc, argv, @"Application", @"AppDelegate");
}
}

View File

@ -0,0 +1 @@
{"required-targets":["//submodules/MtProtoKit:openssl_libs"],"xcconfig-paths":["buck-out/gen/Temp/AppLibrary-Debug.xcconfig","buck-out/gen/Temp/AppLibrary-Profile.xcconfig","buck-out/gen/Temp/AppLibrary-Release.xcconfig","buck-out/gen/Temp/Telegram-Debug.xcconfig","buck-out/gen/Temp/Telegram-Profile.xcconfig","buck-out/gen/Temp/Telegram-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKitFramework#iphonesimulator-x86_64-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKitFramework#iphonesimulator-x86_64-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/MtProtoKitFramework#iphonesimulator-x86_64-Release.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Debug.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Profile.xcconfig","buck-out/gen/submodules/MtProtoKit/openssl-Release.xcconfig"],"copy-in-xcode":[]}

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Workspace version="1.0"><FileRef location="container:Temp.xcodeproj"/><Group location="container:" name="submodules"><FileRef location="container:../submodules/MtProtoKit/MtProtoKit.xcodeproj"/></Group></Workspace>

View File

@ -0,0 +1,8 @@
<?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>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?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>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
<false/>
</dict>
</plist>

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "9999"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB4B57B8200000000"
BuildableName = "libopenssl.a"
BlueprintName = "openssl"
ReferencedContainer = "container:../submodules/MtProtoKit/MtProtoKit.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EC43AA77A00000000"
BuildableName = "libAppLibrary.a"
BlueprintName = "AppLibrary"
ReferencedContainer = "container:Temp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04E3A2AABAF00000000"
BuildableName = "MtProtoKitFramework.framework"
BlueprintName = "MtProtoKitFramework#iphonesimulator-x86_64"
ReferencedContainer = "container:../submodules/MtProtoKit/MtProtoKit.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Temp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Temp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "E66DC04EB2C34D2100000000"
BuildableName = "Telegram.app"
BlueprintName = "Telegram"
ReferencedContainer = "container:Temp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,684 @@
<?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>archiveVersion</key>
<string>1</string>
<key>classes</key>
<dict>
</dict>
<key>objectVersion</key>
<string>46</string>
<key>objects</key>
<dict>
<key>1DD70E29001F47FB00000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>BUCK</string>
<key>path</key>
<string>BUCK</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
<key>explicitFileType</key>
<string>text.script.python</string>
</dict>
<key>1DD70E29988E33D500000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>Application.swift</string>
<key>path</key>
<string>Telegram-iOS/Application.swift</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
</dict>
<key>1DD70E29BF88817800000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>main.m</string>
<key>path</key>
<string>Telegram-iOS/main.m</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
<key>lastKnownFileType</key>
<string>sourcecode.c.objc</string>
</dict>
<key>B401C979EAB5339800000000</key>
<dict>
<key>isa</key>
<string>PBXGroup</string>
<key>name</key>
<string>Sources</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>children</key>
<array>
<string>1DD70E29988E33D500000000</string>
<string>1DD70E29BF88817800000000</string>
</array>
</dict>
<key>B401C979C43AA77A00000000</key>
<dict>
<key>isa</key>
<string>PBXGroup</string>
<key>name</key>
<string>AppLibrary</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>children</key>
<array>
<string>1DD70E29001F47FB00000000</string>
<string>B401C979EAB5339800000000</string>
</array>
</dict>
<key>1DD70E294E27EDFB00000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>AppLibrary-Debug.xcconfig</string>
<key>path</key>
<string>../buck-out/gen/Temp/AppLibrary-Debug.xcconfig</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
<key>explicitFileType</key>
<string>text.xcconfig</string>
</dict>
<key>1DD70E294906F2A500000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>AppLibrary-Profile.xcconfig</string>
<key>path</key>
<string>../buck-out/gen/Temp/AppLibrary-Profile.xcconfig</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
<key>explicitFileType</key>
<string>text.xcconfig</string>
</dict>
<key>1DD70E29BC9D9E0700000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>AppLibrary-Release.xcconfig</string>
<key>path</key>
<string>../buck-out/gen/Temp/AppLibrary-Release.xcconfig</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
<key>explicitFileType</key>
<string>text.xcconfig</string>
</dict>
<key>1DD70E29A8C8657400000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>Telegram-Debug.xcconfig</string>
<key>path</key>
<string>../buck-out/gen/Temp/Telegram-Debug.xcconfig</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
<key>explicitFileType</key>
<string>text.xcconfig</string>
</dict>
<key>1DD70E297D676FDE00000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>Telegram-Profile.xcconfig</string>
<key>path</key>
<string>../buck-out/gen/Temp/Telegram-Profile.xcconfig</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
<key>explicitFileType</key>
<string>text.xcconfig</string>
</dict>
<key>1DD70E29F0FE1B4000000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>Telegram-Release.xcconfig</string>
<key>path</key>
<string>../buck-out/gen/Temp/Telegram-Release.xcconfig</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
<key>explicitFileType</key>
<string>text.xcconfig</string>
</dict>
<key>B401C9792F7F325000000000</key>
<dict>
<key>isa</key>
<string>PBXGroup</string>
<key>name</key>
<string>Buck (Do Not Modify)</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>children</key>
<array>
<string>1DD70E294E27EDFB00000000</string>
<string>1DD70E294906F2A500000000</string>
<string>1DD70E29BC9D9E0700000000</string>
<string>1DD70E29A8C8657400000000</string>
<string>1DD70E297D676FDE00000000</string>
<string>1DD70E29F0FE1B4000000000</string>
</array>
</dict>
<key>B401C979B781F65D00000000</key>
<dict>
<key>isa</key>
<string>PBXGroup</string>
<key>name</key>
<string>Configurations</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>children</key>
<array>
<string>B401C9792F7F325000000000</string>
</array>
</dict>
<key>1DD70E296A34811900000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>MtProtoKitFramework.framework</string>
<key>path</key>
<string>MtProtoKitFramework.framework</string>
<key>sourceTree</key>
<string>BUILT_PRODUCTS_DIR</string>
<key>explicitFileType</key>
<string>wrapper.framework</string>
</dict>
<key>1DD70E297ADFB9F200000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>libAppLibrary.a</string>
<key>path</key>
<string>libAppLibrary.a</string>
<key>sourceTree</key>
<string>BUILT_PRODUCTS_DIR</string>
<key>explicitFileType</key>
<string>archive.ar</string>
</dict>
<key>1DD70E29B22505DC00000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>libMtProtoKit.dylib</string>
<key>path</key>
<string>libMtProtoKit.dylib</string>
<key>sourceTree</key>
<string>BUILT_PRODUCTS_DIR</string>
<key>explicitFileType</key>
<string>compiled.mach-o.dylib</string>
</dict>
<key>B401C97968022A5500000000</key>
<dict>
<key>isa</key>
<string>PBXGroup</string>
<key>name</key>
<string>Frameworks</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>children</key>
<array>
<string>1DD70E296A34811900000000</string>
<string>1DD70E297ADFB9F200000000</string>
<string>1DD70E29B22505DC00000000</string>
</array>
</dict>
<key>1DD70E29D83C37D400000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>Telegram.app</string>
<key>path</key>
<string>Telegram.app</string>
<key>sourceTree</key>
<string>BUILT_PRODUCTS_DIR</string>
<key>explicitFileType</key>
<string>wrapper.application</string>
</dict>
<key>1DD70E297ADFB9F200000001</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>libAppLibrary.a</string>
<key>path</key>
<string>libAppLibrary.a</string>
<key>sourceTree</key>
<string>BUILT_PRODUCTS_DIR</string>
<key>explicitFileType</key>
<string>archive.ar</string>
</dict>
<key>B401C979C806358400000000</key>
<dict>
<key>isa</key>
<string>PBXGroup</string>
<key>name</key>
<string>Products</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>children</key>
<array>
<string>1DD70E29D83C37D400000000</string>
<string>1DD70E297ADFB9F200000001</string>
</array>
</dict>
<key>1DD70E29001F47FB00000001</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>BUCK</string>
<key>path</key>
<string>BUCK</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
<key>explicitFileType</key>
<string>text.script.python</string>
</dict>
<key>1DD70E296ABF6A1200000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>Empty.swift</string>
<key>path</key>
<string>Empty.swift</string>
<key>sourceTree</key>
<string>SOURCE_ROOT</string>
</dict>
<key>1DD70E2906C06BEE00000000</key>
<dict>
<key>isa</key>
<string>PBXFileReference</string>
<key>name</key>
<string>Info.plist</string>
<key>path</key>
<string>Telegram-iOS/Info.plist</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>explicitFileType</key>
<string>text.plist</string>
</dict>
<key>B401C979EAB5339800000001</key>
<dict>
<key>isa</key>
<string>PBXGroup</string>
<key>name</key>
<string>Sources</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>children</key>
<array>
<string>1DD70E296ABF6A1200000000</string>
<string>1DD70E2906C06BEE00000000</string>
</array>
</dict>
<key>B401C979B2C34D2100000000</key>
<dict>
<key>isa</key>
<string>PBXGroup</string>
<key>name</key>
<string>Telegram</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>children</key>
<array>
<string>1DD70E29001F47FB00000001</string>
<string>B401C979EAB5339800000001</string>
</array>
</dict>
<key>B401C979EFB6AC4600000000</key>
<dict>
<key>isa</key>
<string>PBXGroup</string>
<key>name</key>
<string>mainGroup</string>
<key>sourceTree</key>
<string><![CDATA[<group>]]></string>
<key>children</key>
<array>
<string>B401C979C43AA77A00000000</string>
<string>B401C979B781F65D00000000</string>
<string>B401C97968022A5500000000</string>
<string>B401C979C806358400000000</string>
<string>B401C979B2C34D2100000000</string>
</array>
</dict>
<key>E7A30F04988E33D500000000</key>
<dict>
<key>isa</key>
<string>PBXBuildFile</string>
<key>fileRef</key>
<string>1DD70E29988E33D500000000</string>
</dict>
<key>E7A30F04BF88817800000000</key>
<dict>
<key>isa</key>
<string>PBXBuildFile</string>
<key>fileRef</key>
<string>1DD70E29BF88817800000000</string>
</dict>
<key>1870857F0000000000000000</key>
<dict>
<key>isa</key>
<string>PBXSourcesBuildPhase</string>
<key>files</key>
<array>
<string>E7A30F04988E33D500000000</string>
<string>E7A30F04BF88817800000000</string>
</array>
</dict>
<key>4952437303EDA63300000000</key>
<dict>
<key>isa</key>
<string>XCBuildConfiguration</string>
<key>name</key>
<string>Debug</string>
<key>buildSettings</key>
<dict>
</dict>
<key>baseConfigurationReference</key>
<string>1DD70E294E27EDFB00000000</string>
</dict>
<key>4952437350C7218900000000</key>
<dict>
<key>isa</key>
<string>XCBuildConfiguration</string>
<key>name</key>
<string>Profile</string>
<key>buildSettings</key>
<dict>
</dict>
<key>baseConfigurationReference</key>
<string>1DD70E294906F2A500000000</string>
</dict>
<key>49524373A439BFE700000000</key>
<dict>
<key>isa</key>
<string>XCBuildConfiguration</string>
<key>name</key>
<string>Release</string>
<key>buildSettings</key>
<dict>
</dict>
<key>baseConfigurationReference</key>
<string>1DD70E29BC9D9E0700000000</string>
</dict>
<key>218C37090000000000000000</key>
<dict>
<key>isa</key>
<string>XCConfigurationList</string>
<key>buildConfigurations</key>
<array>
<string>4952437303EDA63300000000</string>
<string>4952437350C7218900000000</string>
<string>49524373A439BFE700000000</string>
</array>
<key>defaultConfigurationIsVisible</key>
<false/>
</dict>
<key>E66DC04EC43AA77A00000000</key>
<dict>
<key>isa</key>
<string>PBXNativeTarget</string>
<key>name</key>
<string>AppLibrary</string>
<key>productName</key>
<string>AppLibrary</string>
<key>productReference</key>
<string>1DD70E297ADFB9F200000001</string>
<key>productType</key>
<string>com.apple.product-type.library.static</string>
<key>dependencies</key>
<array>
</array>
<key>buildPhases</key>
<array>
<string>1870857F0000000000000000</string>
</array>
<key>buildConfigurationList</key>
<string>218C37090000000000000000</string>
</dict>
<key>E7A30F046ABF6A1200000000</key>
<dict>
<key>isa</key>
<string>PBXBuildFile</string>
<key>fileRef</key>
<string>1DD70E296ABF6A1200000000</string>
</dict>
<key>1870857F0000000000000001</key>
<dict>
<key>isa</key>
<string>PBXSourcesBuildPhase</string>
<key>files</key>
<array>
<string>E7A30F046ABF6A1200000000</string>
</array>
</dict>
<key>E7A30F047ADFB9F200000000</key>
<dict>
<key>isa</key>
<string>PBXBuildFile</string>
<key>fileRef</key>
<string>1DD70E297ADFB9F200000000</string>
</dict>
<key>E7A30F04B22505DC00000000</key>
<dict>
<key>isa</key>
<string>PBXBuildFile</string>
<key>fileRef</key>
<string>1DD70E29B22505DC00000000</string>
</dict>
<key>4F426D880000000000000000</key>
<dict>
<key>isa</key>
<string>PBXFrameworksBuildPhase</string>
<key>files</key>
<array>
<string>E7A30F047ADFB9F200000000</string>
<string>E7A30F04B22505DC00000000</string>
</array>
</dict>
<key>E7A30F04B22505DC00000001</key>
<dict>
<key>isa</key>
<string>PBXBuildFile</string>
<key>fileRef</key>
<string>1DD70E29B22505DC00000000</string>
<key>settings</key>
<dict>
<key>ATTRIBUTES</key>
<array>
<string>CodeSignOnCopy</string>
<string>RemoveHeadersOnCopy</string>
</array>
</dict>
</dict>
<key>E7A30F046A34811900000000</key>
<dict>
<key>isa</key>
<string>PBXBuildFile</string>
<key>fileRef</key>
<string>1DD70E296A34811900000000</string>
<key>settings</key>
<dict>
<key>ATTRIBUTES</key>
<array>
<string>CodeSignOnCopy</string>
<string>RemoveHeadersOnCopy</string>
</array>
</dict>
</dict>
<key>FAF5FAC90000000000000000</key>
<dict>
<key>isa</key>
<string>PBXCopyFilesBuildPhase</string>
<key>files</key>
<array>
<string>E7A30F04B22505DC00000001</string>
<string>E7A30F046A34811900000000</string>
</array>
<key>dstSubfolderSpec</key>
<integer>10</integer>
<key>dstPath</key>
<string></string>
</dict>
<key>4952437303EDA63300000001</key>
<dict>
<key>isa</key>
<string>XCBuildConfiguration</string>
<key>name</key>
<string>Debug</string>
<key>buildSettings</key>
<dict>
</dict>
<key>baseConfigurationReference</key>
<string>1DD70E29A8C8657400000000</string>
</dict>
<key>4952437350C7218900000001</key>
<dict>
<key>isa</key>
<string>XCBuildConfiguration</string>
<key>name</key>
<string>Profile</string>
<key>buildSettings</key>
<dict>
</dict>
<key>baseConfigurationReference</key>
<string>1DD70E297D676FDE00000000</string>
</dict>
<key>49524373A439BFE700000001</key>
<dict>
<key>isa</key>
<string>XCBuildConfiguration</string>
<key>name</key>
<string>Release</string>
<key>buildSettings</key>
<dict>
</dict>
<key>baseConfigurationReference</key>
<string>1DD70E29F0FE1B4000000000</string>
</dict>
<key>218C37090000000000000001</key>
<dict>
<key>isa</key>
<string>XCConfigurationList</string>
<key>buildConfigurations</key>
<array>
<string>4952437303EDA63300000001</string>
<string>4952437350C7218900000001</string>
<string>49524373A439BFE700000001</string>
</array>
<key>defaultConfigurationIsVisible</key>
<false/>
</dict>
<key>E66DC04EB2C34D2100000000</key>
<dict>
<key>isa</key>
<string>PBXNativeTarget</string>
<key>name</key>
<string>Telegram</string>
<key>productName</key>
<string>Telegram</string>
<key>productReference</key>
<string>1DD70E29D83C37D400000000</string>
<key>productType</key>
<string>com.apple.product-type.application</string>
<key>dependencies</key>
<array>
</array>
<key>buildPhases</key>
<array>
<string>1870857F0000000000000001</string>
<string>4F426D880000000000000000</string>
<string>FAF5FAC90000000000000000</string>
</array>
<key>buildConfigurationList</key>
<string>218C37090000000000000001</string>
</dict>
<key>4952437303EDA63300000002</key>
<dict>
<key>isa</key>
<string>XCBuildConfiguration</string>
<key>name</key>
<string>Debug</string>
<key>buildSettings</key>
<dict>
</dict>
</dict>
<key>4952437350C7218900000002</key>
<dict>
<key>isa</key>
<string>XCBuildConfiguration</string>
<key>name</key>
<string>Profile</string>
<key>buildSettings</key>
<dict>
</dict>
</dict>
<key>49524373A439BFE700000002</key>
<dict>
<key>isa</key>
<string>XCBuildConfiguration</string>
<key>name</key>
<string>Release</string>
<key>buildSettings</key>
<dict>
</dict>
</dict>
<key>218C37090000000000000002</key>
<dict>
<key>isa</key>
<string>XCConfigurationList</string>
<key>buildConfigurations</key>
<array>
<string>4952437303EDA63300000002</string>
<string>4952437350C7218900000002</string>
<string>49524373A439BFE700000002</string>
</array>
<key>defaultConfigurationIsVisible</key>
<false/>
</dict>
<key>96C847930027B7F400000000</key>
<dict>
<key>isa</key>
<string>PBXProject</string>
<key>mainGroup</key>
<string>B401C979EFB6AC4600000000</string>
<key>targets</key>
<array>
<string>E66DC04EC43AA77A00000000</string>
<string>E66DC04EB2C34D2100000000</string>
</array>
<key>buildConfigurationList</key>
<string>218C37090000000000000002</string>
<key>compatibilityVersion</key>
<string>Xcode 3.2</string>
<key>attributes</key>
<dict>
<key>LastUpgradeCheck</key>
<string>9999</string>
</dict>
</dict>
</dict>
<key>rootObject</key>
<string>96C847930027B7F400000000</string>
</dict>
</plist>

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><Scheme LastUpgradeVersion="9999" version="1.7"><BuildAction buildImplicitDependencies="YES" parallelizeBuildables="YES"><BuildActionEntries><BuildActionEntry buildForAnalyzing="YES" buildForArchiving="YES" buildForProfiling="YES" buildForRunning="YES" buildForTesting="YES"><BuildableReference BlueprintIdentifier="E66DC04EB2C34D2100000000" BlueprintName="Telegram" BuildableIdentifier="primary" BuildableName="Telegram.app" ReferencedContainer="container:Temp.xcodeproj"/></BuildActionEntry><BuildActionEntry buildForAnalyzing="YES" buildForArchiving="YES" buildForProfiling="YES" buildForRunning="YES" buildForTesting="YES"><BuildableReference BlueprintIdentifier="E66DC04EC43AA77A00000000" BlueprintName="AppLibrary" BuildableIdentifier="primary" BuildableName="libAppLibrary.a" ReferencedContainer="container:Temp.xcodeproj"/></BuildActionEntry></BuildActionEntries></BuildAction><TestAction buildConfiguration="Debug" shouldUseLaunchSchemeArgsEnv="YES"><Testables/></TestAction><LaunchAction buildConfiguration="Debug"/><ProfileAction buildConfiguration="Release"/><AnalyzeAction buildConfiguration="Debug"/><ArchiveAction buildConfiguration="Release" revealArchiveInOrganizer="YES"/></Scheme>

View File

@ -17,9 +17,13 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>5.11</string>
<string>5.12</string>
<key>CFBundleVersion</key>
<string>${BUILD_NUMBER}</string>
<key>UIDeviceFamily</key>
<array>
<integer>4</integer>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>

View File

@ -1,76 +0,0 @@
load('//tools:buck_utils.bzl', 'config_with_updated_linker_flags', 'configs_with_config', 'combined_config')
load('//tools:buck_defs.bzl', 'SHARED_CONFIGS', 'EXTENSION_LIB_SPECIFIC_CONFIG')
apple_library(
name = 'WatchUtils',
srcs = [
'Bridge/TGBridgeCommon.m',
'Bridge/TGBridgeContactMediaAttachment.m',
'Bridge/TGBridgeVideoMediaAttachment.m',
'Bridge/TGBridgeSubscriptions.m',
'Bridge/TGBridgeLocationVenue.m',
'Bridge/TGBridgeImageMediaAttachment.m',
'Bridge/TGBridgeBotInfo.m',
'Bridge/TGBridgeChatMessages.m',
'Bridge/TGBridgeMessage.m',
'Bridge/TGBridgeUnsupportedMediaAttachment.m',
'Bridge/TGBridgeChat.m',
'Bridge/TGBridgeForwardedMessageMediaAttachment.m',
'Bridge/TGBridgeMessageEntities.m',
'Bridge/TGBridgeLocationMediaAttachment.m',
'Bridge/TGBridgeMessageEntitiesAttachment.m',
'Bridge/TGBridgeReplyMarkupMediaAttachment.m',
'Bridge/TGBridgeWebPageMediaAttachment.m',
'Bridge/TGBridgeDocumentMediaAttachment.m',
'Bridge/TGBridgeActionMediaAttachment.m',
'Bridge/TGBridgeContext.m',
'Bridge/TGBridgeMediaAttachment.m',
'Bridge/TGBridgeUser.m',
'Bridge/TGBridgeBotCommandInfo.m',
'Bridge/TGBridgeAudioMediaAttachment.m',
'Bridge/TGBridgeReplyMessageMediaAttachment.m',
],
headers = glob([
'Bridge/*.h',
'Extension/*.h',
]),
header_namespace = 'WatchUtils',
exported_headers = [
'Bridge/TGBridgeCommon.h',
'Bridge/TGBridgeContactMediaAttachment.h',
'Bridge/TGBridgeVideoMediaAttachment.h',
'Bridge/TGBridgeSubscriptions.h',
'Bridge/TGBridgeLocationVenue.h',
'Bridge/TGBridgeImageMediaAttachment.h',
'Bridge/TGBridgeBotInfo.h',
'Bridge/TGBridgeChatMessages.h',
'Bridge/TGBridgeMessage.h',
'Bridge/TGBridgeUnsupportedMediaAttachment.h',
'Bridge/TGBridgeChat.h',
'Bridge/TGBridgeForwardedMessageMediaAttachment.h',
'Bridge/TGBridgeMessageEntities.h',
'Bridge/TGBridgeLocationMediaAttachment.h',
'Bridge/TGBridgeMessageEntitiesAttachment.h',
'Bridge/TGBridgeReplyMarkupMediaAttachment.h',
'Bridge/TGBridgeWebPageMediaAttachment.h',
'Bridge/TGBridgeDocumentMediaAttachment.h',
'Bridge/TGBridgeActionMediaAttachment.h',
'Bridge/TGBridgeContext.h',
'Bridge/TGBridgeMediaAttachment.h',
'Bridge/TGBridgeUser.h',
'Bridge/TGBridgeBotCommandInfo.h',
'Bridge/TGBridgeAudioMediaAttachment.h',
'Bridge/TGBridgeReplyMessageMediaAttachment.h',
],
modular = True,
configs = configs_with_config(combined_config([SHARED_CONFIGS, EXTENSION_LIB_SPECIFIC_CONFIG])),
compiler_flags = [
'-w',
],
preprocessor_flags = ['-fobjc-arc'],
visibility = ['PUBLIC'],
frameworks = [
'$SDKROOT/System/Library/Frameworks/Foundation.framework',
'$SDKROOT/System/Library/Frameworks/UIKit.framework',
],
)

View File

@ -1,9 +0,0 @@
#import "TGBridgeBotInfo.h"
@class TGBotInfo;
@interface TGBridgeBotInfo (TGBotInfo)
+ (TGBridgeBotInfo *)botInfoWithTGBotInfo:(TGBotInfo *)botInfo userId:(int32_t)userId;
@end

View File

@ -1,29 +0,0 @@
#import "TGBridgeBotInfo+TGBotInfo.h"
#import <LegacyComponents/LegacyComponents.h>
#import "TGBridgeBotCommandInfo+TGBotCommandInfo.h"
@implementation TGBridgeBotInfo (TGBotInfo)
+ (TGBridgeBotInfo *)botInfoWithTGBotInfo:(TGBotInfo *)botInfo userId:(int32_t)userId
{
TGBridgeBotInfo *bridgeBotInfo = [[TGBridgeBotInfo alloc] init];
bridgeBotInfo->_version = botInfo.version;
bridgeBotInfo->_userId = userId;
bridgeBotInfo->_shortDescription = botInfo.shortDescription;
bridgeBotInfo->_botDescription = botInfo.botDescription;
NSMutableArray *commandList = [[NSMutableArray alloc] init];
for (TGBotComandInfo *commandInfo in botInfo.commandList)
{
TGBridgeBotCommandInfo *bridgeCommandInfo = [TGBridgeBotCommandInfo botCommandInfoWithTGBotCommandInfo:commandInfo];
if (bridgeCommandInfo != nil)
[commandList addObject:bridgeCommandInfo];
}
bridgeBotInfo->_commandList = commandList;
return bridgeBotInfo;
}
@end

View File

@ -1,11 +0,0 @@
#import "TGBridgeImageInfo.h"
@class TGImageInfo;
@interface TGBridgeImageInfo (TGImageInfo)
+ (TGBridgeImageInfo *)imageInfoWithTGImageInfo:(TGImageInfo *)imageInfo;
+ (TGImageInfo *)tgImageInfoWithBridgeImageInfo:(TGBridgeImageInfo *)bridgeImageInfo;
@end

View File

@ -1,43 +0,0 @@
#import "TGBridgeImageInfo+TGImageInfo.h"
#import <LegacyComponents/LegacyComponents.h>
@implementation TGBridgeImageInfo (TGImageInfo)
+ (TGBridgeImageInfo *)imageInfoWithTGImageInfo:(TGImageInfo *)imageInfo
{
if (imageInfo == nil)
return nil;
TGBridgeImageInfo *bridgeImageInfo = [[TGBridgeImageInfo alloc] init];
NSDictionary *allSizes = imageInfo.allSizes;
NSMutableArray *bridgeEntries = [[NSMutableArray alloc] init];
for (NSString *url in allSizes.allKeys)
{
TGBridgeImageSizeInfo *bridgeEntry = [[TGBridgeImageSizeInfo alloc] init];
bridgeEntry.url = url;
bridgeEntry.dimensions = [allSizes[url] CGSizeValue];
[bridgeEntries addObject:bridgeEntry];
}
bridgeImageInfo->_entries = bridgeEntries;
return bridgeImageInfo;
}
+ (TGImageInfo *)tgImageInfoWithBridgeImageInfo:(TGBridgeImageInfo *)bridgeImageInfo
{
if (bridgeImageInfo == nil)
return nil;
TGImageInfo *imageInfo = [[TGImageInfo alloc] init];
for (TGBridgeImageSizeInfo *entry in bridgeImageInfo.entries)
[imageInfo addImageWithSize:entry.dimensions url:entry.url];
return imageInfo;
}
@end

View File

@ -1,9 +0,0 @@
#import "TGBridgeMessageEntities.h"
#import <LegacyComponents/LegacyComponents.h>
@interface TGBridgeMessageEntity (TGMessageEntity)
+ (TGBridgeMessageEntity *)entityWithTGMessageEntity:(TGMessageEntity *)entity;
@end

View File

@ -1,38 +0,0 @@
#import "TGBridgeMessageEntity+TGMessageEntity.h"
#import <LegacyComponents/LegacyComponents.h>
@implementation TGBridgeMessageEntity (TGMessageEntity)
+ (TGBridgeMessageEntity *)entityWithTGMessageEntity:(TGMessageEntity *)entity
{
Class bridgeEntityClass = nil;
if ([entity isKindOfClass:[TGMessageEntityUrl class]])
bridgeEntityClass = [TGBridgeMessageEntityUrl class];
else if ([entity isKindOfClass:[TGMessageEntityEmail class]])
bridgeEntityClass = [TGBridgeMessageEntityEmail class];
else if ([entity isKindOfClass:[TGMessageEntityTextUrl class]])
bridgeEntityClass = [TGBridgeMessageEntityTextUrl class];
else if ([entity isKindOfClass:[TGMessageEntityMention class]])
bridgeEntityClass = [TGBridgeMessageEntityMention class];
else if ([entity isKindOfClass:[TGMessageEntityHashtag class]])
bridgeEntityClass = [TGBridgeMessageEntityHashtag class];
else if ([entity isKindOfClass:[TGMessageEntityBotCommand class]])
bridgeEntityClass = [TGBridgeMessageEntityBotCommand class];
else if ([entity isKindOfClass:[TGMessageEntityBold class]])
bridgeEntityClass = [TGBridgeMessageEntityBold class];
else if ([entity isKindOfClass:[TGMessageEntityItalic class]])
bridgeEntityClass = [TGBridgeMessageEntityItalic class];
else if ([entity isKindOfClass:[TGMessageEntityCode class]])
bridgeEntityClass = [TGBridgeMessageEntityCode class];
else if ([entity isKindOfClass:[TGMessageEntityPre class]])
bridgeEntityClass = [TGBridgeMessageEntityPre class];
if (bridgeEntityClass != nil)
return [bridgeEntityClass entitityWithRange:entity.range];
return nil;
}
@end

View File

@ -1,9 +0,0 @@
#import "TGBridgeStickerPack.h"
@class TGStickerPack;
@interface TGBridgeStickerPack (TGStickerPack)
+ (TGBridgeStickerPack *)stickerPackWithTGStickerPack:(TGStickerPack *)stickerPack;
@end

View File

@ -1,26 +0,0 @@
#import "TGBridgeStickerPack+TGStickerPack.h"
#import <LegacyComponents/TGStickerPack.h>
#import "TGBridgeDocumentMediaAttachment+TGDocumentMediaAttachment.h"
@implementation TGBridgeStickerPack (TGStickerPack)
+ (TGBridgeStickerPack *)stickerPackWithTGStickerPack:(TGStickerPack *)stickerPack
{
TGBridgeStickerPack *bridgeStickerPack = [[TGBridgeStickerPack alloc] init];
bridgeStickerPack->_builtIn = [stickerPack.packReference isKindOfClass:[TGStickerPackBuiltinReference class]];
bridgeStickerPack->_title = stickerPack.title;
NSMutableArray *bridgeDocuments = [[NSMutableArray alloc] init];
for (TGDocumentMediaAttachment *document in stickerPack.documents)
{
TGBridgeDocumentMediaAttachment *bridgeDocument = [TGBridgeDocumentMediaAttachment attachmentWithTGDocumentMediaAttachment:document];
if (bridgeDocument != nil)
[bridgeDocuments addObject:bridgeDocument];
}
bridgeStickerPack->_documents = bridgeDocuments;
return bridgeStickerPack;
}
@end

View File

@ -1,10 +0,0 @@
#import "TGBridgeUser.h"
@class TGUser;
@class TGBotInfo;
@interface TGBridgeUser (TGUser)
+ (TGBridgeUser *)userWithTGUser:(TGUser *)user;
@end

View File

@ -1,34 +0,0 @@
#import "TGBridgeUser+TGUser.h"
#import <LegacyComponents/LegacyComponents.h>
#import "TGBridgeBotInfo+TGBotInfo.h"
@implementation TGBridgeUser (TGUser)
+ (TGBridgeUser *)userWithTGUser:(TGUser *)user
{
if (user == nil)
return nil;
TGBridgeUser *bridgeUser = [[TGBridgeUser alloc] init];
bridgeUser->_identifier = user.uid;
bridgeUser->_firstName = user.firstName;
bridgeUser->_lastName = user.lastName;
bridgeUser->_userName = user.userName;
bridgeUser->_phoneNumber = user.phoneNumber;
if (user.phoneNumber != nil)
bridgeUser->_prettyPhoneNumber = [TGPhoneUtils formatPhone:user.phoneNumber forceInternational:false];
bridgeUser->_online = user.presence.online;
bridgeUser->_lastSeen = user.presence.lastSeen;
bridgeUser->_photoSmall = user.photoUrlSmall;
bridgeUser->_photoBig = user.photoUrlBig;
bridgeUser->_kind = user.kind;
bridgeUser->_botKind = user.botKind;
bridgeUser->_botVersion = user.botInfoVersion;
bridgeUser->_verified = user.isVerified;
return bridgeUser;
}
@end

Some files were not shown because too many files have changed in this diff Show More