diff --git a/.gitignore b/.gitignore
index c70c75cf64..f003d00dcb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -61,3 +61,5 @@ bazel-testlogs/*
*/*.swp
build-input/data
build-input/data/*
+build-input/gen
+build-input/gen/*
diff --git a/Makefile b/Makefile
index ab295d80f4..28e255e3b1 100644
--- a/Makefile
+++ b/Makefile
@@ -39,6 +39,7 @@ BUCK_OPTIONS=\
--config custom.developmentProvisioningProfileWatchExtension="${DEVELOPMENT_PROVISIONING_PROFILE_WATCH_EXTENSION}" \
--config custom.distributionProvisioningProfileWatchExtension="${DISTRIBUTION_PROVISIONING_PROFILE_WATCH_EXTENSION}"
+BAZEL=$(shell which bazel)
build_arm64: check_env
$(BUCK) build \
@@ -395,3 +396,6 @@ project_buckdebug: check_env kill_xcode
temp_project: check_env kill_xcode
$(BUCK) project //Temp:workspace --config custom.mode=project ${BUCK_OPTIONS} ${BUCK_DEBUG_OPTIONS}
open Temp/Telegram_Buck.xcworkspace
+
+tulsi_project:
+ ${HOME}/Applications/Tulsi.app/Contents/MacOS/Tulsi -- --verbose --genconfig Telegram/Telegram.tulsiproj:Default --bazel "${BAZEL}" --build-options ${BAZEL_OPTIONS} --startup-options ${BAZEL_OPTIONS}
diff --git a/Telegram/BUILD b/Telegram/BUILD
index 20c6375775..a94347b39b 100644
--- a/Telegram/BUILD
+++ b/Telegram/BUILD
@@ -3,16 +3,28 @@ load("@build_bazel_rules_apple//apple:ios.bzl",
"ios_framework",
)
+load("@build_bazel_rules_apple//apple:watchos.bzl",
+ "watchos_application",
+ "watchos_extension",
+)
+
+load("@build_bazel_rules_apple//apple:versioning.bzl",
+ "apple_bundle_version",
+)
+
load("@build_bazel_rules_swift//swift:swift.bzl",
"swift_library",
)
-load("//build-system:defines.bzl",
- "file_from_define",
+load("//build-system:info_plist_fragment.bzl",
+ "info_plist_fragment",
)
-load(":telegram_info_plist.bzl",
- "telegram_info_plist",
+load(
+ "//build-input/data:variables.bzl",
+ "telegram_build_number",
+ "telegram_version",
+ "telegram_bundle_id",
)
filegroup(
@@ -29,6 +41,13 @@ filegroup(
], exclude = ["Telegram-iOS/*.lproj/**/.*"]),
)
+filegroup(
+ name = "WatchAppStringResources",
+ srcs = glob([
+ "Telegram-iOS/*.lproj/Localizable.strings",
+ ], exclude = ["Telegram-iOS/*.lproj/**/.*"]),
+)
+
filegroup(
name = "AppIntentVocabularyResources",
srcs = glob([
@@ -46,15 +65,22 @@ filegroup(
filegroup(
name = "Icons",
srcs = glob([
- "Telegram-iOS/Icons.xcassets",
- ]),
+ "Telegram-iOS/Icons.xcassets/**/*",
+ ], exclude = ["Telegram-iOS/Icons.xcassets/**/.*"]),
)
filegroup(
name = "AppIcons",
srcs = glob([
- "Telegram-iOS/AppIcons.xcassets",
- ]),
+ "Telegram-iOS/AppIcons.xcassets/**/*",
+ ], exclude = ["Telegram-iOS/AppIcons.xcassets/**/.*"]),
+)
+
+filegroup(
+ name = "DefaultAppIcon",
+ srcs = glob([
+ "Telegram-iOS/DefaultAppIcon.xcassets/**/*",
+ ], exclude = ["Telegram-iOS/DefaultAppIcon.xcassets/**/.*"]),
)
filegroup(
@@ -84,73 +110,247 @@ swift_library(
"Telegram-iOS/Application.swift",
]),
data = [
- ":AppStringResources",
+ ":AppResources",
+ ":AppIntentVocabularyResources",
+ ":InfoPlistStringResources",
],
deps = [
- "//submodules/GZip:GZip",
- "//submodules/AsyncDisplayKit:AsyncDisplayKit",
- "//submodules/SSignalKit/SSignalKit:SSignalKit",
- "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit",
- "//submodules/ObjCRuntimeUtils:ObjCRuntimeUtils",
- "//submodules/UIKitRuntimeUtils:UIKitRuntimeUtils",
- "//submodules/Display:Display",
- "//submodules/AlertUI:AlertUI",
- "//submodules/ActivityIndicator:ActivityIndicator",
- "//submodules/OverlayStatusController:OverlayStatusController",
- "//submodules/openssl:openssl",
- "//submodules/OpenSSLEncryptionProvider:OpenSSLEncryptionProvider",
- "//submodules/WalletCore:WalletCore",
- "//submodules/BuildConfig:BuildConfig",
- "//submodules/AppBundle:AppBundle",
- "//submodules/SolidRoundedButtonNode:SolidRoundedButtonNode",
- "//submodules/Camera:Camera",
- "//submodules/QrCode:QrCode",
- "//submodules/MergeLists:MergeLists",
- "//submodules/GlassButtonNode:GlassButtonNode",
- "//submodules/UrlEscaping:UrlEscaping",
- "//submodules/LocalAuth:LocalAuth",
- "//submodules/ScreenCaptureDetection:ScreenCaptureDetection",
- "//submodules/WalletUrl:WalletUrl",
- "//submodules/ProgressNavigationButtonNode:ProgressNavigationButtonNode",
- "//submodules/Markdown:Markdown",
- "//submodules/StringPluralization:StringPluralization",
- "//submodules/YuvConversion:YuvConversion",
- "//submodules/rlottie:RLottieBinding",
- "//submodules/AnimatedStickerNode:AnimatedStickerNode",
- "//submodules/WalletUI:WalletUI",
- "//submodules/WebsiteType:WebsiteType",
- "//submodules/MtProtoKit:MtProtoKit",
- "//submodules/Postbox:Postbox",
- "//submodules/SyncCore:SyncCore",
- "//submodules/TelegramCore:TelegramCore",
- "//submodules/AccountContext:AccountContext",
- "//submodules/lottie-ios:Lottie",
- "//submodules/ChatListUI:ChatListUI",
+ "//submodules/TelegramUI:TelegramUI",
],
)
-additional_info_plist = telegram_info_plist(
+additional_info_plist = info_plist_fragment(
name = "AdditionalInfoPlist",
- app_name = "Telegram",
- url_scheme = "tg",
- bundle_id_define = "telegram_bundle_id",
- app_version_define = "telegram_version",
- build_number_define = "telegram_build_number",
+ template =
+ """
+ CFBundleShortVersionString
+ {telegram_version}
+ CFBundleVersion
+ {telegram_build_number}
+ CFBundleURLTypes
+
+
+ CFBundleTypeRole
+ Viewer
+ CFBundleURLName
+ {telegram_bundle_id}
+ CFBundleURLSchemes
+
+ telegram
+
+
+
+ CFBundleTypeRole
+ Viewer
+ CFBundleURLName
+ {telegram_bundle_id}.ton
+ CFBundleURLSchemes
+
+ ton
+
+
+
+ CFBundleTypeRole
+ Viewer
+ CFBundleURLName
+ {telegram_bundle_id}.compatibility
+ CFBundleURLSchemes
+
+ tg
+
+
+
+ """.format(
+ telegram_version = telegram_version,
+ telegram_build_number = telegram_build_number,
+ telegram_bundle_id = telegram_bundle_id,
+ )
+)
+
+filegroup(
+ name = "TelegramWatchExtensionResources",
+ srcs = glob([
+ "Watch/Extension/Resources/**/*",
+ ], exclude = ["Watch/Extension/Resources/**/.*"]),
+)
+
+filegroup(
+ name = "TelegramWatchAppResources",
+ srcs = glob([
+ "Watch/Extension/Resources/**/*.png",
+ ], exclude = ["Watch/Extension/Resources/**/.*"]),
+)
+
+filegroup(
+ name = "TelegramWatchAppAssets",
+ srcs = glob([
+ "Watch/App/Assets.xcassets/**/*",
+ ], exclude = ["Watch/App/Assets.xcassets/**/.*"]),
+)
+
+filegroup(
+ name = "TelegramWatchAppInterface",
+ srcs = glob([
+ "Watch/App/Base.lproj/Interface.storyboard",
+ ]),
+)
+
+objc_library(
+ name = "TelegramWatchLib",
+ srcs = glob([
+ "Watch/Extension/**/*.m",
+ "Watch/SSignalKit/**/*.m",
+ "Watch/Bridge/**/*.m",
+ "Watch/WatchCommonWatch/**/*.m",
+ "Watch/Extension/**/*.h",
+ "Watch/SSignalKit/**/*.h",
+ "Watch/Bridge/**/*.h",
+ "Watch/WatchCommonWatch/**/*.h",
+ ]),
+ copts = [
+ "-DTARGET_OS_WATCH=1",
+ "-ITelegram/Watch",
+ "-ITelegram/Watch/Extension",
+ "-ITelegram/Watch/Bridge",
+ ],
+ sdk_frameworks = [
+ "WatchKit",
+ "WatchConnectivity",
+ "ClockKit",
+ "UserNotifications",
+ "CoreLocation",
+ "CoreGraphics",
+ ],
+)
+
+info_plist_fragment(
+ name = "WatchVersionInfoPlist",
+ template =
+ """
+ CFBundleShortVersionString
+ {telegram_version}
+ CFBundleVersion
+ {telegram_build_number}
+ """.format(
+ telegram_version = telegram_version,
+ telegram_build_number = telegram_build_number,
+ )
+)
+
+info_plist_fragment(
+ name = "WatchAppNameInfoPlist",
+ template =
+ """
+ CFBundleDisplayName
+ Telegram
+ """
+)
+
+info_plist_fragment(
+ name = "WatchExtensionNSExtensionInfoPlist",
+ template =
+ """
+ NSExtension
+
+ NSExtensionAttributes
+
+ WKAppBundleIdentifier
+ {telegram_bundle_id}.watchkitapp
+
+ NSExtensionPointIdentifier
+ com.apple.watchkit
+
+ """.format(
+ telegram_bundle_id = telegram_bundle_id,
+ )
+)
+
+info_plist_fragment(
+ name = "WatchAppCompanionInfoPlist",
+ template =
+ """
+ WKCompanionAppBundleIdentifier
+ {telegram_bundle_id}
+ """.format(
+ telegram_bundle_id = telegram_bundle_id,
+ )
+)
+
+watchos_extension(
+ name = "TelegramWatchExtension",
+ bundle_id = "{telegram_bundle_id}.watchkitapp.watchkitextension".format(
+ telegram_bundle_id = telegram_bundle_id,
+ ),
+ bundle_name = "TelegramWatchExtension",
+ infoplists = [
+ "Watch/Extension/Info.plist",
+ ":WatchVersionInfoPlist",
+ ":WatchAppNameInfoPlist",
+ ":WatchExtensionNSExtensionInfoPlist",
+ ],
+ minimum_os_version = "5.0",
+ provisioning_profile = "//build-input/data/provisioning-profiles:WatchExtension.mobileprovision",
+ resources = [
+ ":TelegramWatchExtensionResources",
+ ],
+ strings = [
+ ":WatchAppStringResources",
+ ],
+ deps = [
+ ":TelegramWatchLib",
+ ],
+)
+
+watchos_application(
+ name = "TelegramWatchApp",
+ #app_icons = ,
+ bundle_id = "{telegram_bundle_id}.watchkitapp".format(
+ telegram_bundle_id = telegram_bundle_id,
+ ),
+ bundle_name = "TelegramWatch",
+ extension = ":TelegramWatchExtension",
+ infoplists = [
+ "Watch/App/Info.plist",
+ ":WatchVersionInfoPlist",
+ ":WatchAppNameInfoPlist",
+ ":WatchAppCompanionInfoPlist",
+ ],
+ minimum_os_version = "5.0",
+ provisioning_profile = "//build-input/data/provisioning-profiles:WatchApp.mobileprovision",
+ resources = [
+ ":TelegramWatchAppResources",
+ ":TelegramWatchAppAssets",
+ ],
+ storyboards = [
+ ":TelegramWatchAppInterface",
+ ],
+ strings = [
+ ],
)
ios_application(
name = "Telegram",
- bundle_id = "{telegram_bundle_id}",
+ bundle_id = "{telegram_bundle_id}".format(
+ telegram_bundle_id = telegram_bundle_id,
+ ),
families = ["iphone", "ipad"],
minimum_os_version = "9.0",
- provisioning_profile = "//build-input/data/provisioning-profiles:App.mobileprovision",
+ provisioning_profile = "//build-input/data/provisioning-profiles:Telegram.mobileprovision",
+ entitlements = "Telegram-iOS/Telegram-iOS-Hockeyapp.entitlements",
infoplists = [
"Info.plist",
":AdditionalInfoPlist",
],
+ app_icons = [
+ ":DefaultAppIcon",
+ ],
frameworks = [
#":AsyncDisplayKitFramework",
],
+ strings = [
+ ":AppStringResources",
+ ],
+ watch_application = ":TelegramWatchApp",
deps = [
":Main",
":Lib",
diff --git a/Telegram/Info.plist b/Telegram/Info.plist
index 140f3cf30d..d157492d3a 100644
--- a/Telegram/Info.plist
+++ b/Telegram/Info.plist
@@ -14,172 +14,6 @@
${PRODUCT_NAME}
CFBundleExecutable
$(EXECUTABLE_NAME)
- CFBundleIcons
-
- CFBundleAlternateIcons
-
- Black
-
- CFBundleIconFiles
-
- BlackIcon
- BlackNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlackClassic
-
- CFBundleIconFiles
-
- BlackClassicIcon
- BlackClassicNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlackFilled
-
- CFBundleIconFiles
-
- BlackFilledIcon
-
- UIPrerenderedIcon
-
-
- Blue
-
- CFBundleIconFiles
-
- BlueIcon
- BlueNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlueClassic
-
- CFBundleIconFiles
-
- BlueClassicIcon
- BlueClassicNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlueFilled
-
- CFBundleIconFiles
-
- BlueFilledIcon
-
- UIPrerenderedIcon
-
-
- WhiteFilled
-
- CFBundleIconFiles
-
- WhiteFilledIcon
-
- UIPrerenderedIcon
-
-
-
- CFBundlePrimaryIcon
-
- CFBundleIconName
- AppIconLLC
- UIPrerenderedIcon
-
-
-
- CFBundleIcons~ipad
-
- CFBundleAlternateIcons
-
- Black
-
- CFBundleIconFiles
-
- BlackIconIpad
- BlackIconLargeIpad
- BlackNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlackClassic
-
- CFBundleIconFiles
-
- BlackClassicIconIpad
- BlackClassicIconLargeIpad
- BlackClassicNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlackFilled
-
- CFBundleIconFiles
-
- BlackFilledIconIpad
- BlackFilledIconLargeIpad
-
- UIPrerenderedIcon
-
-
- Blue
-
- CFBundleIconFiles
-
- BlueIconIpad
- BlueIconLargeIpad
- BlueNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlueClassic
-
- CFBundleIconFiles
-
- BlueClassicIconIpad
- BlueClassicIconLargeIpad
- BlueClassicNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlueFilled
-
- CFBundleIconFiles
-
- BlueFilledIconIpad
- BlueFilledIconLargeIpad
-
- UIPrerenderedIcon
-
-
- WhiteFilled
-
- CFBundleIconFiles
-
- WhiteFilledIcon
-
- UIPrerenderedIcon
-
-
-
- CFBundlePrimaryIcon
-
- CFBundleIconName
- AppIconLLC
- UIPrerenderedIcon
-
-
-
CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
diff --git a/Telegram/NotificationService/Attachments.m b/Telegram/NotificationService/Attachments.m
index 29d498dc2d..28ae322de9 100644
--- a/Telegram/NotificationService/Attachments.m
+++ b/Telegram/NotificationService/Attachments.m
@@ -1,10 +1,6 @@
#import "Attachments.h"
-#ifdef BUCK
#import
-#else
-#import
-#endif
#import "Api.h"
diff --git a/Telegram/NotificationService/Serialization.h b/Telegram/NotificationService/Serialization.h
index d2beb976d6..1089c5a010 100644
--- a/Telegram/NotificationService/Serialization.h
+++ b/Telegram/NotificationService/Serialization.h
@@ -1,10 +1,6 @@
#import
-#ifdef BUCK
#import
-#else
-#import
-#endif
NS_ASSUME_NONNULL_BEGIN
diff --git a/Telegram/NotificationService/StoredAccountInfos.m b/Telegram/NotificationService/StoredAccountInfos.m
index 4f60eac49b..424aa3aefc 100644
--- a/Telegram/NotificationService/StoredAccountInfos.m
+++ b/Telegram/NotificationService/StoredAccountInfos.m
@@ -1,10 +1,6 @@
#import "StoredAccountInfos.h"
-#ifdef BUCK
#import
-#else
-#import
-#endif
#import
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIcon@2x-1.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIcon@2x-1.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIcon@2x-1.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIcon@2x-1.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIcon@2x.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIcon@2x.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIcon@2x.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIcon@2x.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIcon@3x.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIcon@3x.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIcon@3x.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIcon@3x.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIconIpad.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIconIpad.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIconIpad.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIconIpad.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIconIpad@2x.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIconIpad@2x.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIconIpad@2x.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIconIpad@2x.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIconLargeIpad@2x.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIconLargeIpad@2x.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueIconLargeIpad@2x.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueIconLargeIpad@2x.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueNotificationIcon.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueNotificationIcon.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueNotificationIcon.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueNotificationIcon.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@2x-1.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@2x-1.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@2x-1.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@2x-1.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@2x.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@2x.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@2x.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@2x.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@3x.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@3x.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@3x.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/BlueNotificationIcon@3x.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Contents.json b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Contents.json
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Contents.json
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Contents.json
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple-iTunesArtwork.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple-iTunesArtwork.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple-iTunesArtwork.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple-iTunesArtwork.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@29x29.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@29x29.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@29x29.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@29x29.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@40x40-1.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@40x40-1.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@40x40-1.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@40x40-1.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@58x58-1.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@58x58-1.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@58x58-1.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@58x58-1.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@58x58.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@58x58.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@58x58.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@58x58.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@80x80-1.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@80x80-1.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@80x80-1.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@80x80-1.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@80x80.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@80x80.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@80x80.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@80x80.png
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@87x87.png b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@87x87.png
similarity index 100%
rename from Telegram/Telegram-iOS/Icons.xcassets/AppIconLLC.appiconset/Simple@87x87.png
rename to Telegram/Telegram-iOS/DefaultAppIcon.xcassets/AppIconLLC.appiconset/Simple@87x87.png
diff --git a/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/Contents.json b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/Contents.json
new file mode 100644
index 0000000000..da4a164c91
--- /dev/null
+++ b/Telegram/Telegram-iOS/DefaultAppIcon.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/Contents.json b/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index b1dd0aaddc..0000000000
--- a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "iphone",
- "size" : "20x20",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "20x20",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "29x29",
- "scale" : "3x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "idiom" : "iphone",
- "size" : "40x40",
- "scale" : "3x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "icon@120px.png",
- "scale" : "2x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "icon@180px.png",
- "scale" : "3x"
- },
- {
- "idiom" : "ipad",
- "size" : "20x20",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "20x20",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "29x29",
- "scale" : "2x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "1x"
- },
- {
- "idiom" : "ipad",
- "size" : "40x40",
- "scale" : "2x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "icon@76px.png",
- "scale" : "1x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "icon@152px.png",
- "scale" : "2x"
- },
- {
- "size" : "83.5x83.5",
- "idiom" : "ipad",
- "filename" : "icon@167px.png",
- "scale" : "2x"
- },
- {
- "size" : "1024x1024",
- "idiom" : "ios-marketing",
- "filename" : "icon@1024px.png",
- "scale" : "1x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
\ No newline at end of file
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@1024px.png b/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@1024px.png
deleted file mode 100644
index 92875c6983..0000000000
Binary files a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@1024px.png and /dev/null differ
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@120px.png b/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@120px.png
deleted file mode 100644
index 5e863192c3..0000000000
Binary files a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@120px.png and /dev/null differ
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@152px.png b/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@152px.png
deleted file mode 100644
index 733e14018b..0000000000
Binary files a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@152px.png and /dev/null differ
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@167px.png b/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@167px.png
deleted file mode 100644
index 6ae90ed3cd..0000000000
Binary files a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@167px.png and /dev/null differ
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@180px.png b/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@180px.png
deleted file mode 100644
index 715eb5d04a..0000000000
Binary files a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@180px.png and /dev/null differ
diff --git a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@76px.png b/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@76px.png
deleted file mode 100644
index 6473725462..0000000000
Binary files a/Telegram/Telegram-iOS/Icons.xcassets/AppIcon.appiconset/icon@76px.png and /dev/null differ
diff --git a/Telegram/Telegram-iOS/Info.plist b/Telegram/Telegram-iOS/Info.plist
index f66daefe49..e7ca119cd8 100644
--- a/Telegram/Telegram-iOS/Info.plist
+++ b/Telegram/Telegram-iOS/Info.plist
@@ -14,172 +14,6 @@
${APP_NAME}
CFBundleExecutable
$(EXECUTABLE_NAME)
- CFBundleIcons
-
- CFBundleAlternateIcons
-
- Black
-
- CFBundleIconFiles
-
- BlackIcon
- BlackNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlackClassic
-
- CFBundleIconFiles
-
- BlackClassicIcon
- BlackClassicNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlackFilled
-
- CFBundleIconFiles
-
- BlackFilledIcon
-
- UIPrerenderedIcon
-
-
- Blue
-
- CFBundleIconFiles
-
- BlueIcon
- BlueNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlueClassic
-
- CFBundleIconFiles
-
- BlueClassicIcon
- BlueClassicNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlueFilled
-
- CFBundleIconFiles
-
- BlueFilledIcon
-
- UIPrerenderedIcon
-
-
- WhiteFilled
-
- CFBundleIconFiles
-
- WhiteFilledIcon
-
- UIPrerenderedIcon
-
-
-
- CFBundlePrimaryIcon
-
- CFBundleIconName
- AppIconLLC
- UIPrerenderedIcon
-
-
-
- CFBundleIcons~ipad
-
- CFBundleAlternateIcons
-
- Black
-
- CFBundleIconFiles
-
- BlackIconIpad
- BlackIconLargeIpad
- BlackNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlackClassic
-
- CFBundleIconFiles
-
- BlackClassicIconIpad
- BlackClassicIconLargeIpad
- BlackClassicNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlackFilled
-
- CFBundleIconFiles
-
- BlackFilledIconIpad
- BlackFilledIconLargeIpad
-
- UIPrerenderedIcon
-
-
- Blue
-
- CFBundleIconFiles
-
- BlueIconIpad
- BlueIconLargeIpad
- BlueNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlueClassic
-
- CFBundleIconFiles
-
- BlueClassicIconIpad
- BlueClassicIconLargeIpad
- BlueClassicNotificationIcon
-
- UIPrerenderedIcon
-
-
- BlueFilled
-
- CFBundleIconFiles
-
- BlueFilledIconIpad
- BlueFilledIconLargeIpad
-
- UIPrerenderedIcon
-
-
- WhiteFilled
-
- CFBundleIconFiles
-
- WhiteFilledIcon
-
- UIPrerenderedIcon
-
-
-
- CFBundlePrimaryIcon
-
- CFBundleIconName
- AppIconLLC
- UIPrerenderedIcon
-
-
-
CFBundleIdentifier
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
diff --git a/Telegram/Telegram-iOS/Telegram-iOS-Hockeyapp.entitlements b/Telegram/Telegram-iOS/Telegram-iOS-Hockeyapp.entitlements
index 97391bb537..f4771f658b 100644
--- a/Telegram/Telegram-iOS/Telegram-iOS-Hockeyapp.entitlements
+++ b/Telegram/Telegram-iOS/Telegram-iOS-Hockeyapp.entitlements
@@ -34,5 +34,7 @@
com.apple.developer.pushkit.unrestricted-voip
+ application-identifier
+ X834Q8SBVP.org.telegram.Telegram-iOS
diff --git a/Telegram/Watch/App/Info.plist b/Telegram/Watch/App/Info.plist
index 883fc23d8c..d965321748 100644
--- a/Telegram/Watch/App/Info.plist
+++ b/Telegram/Watch/App/Info.plist
@@ -4,8 +4,6 @@
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
- CFBundleDisplayName
- $(APP_NAME)
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
@@ -16,10 +14,6 @@
$(PRODUCT_NAME)
CFBundlePackageType
APPL
- CFBundleShortVersionString
- $(PRODUCT_BUNDLE_SHORT_VERSION)
- CFBundleVersion
- ${BUILD_NUMBER}
UIDeviceFamily
4
@@ -29,8 +23,6 @@
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
- WKCompanionAppBundleIdentifier
- $(APP_BUNDLE_ID)
WKWatchKitApp
diff --git a/Telegram/Watch/Extension/Info.plist b/Telegram/Watch/Extension/Info.plist
index 4eb1d3e62e..483b83db68 100644
--- a/Telegram/Watch/Extension/Info.plist
+++ b/Telegram/Watch/Extension/Info.plist
@@ -4,8 +4,6 @@
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
- CFBundleDisplayName
- $(APP_NAME)
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
@@ -16,20 +14,6 @@
$(PRODUCT_NAME)
CFBundlePackageType
XPC!
- CFBundleShortVersionString
- $(PRODUCT_BUNDLE_SHORT_VERSION)
- CFBundleVersion
- ${BUILD_NUMBER}
- NSExtension
-
- NSExtensionAttributes
-
- WKAppBundleIdentifier
- $(APP_BUNDLE_ID).watchkitapp
-
- NSExtensionPointIdentifier
- com.apple.watchkit
-
WKExtensionDelegateClassName
TGExtensionDelegate
diff --git a/Wallet/Wallet.tulsiproj/Configs/Default.tulsigen b/Wallet/Wallet.tulsiproj/Configs/Default.tulsigen
index 48cf94fa8c..127fcc96b5 100644
--- a/Wallet/Wallet.tulsiproj/Configs/Default.tulsigen
+++ b/Wallet/Wallet.tulsiproj/Configs/Default.tulsigen
@@ -9,7 +9,7 @@
],
"optionSet" : {
"BazelBuildOptionsDebug" : {
- "p" : "$(inherited) --features=swift.use_global_module_cache --features=swift.swift.no_generated_header --spawn_strategy=standalone --strategy=SwiftCompile=standalone"
+ "p" : "$(inherited) --features=swift.use_global_module_cache --features=swift.swift.no_generated_header --spawn_strategy=standalone --strategy=SwiftCompile=standalone --define=wallet_bundle_id=org.ton.TonWallet-iOS"
},
"BazelBuildOptionsRelease" : {
"p" : "$(inherited)"
diff --git a/build-system/bazel-rules/rules_apple b/build-system/bazel-rules/rules_apple
index 2e869ab0be..6e1f592277 160000
--- a/build-system/bazel-rules/rules_apple
+++ b/build-system/bazel-rules/rules_apple
@@ -1 +1 @@
-Subproject commit 2e869ab0be373d4bd25f5da92052e3c51434e20f
+Subproject commit 6e1f592277650a2727b6e84705ec1a2dc17764fa
diff --git a/build-system/copy-provisioning-profiles.sh b/build-system/copy-provisioning-profiles.sh
index 237223e678..cf9a1d651f 100755
--- a/build-system/copy-provisioning-profiles.sh
+++ b/build-system/copy-provisioning-profiles.sh
@@ -1,12 +1,54 @@
-#!/bin/zsh
+#!/bin/sh
set -e
-if [ "$PROVISIONING_PROFILE_SEARCH_PATH" = "" ]; then
- >&2 echo "PROVISIONING_PROFILE_SEARCH_PATH not defined"
+if [ "$CODESIGNING_DATA_PATH" = "" ]; then
+ >&2 echo "CODESIGNING_DATA_PATH not defined"
exit 1
fi
+EXPECTED_VARIABLES=(\
+ DEVELOPMENT_PROVISIONING_PROFILE_APP \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_SHARE \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_WIDGET \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONSERVICE \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_NOTIFICATIONCONTENT \
+ DEVELOPMENT_PROVISIONING_PROFILE_EXTENSION_INTENTS \
+ DEVELOPMENT_PROVISIONING_PROFILE_WATCH_APP \
+ DEVELOPMENT_PROVISIONING_PROFILE_WATCH_EXTENSION \
+)
+
+EXPECTED_VARIABLE_NAMES=(\
+ Telegram \
+ Share \
+ Widget \
+ NotificationService \
+ NotificationContent \
+ Intents \
+ WatchApp \
+ WatchExtension \
+)
+
+SEARCH_NAMES=()
+
+MISSING_VARIABLES="0"
+for VARIABLE_NAME in ${EXPECTED_VARIABLES[@]}; do
+ if [ "${!VARIABLE_NAME}" = "" ]; then
+ echo "$VARIABLE_NAME not defined"
+ MISSING_VARIABLES="1"
+ fi
+done
+
+if [ "$MISSING_VARIABLES" == "1" ]; then
+ exit 1
+fi
+
+VARIABLE_COUNT=${#EXPECTED_VARIABLES[@]}
+for (( i=0; i<$VARIABLE_COUNT; i=i+1 )); do
+ VARIABLE_NAME="${EXPECTED_VARIABLES[$(($i))]}"
+ SEARCH_NAMES=("${SEARCH_NAMES[@]}" "${EXPECTED_VARIABLE_NAMES[$i]}" "${!VARIABLE_NAME}")
+done
+
touch "build-input/data/BUILD"
OUTPUT_DIRECTORY="build-input/data/provisioning-profiles"
@@ -18,7 +60,6 @@ touch "$BUILD_PATH"
echo "exports_files([" >> "$BUILD_PATH"
-SEARCH_NAMES=($@)
ELEMENT_COUNT=${#SEARCH_NAMES[@]}
REMAINDER=$(($ELEMENT_COUNT % 2))
@@ -27,18 +68,17 @@ if [ $REMAINDER != 0 ]; then
exit 1
fi
-declare -A FOUND_PROFILES
-
-for PROFILE in `find "$PROVISIONING_PROFILE_SEARCH_PATH" -type f -name "*.mobileprovision"`; do
+for PROFILE in `find "$CODESIGNING_DATA_PATH" -type f -name "*.mobileprovision"`; do
PROFILE_DATA=$(security cms -D -i "$PROFILE")
PROFILE_NAME=$(/usr/libexec/PlistBuddy -c "Print :Name" /dev/stdin <<< $(echo $PROFILE_DATA))
- for (( i=1; i<$ELEMENT_COUNT+1; i=i+2 )); do
+ for (( i=0; i<$ELEMENT_COUNT; i=i+2 )); do
ID=${SEARCH_NAMES[$i]}
SEARCH_NAME=${SEARCH_NAMES[$(($i + 1))]}
if [ "$PROFILE_NAME" = "$SEARCH_NAME" ]; then
- if [ "${FOUND_PROFILES[\"$SEARCH_NAME\"]}" = "" ]; then
- FOUND_PROFILES["$SEARCH_NAME"]="$PROFILE"
- else
+ VARIABLE_NAME="FOUND_PROFILE_$ID"
+ if [ "${!VARIABLE_NAME}" = "" ]; then
+ eval "FOUND_PROFILE_$ID=\"$PROFILE\""
+ else
>&2 echo "Found multiple profiles with name \"$SEARCH_NAME\""
exit 1
fi
@@ -46,10 +86,11 @@ for PROFILE in `find "$PROVISIONING_PROFILE_SEARCH_PATH" -type f -name "*.mobile
done
done
-for (( i=1; i<$ELEMENT_COUNT+1; i=i+2 )); do
+for (( i=0; i<$ELEMENT_COUNT; i=i+2 )); do
ID=${SEARCH_NAMES[$i]}
SEARCH_NAME=${SEARCH_NAMES[$(($i + 1))]}
- FOUND_PROFILE="${FOUND_PROFILES[\"$SEARCH_NAME\"]}"
+ VARIABLE_NAME="FOUND_PROFILE_$ID"
+ FOUND_PROFILE="${!VARIABLE_NAME}"
if [ "$FOUND_PROFILE" = "" ]; then
>&2 echo "Profile \"$SEARCH_NAME\" not found"
exit 1
diff --git a/build-system/generate-xcode-project.sh b/build-system/generate-xcode-project.sh
new file mode 100755
index 0000000000..e32fb118ac
--- /dev/null
+++ b/build-system/generate-xcode-project.sh
@@ -0,0 +1,93 @@
+#!/bin/zsh
+
+set -e
+
+BAZEL="$(which bazel)"
+if [ "$BAZEL" = "" ]; then
+ echo "bazel not found in PATH"
+ exit 1
+fi
+
+EXPECTED_VARIABLES=(\
+ BUILD_NUMBER \
+ APP_VERSION \
+ BUNDLE_ID \
+ API_ID \
+ API_HASH \
+ APP_CENTER_ID \
+ IS_INTERNAL_BUILD \
+ IS_APPSTORE_BUILD \
+ APPSTORE_ID \
+ APP_SPECIFIC_URL_SCHEME \
+)
+
+MISSING_VARIABLES="0"
+for VARIABLE_NAME in ${EXPECTED_VARIABLES[@]}; do
+ if [ "${!VARIABLE_NAME}" = "" ]; then
+ echo "$VARIABLE_NAME not defined"
+ MISSING_VARIABLES="1"
+ fi
+done
+
+if [ "$MISSING_VARIABLES" == "1" ]; then
+ exit 1
+fi
+
+VARIABLES_DIRECTORY="build-input/data"
+mkdir -p "$VARIABLES_DIRECTORY"
+VARIABLES_PATH="$VARIABLES_DIRECTORY/variables.bzl"
+rm -f "$VARIABLES_PATH"
+
+GEN_DIRECTORY="build-input/gen/project"
+rm -rf "$GEN_DIRECTORY"
+mkdir -p "$GEN_DIRECTORY"
+
+echo "telegram_build_number = \"$BUILD_NUMBER\"" >> "$VARIABLES_PATH"
+echo "telegram_version = \"$APP_VERSION\"" >> "$VARIABLES_PATH"
+echo "telegram_bundle_id = \"$BUNDLE_ID\"" >> "$VARIABLES_PATH"
+echo "telegram_api_id = \"$API_ID\"" >> "$VARIABLES_PATH"
+echo "telegram_api_hash = \"$API_HASH\"" >> "$VARIABLES_PATH"
+echo "telegram_app_center_id = \"$APP_CENTER_ID\"" >> "$VARIABLES_PATH"
+echo "telegram_is_internal_build = \"$IS_INTERNAL_BUILD\"" >> "$VARIABLES_PATH"
+echo "telegram_is_appstore_build = \"$IS_APPSTORE_BUILD\"" >> "$VARIABLES_PATH"
+echo "telegram_appstore_id = \"$APPSTORE_ID\"" >> "$VARIABLES_PATH"
+echo "telegram_app_specific_url_scheme = \"$APP_SPECIFIC_URL_SCHEME\"" >> "$VARIABLES_PATH"
+
+BAZEL_OPTIONS=(\
+ --features=swift.use_global_module_cache \
+ --spawn_strategy=standalone \
+ --strategy=SwiftCompile=standalone \
+ --define=telegram_build_number="$BUILD_NUMBER" \
+ --define=telegram_version="$APP_VERSION" \
+ --define=telegram_bundle_id="$BUNDLE_ID" \
+ --define=telegram_api_id="$API_ID" \
+ --define=telegram_api_hash="$API_HASH" \
+ --define=telegram_app_center_id="$APP_CENTER_ID" \
+ --define=telegram_is_internal_build="$IS_INTERNAL_BUILD" \
+ --define=telegram_is_appstore_build="$IS_APPSTORE_BUILD" \
+ --define=telegram_appstore_id="$APPSTORE_ID" \
+ --define=telegram_app_specific_url_scheme="$APP_SPECIFIC_URL_SCHEME" \
+)
+
+$HOME/Applications/Tulsi.app/Contents/MacOS/Tulsi -- \
+ --verbose \
+ --create-tulsiproj Telegram \
+ --workspaceroot ./ \
+ --bazel "$BAZEL" \
+ --outputfolder "$GEN_DIRECTORY" \
+ --target Telegram:Telegram \
+ --target Telegram:Main \
+ --target Telegram:Lib \
+
+PATCH_OPTIONS="BazelBuildOptionsDebug BazelBuildOptionsRelease"
+for NAME in $PATCH_OPTIONS; do
+ sed -i "" -e '1h;2,$H;$!d;g' -e 's/\("'"$NAME"'" : {\n[ ]*"p" : "$(inherited)\)/\1'" ${BAZEL_OPTIONS[*]}"'/' "$GEN_DIRECTORY/Telegram.tulsiproj/Configs/Telegram.tulsigen"
+done
+
+sed -i "" -e '1h;2,$H;$!d;g' -e 's/\("sourceFilters" : \[\n[ ]*\)"\.\/\.\.\."/\1"Telegram\/...", "submodules\/..."/' "$GEN_DIRECTORY/Telegram.tulsiproj/Configs/Telegram.tulsigen"
+
+${HOME}/Applications/Tulsi.app/Contents/MacOS/Tulsi -- \
+ --verbose \
+ --genconfig "$GEN_DIRECTORY/Telegram.tulsiproj:Telegram" \
+ --bazel "$BAZEL" \
+ --outputfolder "$GEN_DIRECTORY" \
diff --git a/build-system/info_plist_fragment.bzl b/build-system/info_plist_fragment.bzl
new file mode 100644
index 0000000000..6c5e2c9029
--- /dev/null
+++ b/build-system/info_plist_fragment.bzl
@@ -0,0 +1,51 @@
+load("//build-system:defines.bzl",
+ "string_value",
+)
+
+def _info_plist_fragment(ctx):
+ output = ctx.outputs.out
+
+ found_keys = list()
+ template = ctx.attr.template
+ current_start = 0
+ for i in range(len(template)):
+ start_index = template.find("{", current_start)
+ if start_index == -1:
+ break
+ end_index = template.find("}", start_index + 1)
+ if end_index == -1:
+ fail("Could not find the matching '}' for the '{' at {}".format(start_index))
+ found_keys.append(template[start_index + 1:end_index])
+ current_start = end_index + 1
+
+ resolved_values = dict()
+ for key in found_keys:
+ value = ctx.var.get(key, None)
+ if value == None:
+ fail("Expected value for --define={} was not found".format(key))
+ resolved_values[key] = value
+
+ plist_string = """
+
+
+
+
+ """ + template.format(**resolved_values) + """
+
+
+ """
+
+ ctx.actions.write(
+ output = output,
+ content = plist_string,
+ )
+
+info_plist_fragment = rule(
+ implementation = _info_plist_fragment,
+ attrs = {
+ "template": attr.string(mandatory = True),
+ },
+ outputs = {
+ "out": "%{name}.plist"
+ },
+)
diff --git a/submodules/AppLock/Sources/AppLock.swift b/submodules/AppLock/Sources/AppLock.swift
index e339ed19ad..112873aac4 100644
--- a/submodules/AppLock/Sources/AppLock.swift
+++ b/submodules/AppLock/Sources/AppLock.swift
@@ -9,6 +9,7 @@ import TelegramPresentationData
import PasscodeUI
import TelegramUIPreferences
import ImageBlur
+import FastBlur
import AppLockState
private func isLocked(passcodeSettings: PresentationPasscodeSettings, state: LockState, isApplicationActive: Bool) -> Bool {
diff --git a/submodules/BuildConfig/BUILD b/submodules/BuildConfig/BUILD
index 8aa50e3447..347afe08eb 100644
--- a/submodules/BuildConfig/BUILD
+++ b/submodules/BuildConfig/BUILD
@@ -1,12 +1,12 @@
load(
- "@bazel_skylib//rules:common_settings.bzl",
- "string_flag",
-)
-
-string_flag(
- name = "apiId",
- build_setting_default = "",
- visibility = ["//visibility:public"],
+ "//build-input/data:variables.bzl",
+ "telegram_api_id",
+ "telegram_api_hash",
+ "telegram_app_center_id",
+ "telegram_is_internal_build",
+ "telegram_is_appstore_build",
+ "telegram_appstore_id",
+ "telegram_app_specific_url_scheme",
)
objc_library(
@@ -17,13 +17,13 @@ objc_library(
"Sources/*.m",
]),
copts = [
- '-DAPP_CONFIG_API_ID=0',
- '-DAPP_CONFIG_API_HASH="1"',
- '-DAPP_CONFIG_APP_CENTER_ID="1"',
- '-DAPP_CONFIG_IS_INTERNAL_BUILD=false',
- '-DAPP_CONFIG_IS_APPSTORE_BUILD=true',
- '-DAPP_CONFIG_APPSTORE_ID=0',
- '-DAPP_SPECIFIC_URL_SCHEME="1"',
+ "-DAPP_CONFIG_API_ID={}".format(telegram_api_id),
+ "-DAPP_CONFIG_API_HASH=\\\"{}\\\"".format(telegram_api_hash),
+ "-DAPP_CONFIG_APP_CENTER_ID=\\\"{}\\\"".format(telegram_app_center_id),
+ "-DAPP_CONFIG_IS_INTERNAL_BUILD={}".format(telegram_is_internal_build),
+ "-DAPP_CONFIG_IS_APPSTORE_BUILD={}".format(telegram_is_appstore_build),
+ "-DAPP_CONFIG_APPSTORE_ID={}".format(telegram_appstore_id),
+ "-DAPP_SPECIFIC_URL_SCHEME=\\\"{}\\\"".format(telegram_app_specific_url_scheme),
],
hdrs = glob([
"Sources/*.h",
diff --git a/submodules/BuildConfigExtra/BUILD b/submodules/BuildConfigExtra/BUILD
new file mode 100644
index 0000000000..7e3972e6a0
--- /dev/null
+++ b/submodules/BuildConfigExtra/BUILD
@@ -0,0 +1,25 @@
+
+objc_library(
+ name = "BuildConfigExtra",
+ enable_modules = True,
+ module_name = "BuildConfigExtra",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ deps = [
+ "//submodules/PKCS:PKCS",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/BuildConfigExtra/Sources/BuildConfigExtra.h b/submodules/BuildConfigExtra/PublicHeaders/BuildConfigExtra/BuildConfigExtra.h
similarity index 100%
rename from submodules/BuildConfigExtra/Sources/BuildConfigExtra.h
rename to submodules/BuildConfigExtra/PublicHeaders/BuildConfigExtra/BuildConfigExtra.h
diff --git a/submodules/BuildConfigExtra/Sources/BuildConfigExtra.m b/submodules/BuildConfigExtra/Sources/BuildConfigExtra.m
index ddb6a760ca..fcad93dc2a 100644
--- a/submodules/BuildConfigExtra/Sources/BuildConfigExtra.m
+++ b/submodules/BuildConfigExtra/Sources/BuildConfigExtra.m
@@ -1,4 +1,4 @@
-#import "BuildConfigExtra.h"
+#import
#include
#include
diff --git a/submodules/Crc32/BUILD b/submodules/Crc32/BUILD
index 85f82cd801..6a635794e7 100644
--- a/submodules/Crc32/BUILD
+++ b/submodules/Crc32/BUILD
@@ -4,7 +4,8 @@ objc_library(
enable_modules = True,
module_name = "Crc32",
srcs = glob([
- "Sources/*.m",
+ "Sources/**/*.m",
+ "Sources/**/*.h",
]),
hdrs = glob([
"PublicHeaders/**/*.h",
@@ -13,7 +14,7 @@ objc_library(
"PublicHeaders",
],
sdk_frameworks = [
- "Foundation",
+ "Foundation",
],
visibility = [
"//visibility:public",
diff --git a/submodules/Display/Source/ImmediateTextNode.swift b/submodules/Display/Source/ImmediateTextNode.swift
index 1f6c52f350..7c3bba9919 100644
--- a/submodules/Display/Source/ImmediateTextNode.swift
+++ b/submodules/Display/Source/ImmediateTextNode.swift
@@ -26,6 +26,8 @@ public class ImmediateTextNode: TextNode {
return .byTruncatingMiddle
case .end:
return .byTruncatingTail
+ @unknown default:
+ return .byTruncatingTail
}
} set(value) {
switch value {
@@ -186,4 +188,4 @@ public class ASTextNode: ImmediateTextNode {
override public func calculateSizeThatFits(_ constrainedSize: CGSize) -> CGSize {
return self.updateLayout(constrainedSize)
}
-}
\ No newline at end of file
+}
diff --git a/submodules/Display/Source/TextNode.swift b/submodules/Display/Source/TextNode.swift
index 2cbb4708ca..6b68ec1792 100644
--- a/submodules/Display/Source/TextNode.swift
+++ b/submodules/Display/Source/TextNode.swift
@@ -132,7 +132,8 @@ public final class TextNodeLayout: NSObject {
fileprivate let truncationType: CTLineTruncationType
fileprivate let backgroundColor: UIColor?
fileprivate let constrainedSize: CGSize
- fileprivate let alignment: NSTextAlignment
+ fileprivate let explicitAlignment: NSTextAlignment
+ fileprivate let resolvedAlignment: NSTextAlignment
fileprivate let lineSpacing: CGFloat
fileprivate let cutout: TextNodeCutout?
fileprivate let insets: UIEdgeInsets
@@ -147,12 +148,13 @@ public final class TextNodeLayout: NSObject {
fileprivate let textStroke: (UIColor, CGFloat)?
public let hasRTL: Bool
- fileprivate init(attributedString: NSAttributedString?, maximumNumberOfLines: Int, truncationType: CTLineTruncationType, constrainedSize: CGSize, alignment: NSTextAlignment, lineSpacing: CGFloat, cutout: TextNodeCutout?, insets: UIEdgeInsets, size: CGSize, rawTextSize: CGSize, truncated: Bool, firstLineOffset: CGFloat, lines: [TextNodeLine], blockQuotes: [TextNodeBlockQuote], backgroundColor: UIColor?, lineColor: UIColor?, textShadowColor: UIColor?, textStroke: (UIColor, CGFloat)?) {
+ fileprivate init(attributedString: NSAttributedString?, maximumNumberOfLines: Int, truncationType: CTLineTruncationType, constrainedSize: CGSize, explicitAlignment: NSTextAlignment, resolvedAlignment: NSTextAlignment, lineSpacing: CGFloat, cutout: TextNodeCutout?, insets: UIEdgeInsets, size: CGSize, rawTextSize: CGSize, truncated: Bool, firstLineOffset: CGFloat, lines: [TextNodeLine], blockQuotes: [TextNodeBlockQuote], backgroundColor: UIColor?, lineColor: UIColor?, textShadowColor: UIColor?, textStroke: (UIColor, CGFloat)?) {
self.attributedString = attributedString
self.maximumNumberOfLines = maximumNumberOfLines
self.truncationType = truncationType
self.constrainedSize = constrainedSize
- self.alignment = alignment
+ self.explicitAlignment = explicitAlignment
+ self.resolvedAlignment = resolvedAlignment
self.lineSpacing = lineSpacing
self.cutout = cutout
self.insets = insets
@@ -240,7 +242,7 @@ public final class TextNodeLayout: NSObject {
for line in self.lines {
lineIndex += 1
var lineFrame = CGRect(origin: CGPoint(x: line.frame.origin.x, y: line.frame.origin.y - line.frame.size.height + self.firstLineOffset), size: line.frame.size)
- switch self.alignment {
+ switch self.resolvedAlignment {
case .center:
lineFrame.origin.x = floor((self.size.width - lineFrame.size.width) / 2.0)
case .natural:
@@ -308,7 +310,7 @@ public final class TextNodeLayout: NSObject {
for line in self.lines {
lineIndex += 1
var lineFrame = CGRect(origin: CGPoint(x: line.frame.origin.x, y: line.frame.origin.y - line.frame.size.height + self.firstLineOffset), size: line.frame.size)
- switch self.alignment {
+ switch self.resolvedAlignment {
case .center:
lineFrame.origin.x = floor((self.size.width - lineFrame.size.width) / 2.0)
case .natural:
@@ -383,7 +385,7 @@ public final class TextNodeLayout: NSObject {
for line in self.lines {
lineIndex += 1
var lineFrame = CGRect(origin: CGPoint(x: line.frame.origin.x, y: line.frame.origin.y - line.frame.size.height + self.firstLineOffset), size: line.frame.size)
- switch self.alignment {
+ switch self.resolvedAlignment {
case .center:
lineFrame.origin.x = floor((self.size.width - lineFrame.size.width) / 2.0)
case .natural:
@@ -823,17 +825,26 @@ public class TextNode: ASDisplayNode {
private class func calculateLayout(attributedString: NSAttributedString?, minimumNumberOfLines: Int, maximumNumberOfLines: Int, truncationType: CTLineTruncationType, backgroundColor: UIColor?, constrainedSize: CGSize, alignment: NSTextAlignment, lineSpacingFactor: CGFloat, cutout: TextNodeCutout?, insets: UIEdgeInsets, lineColor: UIColor?, textShadowColor: UIColor?, textStroke: (UIColor, CGFloat)?) -> TextNodeLayout {
if let attributedString = attributedString {
+
let stringLength = attributedString.length
let font: CTFont
+ let resolvedAlignment: NSTextAlignment
+
if stringLength != 0 {
if let stringFont = attributedString.attribute(NSAttributedString.Key.font, at: 0, effectiveRange: nil) {
font = stringFont as! CTFont
} else {
font = defaultFont
}
+ if let paragraphStyle = attributedString.attribute(NSAttributedString.Key.paragraphStyle, at: 0, effectiveRange: nil) as? NSParagraphStyle {
+ resolvedAlignment = paragraphStyle.alignment
+ } else {
+ resolvedAlignment = alignment
+ }
} else {
font = defaultFont
+ resolvedAlignment = alignment
}
let fontAscent = CTFontGetAscent(font)
@@ -847,7 +858,7 @@ public class TextNode: ASDisplayNode {
var maybeTypesetter: CTTypesetter?
maybeTypesetter = CTTypesetterCreateWithAttributedString(attributedString as CFAttributedString)
if maybeTypesetter == nil {
- return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, alignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(), rawTextSize: CGSize(), truncated: false, firstLineOffset: 0.0, lines: [], blockQuotes: [], backgroundColor: backgroundColor, lineColor: lineColor, textShadowColor: textShadowColor, textStroke: textStroke)
+ return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, explicitAlignment: alignment, resolvedAlignment: resolvedAlignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(), rawTextSize: CGSize(), truncated: false, firstLineOffset: 0.0, lines: [], blockQuotes: [], backgroundColor: backgroundColor, lineColor: lineColor, textShadowColor: textShadowColor, textStroke: textStroke)
}
let typesetter = maybeTypesetter!
@@ -1056,9 +1067,9 @@ public class TextNode: ASDisplayNode {
}
}
- return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, alignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(width: ceil(layoutSize.width) + insets.left + insets.right, height: ceil(layoutSize.height) + insets.top + insets.bottom), rawTextSize: CGSize(width: ceil(rawLayoutSize.width) + insets.left + insets.right, height: ceil(rawLayoutSize.height) + insets.top + insets.bottom), truncated: truncated, firstLineOffset: firstLineOffset, lines: lines, blockQuotes: blockQuotes, backgroundColor: backgroundColor, lineColor: lineColor, textShadowColor: textShadowColor, textStroke: textStroke)
+ return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, explicitAlignment: alignment, resolvedAlignment: resolvedAlignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(width: ceil(layoutSize.width) + insets.left + insets.right, height: ceil(layoutSize.height) + insets.top + insets.bottom), rawTextSize: CGSize(width: ceil(rawLayoutSize.width) + insets.left + insets.right, height: ceil(rawLayoutSize.height) + insets.top + insets.bottom), truncated: truncated, firstLineOffset: firstLineOffset, lines: lines, blockQuotes: blockQuotes, backgroundColor: backgroundColor, lineColor: lineColor, textShadowColor: textShadowColor, textStroke: textStroke)
} else {
- return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, alignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(), rawTextSize: CGSize(), truncated: false, firstLineOffset: 0.0, lines: [], blockQuotes: [], backgroundColor: backgroundColor, lineColor: lineColor, textShadowColor: textShadowColor, textStroke: textStroke)
+ return TextNodeLayout(attributedString: attributedString, maximumNumberOfLines: maximumNumberOfLines, truncationType: truncationType, constrainedSize: constrainedSize, explicitAlignment: alignment, resolvedAlignment: alignment, lineSpacing: lineSpacingFactor, cutout: cutout, insets: insets, size: CGSize(), rawTextSize: CGSize(), truncated: false, firstLineOffset: 0.0, lines: [], blockQuotes: [], backgroundColor: backgroundColor, lineColor: lineColor, textShadowColor: textShadowColor, textStroke: textStroke)
}
}
@@ -1110,7 +1121,7 @@ public class TextNode: ASDisplayNode {
let textPosition = context.textPosition
context.textMatrix = CGAffineTransform(scaleX: 1.0, y: -1.0)
- let alignment = layout.alignment
+ let alignment = layout.resolvedAlignment
let offset = CGPoint(x: layout.insets.left, y: layout.insets.top)
for i in 0 ..< layout.lines.count {
@@ -1187,7 +1198,7 @@ public class TextNode: ASDisplayNode {
let layout: TextNodeLayout
var updated = false
- if let existingLayout = existingLayout, existingLayout.constrainedSize == arguments.constrainedSize && existingLayout.maximumNumberOfLines == arguments.maximumNumberOfLines && existingLayout.truncationType == arguments.truncationType && existingLayout.cutout == arguments.cutout && existingLayout.alignment == arguments.alignment && existingLayout.lineSpacing.isEqual(to: arguments.lineSpacing) {
+ if let existingLayout = existingLayout, existingLayout.constrainedSize == arguments.constrainedSize && existingLayout.maximumNumberOfLines == arguments.maximumNumberOfLines && existingLayout.truncationType == arguments.truncationType && existingLayout.cutout == arguments.cutout && existingLayout.explicitAlignment == arguments.alignment && existingLayout.lineSpacing.isEqual(to: arguments.lineSpacing) {
let stringMatch: Bool
var colorMatch: Bool = true
diff --git a/submodules/EncryptionKeyVisualization/BUILD b/submodules/EncryptionKeyVisualization/BUILD
new file mode 100644
index 0000000000..6717c60e4f
--- /dev/null
+++ b/submodules/EncryptionKeyVisualization/BUILD
@@ -0,0 +1,17 @@
+load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
+
+swift_library(
+ name = "EncryptionKeyVisualization",
+ module_name = "EncryptionKeyVisualization",
+ srcs = glob([
+ "Sources/**/*.swift",
+ ]),
+ deps = [
+ "//submodules/TelegramCore:TelegramCore",
+ "//submodules/SyncCore:SyncCore",
+ "//submodules/EncryptionKeyVisualization/Impl:EncryptionKeyVisualizationImpl",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/EncryptionKeyVisualization/Impl/BUILD b/submodules/EncryptionKeyVisualization/Impl/BUILD
new file mode 100644
index 0000000000..c4c7874874
--- /dev/null
+++ b/submodules/EncryptionKeyVisualization/Impl/BUILD
@@ -0,0 +1,22 @@
+
+objc_library(
+ name = "EncryptionKeyVisualizationImpl",
+ enable_modules = True,
+ module_name = "EncryptionKeyVisualizationImpl",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/EncryptionKeyVisualization/Impl/PublicHeaders/EncryptionKeyVisualizationImpl/EncryptionKeyVisualization.h b/submodules/EncryptionKeyVisualization/Impl/PublicHeaders/EncryptionKeyVisualizationImpl/EncryptionKeyVisualization.h
new file mode 100644
index 0000000000..12ed60d6cb
--- /dev/null
+++ b/submodules/EncryptionKeyVisualization/Impl/PublicHeaders/EncryptionKeyVisualizationImpl/EncryptionKeyVisualization.h
@@ -0,0 +1,5 @@
+#import
+
+#import
+
+
diff --git a/submodules/EncryptionKeyVisualization/Sources/SecretChatKeyVisualization.h b/submodules/EncryptionKeyVisualization/Impl/PublicHeaders/EncryptionKeyVisualizationImpl/SecretChatKeyVisualization.h
similarity index 100%
rename from submodules/EncryptionKeyVisualization/Sources/SecretChatKeyVisualization.h
rename to submodules/EncryptionKeyVisualization/Impl/PublicHeaders/EncryptionKeyVisualizationImpl/SecretChatKeyVisualization.h
diff --git a/submodules/EncryptionKeyVisualization/Sources/SecretChatKeyVisualization.m b/submodules/EncryptionKeyVisualization/Impl/Sources/SecretChatKeyVisualization.m
similarity index 98%
rename from submodules/EncryptionKeyVisualization/Sources/SecretChatKeyVisualization.m
rename to submodules/EncryptionKeyVisualization/Impl/Sources/SecretChatKeyVisualization.m
index 50d100e6f9..466ded7470 100644
--- a/submodules/EncryptionKeyVisualization/Sources/SecretChatKeyVisualization.m
+++ b/submodules/EncryptionKeyVisualization/Impl/Sources/SecretChatKeyVisualization.m
@@ -1,4 +1,4 @@
-#import "SecretChatKeyVisualization.h"
+#import
#import
diff --git a/submodules/EncryptionKeyVisualization/Sources/EncryptionKeyVisualization.h b/submodules/EncryptionKeyVisualization/Sources/EncryptionKeyVisualization.h
deleted file mode 100644
index f4cfd58533..0000000000
--- a/submodules/EncryptionKeyVisualization/Sources/EncryptionKeyVisualization.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import
-
-//! Project version number for EncryptionKeyVisualization.
-FOUNDATION_EXPORT double EncryptionKeyVisualizationVersionNumber;
-
-//! Project version string for EncryptionKeyVisualization.
-FOUNDATION_EXPORT const unsigned char EncryptionKeyVisualizationVersionString[];
-
-#import
-
-
diff --git a/submodules/EncryptionKeyVisualization/Sources/SecretChatKeyVisualization.swift b/submodules/EncryptionKeyVisualization/Sources/SecretChatKeyVisualization.swift
index cf974f1843..90a83ea5a9 100644
--- a/submodules/EncryptionKeyVisualization/Sources/SecretChatKeyVisualization.swift
+++ b/submodules/EncryptionKeyVisualization/Sources/SecretChatKeyVisualization.swift
@@ -1,6 +1,8 @@
import Foundation
+import UIKit
import TelegramCore
import SyncCore
+import EncryptionKeyVisualizationImpl
public func secretChatKeyImage(_ fingerprint: SecretChatKeyFingerprint, size: CGSize) -> UIImage? {
let keySignatureData = fingerprint.sha1.data()
diff --git a/submodules/InstantPageCache/BUILD b/submodules/InstantPageCache/BUILD
index 98b4cadd48..3294de3829 100644
--- a/submodules/InstantPageCache/BUILD
+++ b/submodules/InstantPageCache/BUILD
@@ -7,10 +7,10 @@ swift_library(
"Sources/**/*.swift",
]),
deps = [
- "//submodules/TelegramCore:TelegramCore#shared",
- "//submodules/SyncCore:SyncCore#shared",
- "//submodules/Postbox:Postbox#shared",
- "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared",
+ "//submodules/TelegramCore:TelegramCore",
+ "//submodules/SyncCore:SyncCore",
+ "//submodules/Postbox:Postbox",
+ "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit",
"//submodules/TelegramUIPreferences:TelegramUIPreferences",
"//submodules/PersistentStringHash:PersistentStringHash",
],
diff --git a/submodules/LegacyDataImport/BUILD b/submodules/LegacyDataImport/BUILD
new file mode 100644
index 0000000000..199ce4f386
--- /dev/null
+++ b/submodules/LegacyDataImport/BUILD
@@ -0,0 +1,23 @@
+load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
+
+swift_library(
+ name = "LegacyDataImport",
+ module_name = "LegacyDataImport",
+ srcs = glob([
+ "Sources/**/*.swift",
+ ]),
+ deps = [
+ "//submodules/TelegramCore:TelegramCore",
+ "//submodules/SyncCore:SyncCore",
+ "//submodules/Postbox:Postbox",
+ "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit",
+ "//submodules/TelegramNotices:TelegramNotices",
+ "//submodules/TelegramUIPreferences:TelegramUIPreferences",
+ "//submodules/RadialStatusNode:RadialStatusNode",
+ "//submodules/LegacyComponents:LegacyComponents",
+ "//submodules/LegacyDataImport/Impl:LegacyDataImportImpl",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/LegacyDataImport/Impl/BUILD b/submodules/LegacyDataImport/Impl/BUILD
new file mode 100644
index 0000000000..4bab57e0ce
--- /dev/null
+++ b/submodules/LegacyDataImport/Impl/BUILD
@@ -0,0 +1,22 @@
+
+objc_library(
+ name = "LegacyDataImportImpl",
+ enable_modules = True,
+ module_name = "LegacyDataImportImpl",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/LegacyDataImportImpl.h b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/LegacyDataImportImpl.h
new file mode 100644
index 0000000000..7a94876eb4
--- /dev/null
+++ b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/LegacyDataImportImpl.h
@@ -0,0 +1,7 @@
+#import
+
+#import
+#import
+#import
+
+
diff --git a/submodules/LegacyDataImport/Sources/TGAutoDownloadPreferences.h b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGAutoDownloadPreferences.h
similarity index 100%
rename from submodules/LegacyDataImport/Sources/TGAutoDownloadPreferences.h
rename to submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGAutoDownloadPreferences.h
diff --git a/submodules/LegacyDataImport/Sources/TGAutoDownloadPreferences.m b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGAutoDownloadPreferences.m
similarity index 99%
rename from submodules/LegacyDataImport/Sources/TGAutoDownloadPreferences.m
rename to submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGAutoDownloadPreferences.m
index e84cc90ab2..64c8cca6c7 100644
--- a/submodules/LegacyDataImport/Sources/TGAutoDownloadPreferences.m
+++ b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGAutoDownloadPreferences.m
@@ -1,4 +1,4 @@
-#import "TGAutoDownloadPreferences.h"
+#import
@implementation TGAutoDownloadPreferences
diff --git a/submodules/LegacyDataImport/Sources/TGPresentationAutoNightPreferences.h b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGPresentationAutoNightPreferences.h
similarity index 100%
rename from submodules/LegacyDataImport/Sources/TGPresentationAutoNightPreferences.h
rename to submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGPresentationAutoNightPreferences.h
diff --git a/submodules/LegacyDataImport/Sources/TGPresentationAutoNightPreferences.m b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGPresentationAutoNightPreferences.m
similarity index 91%
rename from submodules/LegacyDataImport/Sources/TGPresentationAutoNightPreferences.m
rename to submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGPresentationAutoNightPreferences.m
index e125ea54f0..b53b768e38 100644
--- a/submodules/LegacyDataImport/Sources/TGPresentationAutoNightPreferences.m
+++ b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGPresentationAutoNightPreferences.m
@@ -1,4 +1,4 @@
-#import "TGPresentationAutoNightPreferences.h"
+#import
@implementation TGPresentationAutoNightPreferences
diff --git a/submodules/LegacyDataImport/Sources/TGProxyItem.h b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGProxyItem.h
similarity index 100%
rename from submodules/LegacyDataImport/Sources/TGProxyItem.h
rename to submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGProxyItem.h
diff --git a/submodules/LegacyDataImport/Sources/TGProxyItem.m b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGProxyItem.m
similarity index 97%
rename from submodules/LegacyDataImport/Sources/TGProxyItem.m
rename to submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGProxyItem.m
index edc270d3ae..4dfc1d6c93 100644
--- a/submodules/LegacyDataImport/Sources/TGProxyItem.m
+++ b/submodules/LegacyDataImport/Impl/PublicHeaders/LegacyDataImportImpl/TGProxyItem.m
@@ -1,4 +1,4 @@
-#import "TGProxyItem.h"
+#import
static bool TGObjectCompare(id obj1, id obj2) {
if (obj1 == nil && obj2 == nil)
diff --git a/submodules/LegacyDataImport/Impl/Sources/TGAutoDownloadPreferences.m b/submodules/LegacyDataImport/Impl/Sources/TGAutoDownloadPreferences.m
new file mode 100644
index 0000000000..64c8cca6c7
--- /dev/null
+++ b/submodules/LegacyDataImport/Impl/Sources/TGAutoDownloadPreferences.m
@@ -0,0 +1,250 @@
+#import
+
+@implementation TGAutoDownloadPreferences
+
+- (instancetype)initWithCoder:(NSCoder *)aDecoder
+{
+ self = [super init];
+ if (self != nil)
+ {
+ _disabled = [aDecoder decodeBoolForKey:@"disabled"];
+ _photos = [aDecoder decodeInt32ForKey:@"photos"];
+ _videos = [aDecoder decodeInt32ForKey:@"videos"];
+ _maximumVideoSize = [aDecoder decodeInt32ForKey:@"maxVideoSize"];
+ _documents = [aDecoder decodeInt32ForKey:@"documents"];
+ _maximumDocumentSize = [aDecoder decodeInt32ForKey:@"maxDocumentSize"];
+ _voiceMessages = [aDecoder decodeInt32ForKey:@"voiceMessages"];
+ _videoMessages = [aDecoder decodeInt32ForKey:@"videoMessages"];
+ }
+ return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+ [aCoder encodeBool:_disabled forKey:@"disabled"];
+ [aCoder encodeInt32:_photos forKey:@"photos"];
+ [aCoder encodeInt32:_videos forKey:@"videos"];
+ [aCoder encodeInt32:_maximumVideoSize forKey:@"maxVideoSize"];
+ [aCoder encodeInt32:_documents forKey:@"documents"];
+ [aCoder encodeInt32:_maximumDocumentSize forKey:@"maxDocumentSize"];
+ [aCoder encodeInt32:_voiceMessages forKey:@"voiceMessages"];
+ [aCoder encodeInt32:_videoMessages forKey:@"videoMessages"];
+}
+
++ (instancetype)defaultPreferences
+{
+ TGAutoDownloadPreferences *preferences = [[TGAutoDownloadPreferences alloc] init];
+ preferences->_photos = TGAutoDownloadModeAll;
+ preferences->_videos = TGAutoDownloadModeNone;
+ preferences->_maximumVideoSize = 10;
+ preferences->_documents = TGAutoDownloadModeNone;
+ preferences->_maximumDocumentSize = 10;
+ preferences->_voiceMessages = TGAutoDownloadModeAll;
+ preferences->_videoMessages = TGAutoDownloadModeAll;
+ return preferences;
+}
+
++ (instancetype)preferencesWithLegacyDownloadPrivatePhotos:(bool)privatePhotos groupPhotos:(bool)groupPhotos privateVoiceMessages:(bool)privateVoiceMessages groupVoiceMessages:(bool)groupVoiceMessages privateVideoMessages:(bool)privateVideoMessages groupVideoMessages:(bool)groupVideoMessages
+{
+ TGAutoDownloadPreferences *preferences = [[TGAutoDownloadPreferences alloc] init];
+
+ if (privatePhotos)
+ preferences->_photos |= TGAutoDownloadModeAllPrivateChats;
+ if (groupPhotos)
+ preferences->_photos |= TGAutoDownloadModeAllGroups;
+
+ if (privateVoiceMessages)
+ preferences->_voiceMessages |= TGAutoDownloadModeAllPrivateChats;
+ if (groupVoiceMessages)
+ preferences->_voiceMessages |= TGAutoDownloadModeAllGroups;
+
+ if (privateVideoMessages)
+ preferences->_videoMessages |= TGAutoDownloadModeAllPrivateChats;
+ if (groupVideoMessages)
+ preferences->_videoMessages |= TGAutoDownloadModeAllGroups;
+
+ preferences->_maximumVideoSize = 10;
+ preferences->_maximumDocumentSize = 10;
+
+ return preferences;
+}
+
+- (instancetype)updateDisabled:(bool)disabled
+{
+ TGAutoDownloadPreferences *preferences = [[TGAutoDownloadPreferences alloc] init];
+ preferences->_disabled = disabled;
+ preferences->_photos = _photos;
+ preferences->_videos = _videos;
+ preferences->_maximumVideoSize = _maximumVideoSize;
+ preferences->_documents = _documents;
+ preferences->_maximumDocumentSize = _maximumDocumentSize;
+ preferences->_voiceMessages = _voiceMessages;
+ preferences->_videoMessages = _videoMessages;
+ return preferences;
+}
+
+- (instancetype)updatePhotosMode:(TGAutoDownloadMode)mode
+{
+ TGAutoDownloadPreferences *preferences = [[TGAutoDownloadPreferences alloc] init];
+ preferences->_photos = mode;
+ preferences->_videos = _videos;
+ preferences->_maximumVideoSize = _maximumVideoSize;
+ preferences->_documents = _documents;
+ preferences->_maximumDocumentSize = _maximumDocumentSize;
+ preferences->_voiceMessages = _voiceMessages;
+ preferences->_videoMessages = _videoMessages;
+ return preferences;
+}
+
+- (instancetype)updateVideosMode:(TGAutoDownloadMode)mode maximumSize:(int32_t)maximumSize
+{
+ TGAutoDownloadPreferences *preferences = [[TGAutoDownloadPreferences alloc] init];
+ preferences->_photos = _photos;
+ preferences->_videos = mode;
+ preferences->_maximumVideoSize = maximumSize;
+ preferences->_documents = _documents;
+ preferences->_maximumDocumentSize = _maximumDocumentSize;
+ preferences->_voiceMessages = _voiceMessages;
+ preferences->_videoMessages = _videoMessages;
+ return preferences;
+}
+
+- (instancetype)updateDocumentsMode:(TGAutoDownloadMode)mode maximumSize:(int32_t)maximumSize
+{
+ TGAutoDownloadPreferences *preferences = [[TGAutoDownloadPreferences alloc] init];
+ preferences->_photos = _photos;
+ preferences->_videos = _videos;
+ preferences->_maximumVideoSize = _maximumVideoSize;
+ preferences->_documents = mode;
+ preferences->_maximumDocumentSize = maximumSize;
+ preferences->_voiceMessages = _voiceMessages;
+ preferences->_videoMessages = _videoMessages;
+ return preferences;
+}
+
+- (instancetype)updateVoiceMessagesMode:(TGAutoDownloadMode)mode
+{
+ TGAutoDownloadPreferences *preferences = [[TGAutoDownloadPreferences alloc] init];
+ preferences->_photos = _photos;
+ preferences->_videos = _videos;
+ preferences->_maximumVideoSize = _maximumVideoSize;
+ preferences->_documents = _documents;
+ preferences->_maximumDocumentSize = _maximumDocumentSize;
+ preferences->_voiceMessages = mode;
+ preferences->_videoMessages = _videoMessages;
+ return preferences;
+}
+
+- (instancetype)updateVideoMessagesMode:(TGAutoDownloadMode)mode
+{
+ TGAutoDownloadPreferences *preferences = [[TGAutoDownloadPreferences alloc] init];
+ preferences->_photos = _photos;
+ preferences->_videos = _videos;
+ preferences->_maximumVideoSize = _maximumVideoSize;
+ preferences->_documents = _documents;
+ preferences->_maximumDocumentSize = _maximumDocumentSize;
+ preferences->_voiceMessages = _voiceMessages;
+ preferences->_videoMessages = mode;
+ return preferences;
+}
+
++ (bool)shouldDownload:(TGAutoDownloadMode)mode inChat:(TGAutoDownloadChat)chat networkType:(TGNetworkType)networkType
+{
+ bool isWiFi = networkType == TGNetworkTypeWiFi;
+ bool isCellular = !isWiFi && networkType != TGNetworkTypeNone;
+
+ bool shouldDownload = false;
+ switch (chat)
+ {
+ case TGAutoDownloadChatContact:
+ if (isCellular)
+ shouldDownload = (mode & TGAutoDownloadModeCellularContacts) != 0;
+ else if (isWiFi)
+ shouldDownload = (mode & TGAutoDownloadModeWifiContacts) != 0;
+ break;
+
+ case TGAutoDownloadChatOtherPrivateChat:
+ if (isCellular)
+ shouldDownload = (mode & TGAutoDownloadModeCellularPrivateChats) != 0;
+ else if (isWiFi)
+ shouldDownload = (mode & TGAutoDownloadModeWifiPrivateChats) != 0;
+ break;
+
+ case TGAutoDownloadChatGroup:
+ if (isCellular)
+ shouldDownload = (mode & TGAutoDownloadModeCellularGroups) != 0;
+ else if (isWiFi)
+ shouldDownload = (mode & TGAutoDownloadModeWifiGroups) != 0;
+ break;
+
+ case TGAutoDownloadChatChannel:
+ if (isCellular)
+ shouldDownload = (mode & TGAutoDownloadModeCellularChannels) != 0;
+ else if (isWiFi)
+ shouldDownload = (mode & TGAutoDownloadModeWifiChannels) != 0;
+ break;
+
+ default:
+ break;
+ }
+ return shouldDownload;
+}
+
+- (bool)shouldDownloadPhotoInChat:(TGAutoDownloadChat)chat networkType:(TGNetworkType)networkType
+{
+ if (self.disabled)
+ return false;
+
+ return [TGAutoDownloadPreferences shouldDownload:_photos inChat:chat networkType:networkType];
+}
+
+- (bool)shouldDownloadVideoInChat:(TGAutoDownloadChat)chat networkType:(TGNetworkType)networkType
+{
+ if (self.disabled)
+ return false;
+
+ return [TGAutoDownloadPreferences shouldDownload:_videos inChat:chat networkType:networkType];
+}
+
+- (bool)shouldDownloadDocumentInChat:(TGAutoDownloadChat)chat networkType:(TGNetworkType)networkType
+{
+ if (self.disabled)
+ return false;
+
+ return [TGAutoDownloadPreferences shouldDownload:_documents inChat:chat networkType:networkType];
+}
+
+- (bool)shouldDownloadVoiceMessageInChat:(TGAutoDownloadChat)chat networkType:(TGNetworkType)networkType
+{
+ if (self.disabled)
+ return false;
+
+ return [TGAutoDownloadPreferences shouldDownload:_voiceMessages inChat:chat networkType:networkType];
+}
+
+- (bool)shouldDownloadVideoMessageInChat:(TGAutoDownloadChat)chat networkType:(TGNetworkType)networkType
+{
+ if (self.disabled)
+ return false;
+
+ return [TGAutoDownloadPreferences shouldDownload:_videoMessages inChat:chat networkType:networkType];
+}
+
+- (bool)isDefaultPreferences
+{
+ return [self isEqual:[TGAutoDownloadPreferences defaultPreferences]];
+}
+
+- (BOOL)isEqual:(id)object
+{
+ if (object == self)
+ return YES;
+
+ if (!object || ![object isKindOfClass:[self class]])
+ return NO;
+
+ TGAutoDownloadPreferences *preferences = (TGAutoDownloadPreferences *)object;
+ return preferences.photos == _photos && preferences.videos == _videos && preferences.documents == _documents && preferences.voiceMessages == _voiceMessages && preferences.videoMessages == _videoMessages && preferences.maximumVideoSize == _maximumVideoSize && preferences.maximumDocumentSize == _maximumDocumentSize && preferences.disabled == _disabled;
+}
+
+@end
diff --git a/submodules/LegacyDataImport/Impl/Sources/TGPresentationAutoNightPreferences.m b/submodules/LegacyDataImport/Impl/Sources/TGPresentationAutoNightPreferences.m
new file mode 100644
index 0000000000..b53b768e38
--- /dev/null
+++ b/submodules/LegacyDataImport/Impl/Sources/TGPresentationAutoNightPreferences.m
@@ -0,0 +1,23 @@
+#import
+
+@implementation TGPresentationAutoNightPreferences
+
+- (instancetype)initWithCoder:(NSCoder *)aDecoder {
+ self = [super init];
+ if (self != nil) {
+ _mode = [aDecoder decodeInt32ForKey:@"m"];
+ _brightnessThreshold = [aDecoder decodeDoubleForKey:@"b"];
+ _scheduleStart = [aDecoder decodeInt32ForKey:@"ss"];
+ _scheduleEnd = [aDecoder decodeInt32ForKey:@"se"];
+ _latitude = [aDecoder decodeDoubleForKey:@"lat"];
+ _longitude = [aDecoder decodeDoubleForKey:@"lon"];
+ _cachedLocationName = [aDecoder decodeObjectForKey:@"loc"];
+ _preferredPalette = [aDecoder decodeInt32ForKey:@"p"];
+ }
+ return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder {
+}
+
+@end
diff --git a/submodules/LegacyDataImport/Impl/Sources/TGProxyItem.m b/submodules/LegacyDataImport/Impl/Sources/TGProxyItem.m
new file mode 100644
index 0000000000..4dfc1d6c93
--- /dev/null
+++ b/submodules/LegacyDataImport/Impl/Sources/TGProxyItem.m
@@ -0,0 +1,73 @@
+#import
+
+static bool TGObjectCompare(id obj1, id obj2) {
+ if (obj1 == nil && obj2 == nil)
+ return true;
+
+ return [obj1 isEqual:obj2];
+}
+
+@implementation TGProxyItem
+
+- (instancetype)initWithServer:(NSString *)server port:(int16_t)port username:(NSString *)username password:(NSString *)password secret:(NSString *)secret
+{
+ self = [super init];
+ if (self != nil)
+ {
+ _server = server;
+ _port = port;
+ _username = username;
+ _password = password;
+ _secret = secret;
+ }
+ return self;
+}
+
+- (instancetype)initWithCoder:(NSCoder *)aDecoder
+{
+ return [self initWithServer:[aDecoder decodeObjectForKey:@"server"] port:(int16_t)[aDecoder decodeInt32ForKey:@"port"] username:[aDecoder decodeObjectForKey:@"user"] password:[aDecoder decodeObjectForKey:@"pass"] secret:[aDecoder decodeObjectForKey:@"secret"]];
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+ [aCoder encodeObject:_server forKey:@"server"];
+ [aCoder encodeInt32:_port forKey:@"port"];
+ [aCoder encodeObject:_username forKey:@"user"];
+ [aCoder encodeObject:_password forKey:@"pass"];
+ [aCoder encodeObject:_secret forKey:@"secret"];
+}
+
+- (bool)isMTProxy
+{
+ return _secret.length > 0;
+}
+
+- (BOOL)isEqual:(id)object
+{
+ if (object == self)
+ return true;
+
+ if (!object || ![object isKindOfClass:[self class]])
+ return false;
+
+ TGProxyItem *proxy = (TGProxyItem *)object;
+
+ if (![_server isEqualToString:proxy.server])
+ return false;
+
+ if (_port != proxy.port)
+ return false;
+
+ if (!TGObjectCompare(_username ?: @"", proxy.username ?: @""))
+ return false;
+
+ if (!TGObjectCompare(_password ?: @"", proxy.password ?: @""))
+ return false;
+
+ if (!TGObjectCompare(_secret ?: @"", proxy.secret ?: @""))
+ return false;
+
+ return true;
+}
+
+@end
diff --git a/submodules/LegacyDataImport/Info.plist b/submodules/LegacyDataImport/Info.plist
deleted file mode 100644
index e1fe4cfb7b..0000000000
--- a/submodules/LegacyDataImport/Info.plist
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleVersion
- $(CURRENT_PROJECT_VERSION)
-
-
diff --git a/submodules/LegacyDataImport/Sources/LegacyDataImport.h b/submodules/LegacyDataImport/Sources/LegacyDataImport.h
deleted file mode 100644
index aae748427c..0000000000
--- a/submodules/LegacyDataImport/Sources/LegacyDataImport.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#import
-
-//! Project version number for LegacyDataImport.
-FOUNDATION_EXPORT double LegacyDataImportVersionNumber;
-
-//! Project version string for LegacyDataImport.
-FOUNDATION_EXPORT const unsigned char LegacyDataImportVersionString[];
-
-#import
-#import
-#import
-
-
diff --git a/submodules/LegacyDataImport/Sources/LegacyDataImport.swift b/submodules/LegacyDataImport/Sources/LegacyDataImport.swift
index 3dd3d393aa..4676e4b16a 100644
--- a/submodules/LegacyDataImport/Sources/LegacyDataImport.swift
+++ b/submodules/LegacyDataImport/Sources/LegacyDataImport.swift
@@ -4,11 +4,8 @@ import TelegramCore
import SyncCore
import SwiftSignalKit
import Postbox
-#if BUCK
import MtProtoKit
-#else
-import MtProtoKitDynamic
-#endif
+import LegacyDataImportImpl
public enum AccountImportError: Error {
case generic
diff --git a/submodules/LegacyDataImport/Sources/LegacyPreferencesImport.swift b/submodules/LegacyDataImport/Sources/LegacyPreferencesImport.swift
index 485ccc22cc..d403653fb5 100644
--- a/submodules/LegacyDataImport/Sources/LegacyPreferencesImport.swift
+++ b/submodules/LegacyDataImport/Sources/LegacyPreferencesImport.swift
@@ -4,14 +4,11 @@ import TelegramCore
import SyncCore
import SwiftSignalKit
import Postbox
-#if BUCK
import MtProtoKit
-#else
-import MtProtoKitDynamic
-#endif
import TelegramUIPreferences
import LegacyComponents
import TelegramNotices
+import LegacyDataImportImpl
@objc(TGPresentationState) private final class TGPresentationState: NSObject, NSCoding {
let pallete: Int32
diff --git a/submodules/LegacyMediaPickerUI/BUILD b/submodules/LegacyMediaPickerUI/BUILD
new file mode 100644
index 0000000000..4a258f2a6e
--- /dev/null
+++ b/submodules/LegacyMediaPickerUI/BUILD
@@ -0,0 +1,29 @@
+load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
+
+swift_library(
+ name = "LegacyMediaPickerUI",
+ module_name = "LegacyMediaPickerUI",
+ srcs = glob([
+ "Sources/**/*.swift",
+ ]),
+ deps = [
+ "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit",
+ "//submodules/AsyncDisplayKit:AsyncDisplayKit",
+ "//submodules/Display:Display",
+ "//submodules/Postbox:Postbox",
+ "//submodules/TelegramCore:TelegramCore",
+ "//submodules/SyncCore:SyncCore",
+ "//submodules/TelegramPresentationData:TelegramPresentationData",
+ "//submodules/AccountContext:AccountContext",
+ "//submodules/LegacyComponents:LegacyComponents",
+ "//submodules/LegacyUI:LegacyUI",
+ "//submodules/MimeTypes:MimeTypes",
+ "//submodules/LocalMediaResources:LocalMediaResources",
+ "//submodules/SearchPeerMembers:SearchPeerMembers",
+ "//submodules/SaveToCameraRoll:SaveToCameraRoll",
+ "//submodules/LegacyMediaPickerUI/LegacyImageProcessors:LegacyImageProcessors",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/LegacyMediaPickerUI/Info.plist b/submodules/LegacyMediaPickerUI/Info.plist
deleted file mode 100644
index e1fe4cfb7b..0000000000
--- a/submodules/LegacyMediaPickerUI/Info.plist
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleVersion
- $(CURRENT_PROJECT_VERSION)
-
-
diff --git a/submodules/LegacyMediaPickerUI/LegacyImageProcessors/BUILD b/submodules/LegacyMediaPickerUI/LegacyImageProcessors/BUILD
new file mode 100644
index 0000000000..aa40d0c1a7
--- /dev/null
+++ b/submodules/LegacyMediaPickerUI/LegacyImageProcessors/BUILD
@@ -0,0 +1,26 @@
+
+objc_library(
+ name = "LegacyImageProcessors",
+ enable_modules = True,
+ module_name = "LegacyImageProcessors",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ deps = [
+ "//submodules/LegacyComponents:LegacyComponents",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ "UIKit",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyImageProcessors.h b/submodules/LegacyMediaPickerUI/LegacyImageProcessors/PublicHeaders/LegacyImageProcessors/LegacyImageProcessors.h
similarity index 100%
rename from submodules/LegacyMediaPickerUI/Sources/LegacyImageProcessors.h
rename to submodules/LegacyMediaPickerUI/LegacyImageProcessors/PublicHeaders/LegacyImageProcessors/LegacyImageProcessors.h
diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyImageProcessors.m b/submodules/LegacyMediaPickerUI/LegacyImageProcessors/Sources/LegacyImageProcessors.m
similarity index 96%
rename from submodules/LegacyMediaPickerUI/Sources/LegacyImageProcessors.m
rename to submodules/LegacyMediaPickerUI/LegacyImageProcessors/Sources/LegacyImageProcessors.m
index dab0029030..0bccc41b64 100644
--- a/submodules/LegacyMediaPickerUI/Sources/LegacyImageProcessors.m
+++ b/submodules/LegacyMediaPickerUI/LegacyImageProcessors/Sources/LegacyImageProcessors.m
@@ -1,4 +1,4 @@
-#import "LegacyImageProcessors.h"
+#import
#import
diff --git a/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickerUI.h b/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickerUI.h
deleted file mode 100644
index 24d275b34d..0000000000
--- a/submodules/LegacyMediaPickerUI/Sources/LegacyMediaPickerUI.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// LegacyMediaPickerUI.h
-// LegacyMediaPickerUI
-//
-// Created by Peter on 8/15/19.
-// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
-//
-
-#import
-
-//! Project version number for LegacyMediaPickerUI.
-FOUNDATION_EXPORT double LegacyMediaPickerUIVersionNumber;
-
-//! Project version string for LegacyMediaPickerUI.
-FOUNDATION_EXPORT const unsigned char LegacyMediaPickerUIVersionString[];
-
-#import
-
-
diff --git a/submodules/LegacyUI/BUILD b/submodules/LegacyUI/BUILD
new file mode 100644
index 0000000000..e23975b3a9
--- /dev/null
+++ b/submodules/LegacyUI/BUILD
@@ -0,0 +1,25 @@
+load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
+
+swift_library(
+ name = "LegacyUI",
+ module_name = "LegacyUI",
+ srcs = glob([
+ "Sources/**/*.swift",
+ ]),
+ deps = [
+ "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit",
+ "//submodules/Postbox:Postbox",
+ "//submodules/TelegramCore:TelegramCore",
+ "//submodules/SyncCore:SyncCore",
+ "//submodules/AsyncDisplayKit:AsyncDisplayKit",
+ "//submodules/Display:Display",
+ "//submodules/AccountContext:AccountContext",
+ "//submodules/TelegramAudio:TelegramAudio",
+ "//submodules/DeviceAccess:DeviceAccess",
+ "//submodules/LegacyComponents:LegacyComponents",
+ "//submodules/StickerResources:StickerResources",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/LegacyUI/Info.plist b/submodules/LegacyUI/Info.plist
deleted file mode 100644
index e1fe4cfb7b..0000000000
--- a/submodules/LegacyUI/Info.plist
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleVersion
- $(CURRENT_PROJECT_VERSION)
-
-
diff --git a/submodules/LegacyUI/Sources/LegacyHTTPOperationImpl.swift b/submodules/LegacyUI/Sources/LegacyHTTPOperationImpl.swift
index d157bea528..637d5f6aeb 100644
--- a/submodules/LegacyUI/Sources/LegacyHTTPOperationImpl.swift
+++ b/submodules/LegacyUI/Sources/LegacyHTTPOperationImpl.swift
@@ -1,9 +1,5 @@
import Foundation
-#if BUCK
import MtProtoKit
-#else
-import MtProtoKitDynamic
-#endif
import LegacyComponents
diff --git a/submodules/LegacyUI/Sources/LegacyUI.h b/submodules/LegacyUI/Sources/LegacyUI.h
deleted file mode 100644
index f42c305222..0000000000
--- a/submodules/LegacyUI/Sources/LegacyUI.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// LegacyUI.h
-// LegacyUI
-//
-// Created by Peter on 8/12/19.
-// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
-//
-
-#import
-
-//! Project version number for LegacyUI.
-FOUNDATION_EXPORT double LegacyUIVersionNumber;
-
-//! Project version string for LegacyUI.
-FOUNDATION_EXPORT const unsigned char LegacyUIVersionString[];
-
-// In this header, you should import all the public headers of your framework using statements like #import
-
-
diff --git a/submodules/LegacyUI/Sources/TelegramInitializeLegacyComponents.swift b/submodules/LegacyUI/Sources/TelegramInitializeLegacyComponents.swift
index b77631410c..c037184a90 100644
--- a/submodules/LegacyUI/Sources/TelegramInitializeLegacyComponents.swift
+++ b/submodules/LegacyUI/Sources/TelegramInitializeLegacyComponents.swift
@@ -3,11 +3,7 @@ import UIKit
import TelegramCore
import SyncCore
import SwiftSignalKit
-#if BUCK
import MtProtoKit
-#else
-import MtProtoKitDynamic
-#endif
import Display
import TelegramPresentationData
import DeviceAccess
diff --git a/submodules/MimeTypes/PublicHeaders/MimeTypes.h b/submodules/MimeTypes/PublicHeaders/MimeTypes.h
deleted file mode 100644
index 0384694fcb..0000000000
--- a/submodules/MimeTypes/PublicHeaders/MimeTypes.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import
-
-//! Project version number for MimeTypes.
-FOUNDATION_EXPORT double MimeTypesVersionNumber;
-
-//! Project version string for MimeTypes.
-FOUNDATION_EXPORT const unsigned char MimeTypesVersionString[];
-
-#import
-
-
diff --git a/submodules/MimeTypes/PublicHeaders/MimeTypes/MimeTypes.h b/submodules/MimeTypes/PublicHeaders/MimeTypes/MimeTypes.h
new file mode 100644
index 0000000000..458166eee0
--- /dev/null
+++ b/submodules/MimeTypes/PublicHeaders/MimeTypes/MimeTypes.h
@@ -0,0 +1,5 @@
+#import
+
+#import
+
+
diff --git a/submodules/MimeTypes/PublicHeaders/TGMimeTypeMap.h b/submodules/MimeTypes/PublicHeaders/MimeTypes/TGMimeTypeMap.h
similarity index 100%
rename from submodules/MimeTypes/PublicHeaders/TGMimeTypeMap.h
rename to submodules/MimeTypes/PublicHeaders/MimeTypes/TGMimeTypeMap.h
diff --git a/submodules/MtProtoKit/PublicHeaders/MtProtoKit/MtProtoKit.h b/submodules/MtProtoKit/PublicHeaders/MtProtoKit/MtProtoKit.h
new file mode 100644
index 0000000000..4476e380ab
--- /dev/null
+++ b/submodules/MtProtoKit/PublicHeaders/MtProtoKit/MtProtoKit.h
@@ -0,0 +1,60 @@
+#import
+
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
\ No newline at end of file
diff --git a/submodules/MtProtoKit/Sources/MTAes.m b/submodules/MtProtoKit/Sources/MTAes.m
index 9aafdabc84..72ad722d58 100644
--- a/submodules/MtProtoKit/Sources/MTAes.m
+++ b/submodules/MtProtoKit/Sources/MTAes.m
@@ -162,7 +162,7 @@ void MyAesIgeDecrypt(const void *inBytes, int length, void *outBytes, const void
}
void MyAesCbcDecrypt(const void *inBytes, int length, void *outBytes, const void *key, int keyLength, void *iv) {
- int outLength = 0;
+ size_t outLength = 0;
CCCryptorStatus status = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, 0, key, keyLength, iv, inBytes, length, outBytes, length, &outLength);
assert(status == kCCSuccess);
assert(outLength == length);
diff --git a/submodules/MtProtoKit/Sources/MTEncryption.m b/submodules/MtProtoKit/Sources/MTEncryption.m
index 1d13506e55..4df030344c 100644
--- a/submodules/MtProtoKit/Sources/MTEncryption.m
+++ b/submodules/MtProtoKit/Sources/MTEncryption.m
@@ -769,7 +769,7 @@ static NSData *decrypt_TL_data(id provider, unsigned char bu
if ([context modExpInto:y a:x b:rsaKeyE mod:rsaKeyN]) {
NSData *yBytes = [context getBin:y];
unsigned l = 256 - (unsigned)yBytes.length;
- memset(bytes, 0, l);
+ assert(l >= 0);
[yBytes getBytes:bytes + l length:256 - l];
@@ -781,7 +781,7 @@ static NSData *decrypt_TL_data(id provider, unsigned char bu
NSData *keyBytes = [[NSData alloc] initWithBytes:bytes length:32];
NSMutableData *decryptedBytes = [[NSMutableData alloc] initWithLength:encryptedBytes.length];
- MyAesCbcDecrypt(encryptedBytes.bytes, encryptedBytes.length, decryptedBytes.mutableBytes, keyBytes.bytes, keyBytes.length, iv.mutableBytes);
+ MyAesCbcDecrypt(encryptedBytes.bytes, (int)encryptedBytes.length, decryptedBytes.mutableBytes, keyBytes.bytes, (int)keyBytes.length, iv.mutableBytes);
if (decryptedBytes == nil) {
return nil;
diff --git a/submodules/OpenSSLEncryptionProvider/BUILD b/submodules/OpenSSLEncryptionProvider/BUILD
index b6eca063e5..148b55c089 100644
--- a/submodules/OpenSSLEncryptionProvider/BUILD
+++ b/submodules/OpenSSLEncryptionProvider/BUILD
@@ -1,14 +1,26 @@
+
objc_library(
name = "OpenSSLEncryptionProvider",
+ enable_modules = True,
+ module_name = "OpenSSLEncryptionProvider",
srcs = glob([
"Sources/**/*.m",
- ]),
- hdrs = glob([
"Sources/**/*.h",
]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
deps = [
"//submodules/EncryptionProvider:EncryptionProvider",
"//submodules/openssl:openssl",
],
- visibility = ["//visibility:public"],
+ sdk_frameworks = [
+ "Foundation",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
)
diff --git a/submodules/OpenSSLEncryptionProvider/Sources/OpenSSLEncryptionProvider.h b/submodules/OpenSSLEncryptionProvider/PublicHeaders/OpenSSLEncryptionProvider/OpenSSLEncryptionProvider.h
similarity index 100%
rename from submodules/OpenSSLEncryptionProvider/Sources/OpenSSLEncryptionProvider.h
rename to submodules/OpenSSLEncryptionProvider/PublicHeaders/OpenSSLEncryptionProvider/OpenSSLEncryptionProvider.h
diff --git a/submodules/OpenSSLEncryptionProvider/Sources/OpenSSLEncryptionProvider.m b/submodules/OpenSSLEncryptionProvider/Sources/OpenSSLEncryptionProvider.m
index 1acb5c69fa..ce2545a570 100644
--- a/submodules/OpenSSLEncryptionProvider/Sources/OpenSSLEncryptionProvider.m
+++ b/submodules/OpenSSLEncryptionProvider/Sources/OpenSSLEncryptionProvider.m
@@ -1,4 +1,4 @@
-#import "OpenSSLEncryptionProvider.h"
+#import
#import
#import
diff --git a/submodules/OpusBinding/BUILD b/submodules/OpusBinding/BUILD
new file mode 100644
index 0000000000..05ba0c44cb
--- /dev/null
+++ b/submodules/OpusBinding/BUILD
@@ -0,0 +1,31 @@
+
+objc_library(
+ name = "OpusBinding",
+ enable_modules = True,
+ module_name = "OpusBinding",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.c",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ copts = [
+ "-Isubmodules/OpusBinding/Sources",
+ "-Isubmodules/OpusBinding/Sources/opusfile",
+ "-Isubmodules/OpusBinding/PublicHeaders/OpusBinding",
+ ],
+ deps = [
+ "//submodules/Opus:opus",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/OpusBinding/Sources/OggOpusReader.h b/submodules/OpusBinding/PublicHeaders/OpusBinding/OggOpusReader.h
similarity index 100%
rename from submodules/OpusBinding/Sources/OggOpusReader.h
rename to submodules/OpusBinding/PublicHeaders/OpusBinding/OggOpusReader.h
diff --git a/submodules/OpusBinding/PublicHeaders/OpusBinding/OpusBinding.h b/submodules/OpusBinding/PublicHeaders/OpusBinding/OpusBinding.h
new file mode 100644
index 0000000000..30524dbcbd
--- /dev/null
+++ b/submodules/OpusBinding/PublicHeaders/OpusBinding/OpusBinding.h
@@ -0,0 +1,5 @@
+#import
+
+#import
+#import
+#import
\ No newline at end of file
diff --git a/submodules/OpusBinding/Sources/TGDataItem.h b/submodules/OpusBinding/PublicHeaders/OpusBinding/TGDataItem.h
similarity index 100%
rename from submodules/OpusBinding/Sources/TGDataItem.h
rename to submodules/OpusBinding/PublicHeaders/OpusBinding/TGDataItem.h
diff --git a/submodules/OpusBinding/Sources/TGOggOpusWriter.h b/submodules/OpusBinding/PublicHeaders/OpusBinding/TGOggOpusWriter.h
similarity index 100%
rename from submodules/OpusBinding/Sources/TGOggOpusWriter.h
rename to submodules/OpusBinding/PublicHeaders/OpusBinding/TGOggOpusWriter.h
diff --git a/submodules/OpusBinding/Sources/opusfile/internal.h b/submodules/OpusBinding/Sources/opusfile/internal.h
index 2487cf25db..b1109deb90 100644
--- a/submodules/OpusBinding/Sources/opusfile/internal.h
+++ b/submodules/OpusBinding/Sources/opusfile/internal.h
@@ -29,7 +29,7 @@
# endif
# include
-# include
+# include "opusfile.h"
typedef struct OggOpusLink OggOpusLink;
diff --git a/submodules/PKCS/BUILD b/submodules/PKCS/BUILD
new file mode 100644
index 0000000000..e1f30e1438
--- /dev/null
+++ b/submodules/PKCS/BUILD
@@ -0,0 +1,25 @@
+
+objc_library(
+ name = "PKCS",
+ enable_modules = True,
+ module_name = "PKCS",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ deps = [
+ "//submodules/openssl:openssl",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/PKCS/Sources/MTPKCS.h b/submodules/PKCS/PublicHeaders/PKCS/PKCS.h
similarity index 100%
rename from submodules/PKCS/Sources/MTPKCS.h
rename to submodules/PKCS/PublicHeaders/PKCS/PKCS.h
diff --git a/submodules/PKCS/Sources/MTPKCS.m b/submodules/PKCS/Sources/PKCS.m
similarity index 99%
rename from submodules/PKCS/Sources/MTPKCS.m
rename to submodules/PKCS/Sources/PKCS.m
index 100010aa04..a6bdd1f9fc 100644
--- a/submodules/PKCS/Sources/MTPKCS.m
+++ b/submodules/PKCS/Sources/PKCS.m
@@ -1,4 +1,4 @@
-#import "MTPKCS.h"
+#import
#include
#include
diff --git a/submodules/PasscodeUI/Sources/PasscodeBackground.swift b/submodules/PasscodeUI/Sources/PasscodeBackground.swift
index 4fa29bc85a..41bed65bbe 100644
--- a/submodules/PasscodeUI/Sources/PasscodeBackground.swift
+++ b/submodules/PasscodeUI/Sources/PasscodeBackground.swift
@@ -2,6 +2,7 @@ import Foundation
import UIKit
import Display
import ImageBlur
+import FastBlur
protocol PasscodeBackground {
var size: CGSize { get }
diff --git a/submodules/Pdf/BUILD b/submodules/Pdf/BUILD
index e67a3c2c8e..cf05f0ebeb 100644
--- a/submodules/Pdf/BUILD
+++ b/submodules/Pdf/BUILD
@@ -6,6 +6,9 @@ swift_library(
srcs = glob([
"Sources/**/*.swift",
]),
+ deps = [
+ "//submodules/Display:Display",
+ ],
visibility = [
"//visibility:public",
],
diff --git a/submodules/Postbox/Sources/SqliteValueBox.swift b/submodules/Postbox/Sources/SqliteValueBox.swift
index 70b3e5661d..9370955ce2 100644
--- a/submodules/Postbox/Sources/SqliteValueBox.swift
+++ b/submodules/Postbox/Sources/SqliteValueBox.swift
@@ -221,6 +221,10 @@ public final class SqliteValueBox: ValueBox {
let _ = try? FileManager.default.createDirectory(atPath: basePath, withIntermediateDirectories: true, attributes: nil)
let path = basePath + "/db_sqlite"
+ #if DEBUG
+ print("Instance \(self) opening sqlite at \(path)")
+ #endif
+
#if DEBUG
let exists = FileManager.default.fileExists(atPath: path)
postboxLog("Opening \(path), exists: \(exists)")
diff --git a/submodules/RMIntro/BUILD b/submodules/RMIntro/BUILD
new file mode 100644
index 0000000000..79ac8fa087
--- /dev/null
+++ b/submodules/RMIntro/BUILD
@@ -0,0 +1,37 @@
+load("//build-system:unique_directories.bzl", "unique_directories")
+
+private_headers = glob([
+ "Sources/**/*.h",
+])
+
+objc_library(
+ name = "RMIntro",
+ enable_modules = True,
+ module_name = "RMIntro",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.c",
+ ]) + private_headers,
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ copts = [
+ "-Isubmodules/RMIntro/{}".format(directory) for directory in unique_directories(private_headers)
+ ] + [
+ "-Isubmodules/RMIntro/PublicHeaders/RMIntro",
+ ],
+ deps = [
+ "//submodules/LegacyComponents:LegacyComponents",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ "UIKit",
+ "GLKit",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/RMIntro/PublicHeaders/RMIntro/RMIntro.h b/submodules/RMIntro/PublicHeaders/RMIntro/RMIntro.h
new file mode 100644
index 0000000000..dde9a1008c
--- /dev/null
+++ b/submodules/RMIntro/PublicHeaders/RMIntro/RMIntro.h
@@ -0,0 +1,4 @@
+#import
+
+#import
+
diff --git a/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.h b/submodules/RMIntro/PublicHeaders/RMIntro/RMIntroViewController.h
similarity index 100%
rename from submodules/RMIntro/Sources/platform/ios/RMIntroViewController.h
rename to submodules/RMIntro/PublicHeaders/RMIntro/RMIntroViewController.h
diff --git a/submodules/RMIntro/Sources/RMIntro.h b/submodules/RMIntro/Sources/RMIntro.h
deleted file mode 100644
index 80d982ff62..0000000000
--- a/submodules/RMIntro/Sources/RMIntro.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#import
-
-//! Project version number for RMIntro.
-FOUNDATION_EXPORT double RMIntroVersionNumber;
-
-//! Project version string for RMIntro.
-FOUNDATION_EXPORT const unsigned char RMIntroVersionString[];
-
-#import
-
diff --git a/submodules/RaiseToListen/BUILD b/submodules/RaiseToListen/BUILD
new file mode 100644
index 0000000000..5e13c69fdc
--- /dev/null
+++ b/submodules/RaiseToListen/BUILD
@@ -0,0 +1,15 @@
+load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
+
+swift_library(
+ name = "RaiseToListen",
+ module_name = "RaiseToListen",
+ srcs = glob([
+ "Sources/**/*.swift",
+ ]),
+ deps = [
+ "//submodules/RaiseToListen/Impl:RaiseToListenImpl",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/RaiseToListen/Impl/BUILD b/submodules/RaiseToListen/Impl/BUILD
new file mode 100644
index 0000000000..0ecababba4
--- /dev/null
+++ b/submodules/RaiseToListen/Impl/BUILD
@@ -0,0 +1,26 @@
+
+objc_library(
+ name = "RaiseToListenImpl",
+ enable_modules = True,
+ module_name = "RaiseToListenImpl",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ deps = [
+ "//submodules/DeviceProximity:DeviceProximity",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ "UIKit",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/RaiseToListen/Sources/RaiseToListenActivator.h b/submodules/RaiseToListen/Impl/PublicHeaders/RaiseToListenImpl/RaiseToListenActivator.h
similarity index 100%
rename from submodules/RaiseToListen/Sources/RaiseToListenActivator.h
rename to submodules/RaiseToListen/Impl/PublicHeaders/RaiseToListenImpl/RaiseToListenActivator.h
diff --git a/submodules/RaiseToListen/Impl/PublicHeaders/RaiseToListenImpl/RaiseToListenImpl.h b/submodules/RaiseToListen/Impl/PublicHeaders/RaiseToListenImpl/RaiseToListenImpl.h
new file mode 100644
index 0000000000..804710a7e5
--- /dev/null
+++ b/submodules/RaiseToListen/Impl/PublicHeaders/RaiseToListenImpl/RaiseToListenImpl.h
@@ -0,0 +1,5 @@
+#import
+
+#import
+
+
diff --git a/submodules/RaiseToListen/Sources/RaiseToListenActivator.m b/submodules/RaiseToListen/Impl/Sources/RaiseToListenActivator.m
similarity index 99%
rename from submodules/RaiseToListen/Sources/RaiseToListenActivator.m
rename to submodules/RaiseToListen/Impl/Sources/RaiseToListenActivator.m
index f26f11fc28..5251e1f80e 100644
--- a/submodules/RaiseToListen/Sources/RaiseToListenActivator.m
+++ b/submodules/RaiseToListen/Impl/Sources/RaiseToListenActivator.m
@@ -1,4 +1,4 @@
-#import "RaiseToListenActivator.h"
+#import
#import
#import
diff --git a/submodules/RaiseToListen/Sources/RaiseToListen.h b/submodules/RaiseToListen/Sources/RaiseToListen.h
deleted file mode 100644
index 4bae0bc1e3..0000000000
--- a/submodules/RaiseToListen/Sources/RaiseToListen.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import
-
-//! Project version number for RaiseToListen.
-FOUNDATION_EXPORT double RaiseToListenVersionNumber;
-
-//! Project version string for RaiseToListen.
-FOUNDATION_EXPORT const unsigned char RaiseToListenVersionString[];
-
-#import
-
-
diff --git a/submodules/RaiseToListen/Sources/RaiseToListen.swift b/submodules/RaiseToListen/Sources/RaiseToListen.swift
index d92435cd10..bf70869ac5 100644
--- a/submodules/RaiseToListen/Sources/RaiseToListen.swift
+++ b/submodules/RaiseToListen/Sources/RaiseToListen.swift
@@ -1,5 +1,7 @@
import Foundation
+import RaiseToListenImpl
+
public final class RaiseToListenManager {
private let activator: RaiseToListenActivator
diff --git a/submodules/SettingsUI/Sources/Data and Storage/ProxyListSettingsController.swift b/submodules/SettingsUI/Sources/Data and Storage/ProxyListSettingsController.swift
index c0424de212..2a16303a93 100644
--- a/submodules/SettingsUI/Sources/Data and Storage/ProxyListSettingsController.swift
+++ b/submodules/SettingsUI/Sources/Data and Storage/ProxyListSettingsController.swift
@@ -6,11 +6,7 @@ import Postbox
import TelegramCore
import SyncCore
import TelegramPresentationData
-#if BUCK
import MtProtoKit
-#else
-import MtProtoKitDynamic
-#endif
import ItemListUI
import PresentationDataUtils
import AccountContext
diff --git a/submodules/SettingsUI/Sources/Data and Storage/ProxyServerSettingsController.swift b/submodules/SettingsUI/Sources/Data and Storage/ProxyServerSettingsController.swift
index 68dcaa32c1..8686fb7d27 100644
--- a/submodules/SettingsUI/Sources/Data and Storage/ProxyServerSettingsController.swift
+++ b/submodules/SettingsUI/Sources/Data and Storage/ProxyServerSettingsController.swift
@@ -5,11 +5,7 @@ import SwiftSignalKit
import Postbox
import TelegramCore
import SyncCore
-#if BUCK
import MtProtoKit
-#else
-import MtProtoKitDynamic
-#endif
import TelegramPresentationData
import ItemListUI
import PresentationDataUtils
diff --git a/submodules/SettingsUI/Sources/DebugController.swift b/submodules/SettingsUI/Sources/DebugController.swift
index e33c1130f8..2266898b90 100644
--- a/submodules/SettingsUI/Sources/DebugController.swift
+++ b/submodules/SettingsUI/Sources/DebugController.swift
@@ -5,11 +5,7 @@ import SwiftSignalKit
import Postbox
import TelegramCore
import SyncCore
-#if BUCK
import MtProtoKit
-#else
-import MtProtoKitDynamic
-#endif
import MessageUI
import TelegramPresentationData
import TelegramUIPreferences
diff --git a/submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift b/submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift
index 13136e0a15..47581bc752 100644
--- a/submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift
+++ b/submodules/SettingsUI/Sources/Themes/ThemeAutoNightSettingsController.swift
@@ -14,6 +14,7 @@ import AccountContext
import DeviceLocationManager
import Geocoding
import WallpaperResources
+import Sunrise
private enum TriggerMode {
case system
diff --git a/submodules/ShareItems/BUILD b/submodules/ShareItems/BUILD
new file mode 100644
index 0000000000..55ffcf3d8d
--- /dev/null
+++ b/submodules/ShareItems/BUILD
@@ -0,0 +1,25 @@
+load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
+
+swift_library(
+ name = "ShareItems",
+ module_name = "ShareItems",
+ srcs = glob([
+ "Sources/**/*.swift",
+ ]),
+ deps = [
+ "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit",
+ "//submodules/Postbox:Postbox",
+ "//submodules/TelegramCore:TelegramCore",
+ "//submodules/SyncCore:SyncCore",
+ "//submodules/MtProtoKit:MtProtoKit",
+ "//submodules/Display:Display",
+ "//submodules/LegacyComponents:LegacyComponents",
+ "//submodules/LocalMediaResources:LocalMediaResources",
+ "//submodules/Pdf:Pdf",
+ "//submodules/AccountContext:AccountContext",
+ "//submodules/ShareItems/Impl:ShareItemsImpl",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/ShareItems/Impl/BUILD b/submodules/ShareItems/Impl/BUILD
new file mode 100644
index 0000000000..7d9d422737
--- /dev/null
+++ b/submodules/ShareItems/Impl/BUILD
@@ -0,0 +1,32 @@
+
+objc_library(
+ name = "ShareItemsImpl",
+ enable_modules = True,
+ module_name = "ShareItemsImpl",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ deps = [
+ "//submodules/MtProtoKit:MtProtoKit",
+ "//submodules/PhoneNumberFormat:PhoneNumberFormat",
+ "//submodules/MimeTypes:MimeTypes",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ "UIKit",
+ "MobileCoreServices",
+ "AddressBook",
+ "AVFoundation",
+ "PassKit",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/ShareItems/Impl/PublicHeaders/ShareItemsImpl/ShareItems.h b/submodules/ShareItems/Impl/PublicHeaders/ShareItemsImpl/ShareItems.h
new file mode 100644
index 0000000000..42be0efe84
--- /dev/null
+++ b/submodules/ShareItems/Impl/PublicHeaders/ShareItemsImpl/ShareItems.h
@@ -0,0 +1,6 @@
+#import
+
+#import
+#import
+
+
diff --git a/submodules/ShareItems/Sources/TGItemProviderSignals.h b/submodules/ShareItems/Impl/PublicHeaders/ShareItemsImpl/TGItemProviderSignals.h
similarity index 100%
rename from submodules/ShareItems/Sources/TGItemProviderSignals.h
rename to submodules/ShareItems/Impl/PublicHeaders/ShareItemsImpl/TGItemProviderSignals.h
diff --git a/submodules/ShareItems/Sources/TGShareLocationSignals.h b/submodules/ShareItems/Impl/PublicHeaders/ShareItemsImpl/TGShareLocationSignals.h
similarity index 100%
rename from submodules/ShareItems/Sources/TGShareLocationSignals.h
rename to submodules/ShareItems/Impl/PublicHeaders/ShareItemsImpl/TGShareLocationSignals.h
diff --git a/submodules/ShareItems/Sources/TGItemProviderSignals.m b/submodules/ShareItems/Impl/Sources/TGItemProviderSignals.m
similarity index 99%
rename from submodules/ShareItems/Sources/TGItemProviderSignals.m
rename to submodules/ShareItems/Impl/Sources/TGItemProviderSignals.m
index 6a7ae46a41..bb84fce6aa 100644
--- a/submodules/ShareItems/Sources/TGItemProviderSignals.m
+++ b/submodules/ShareItems/Impl/Sources/TGItemProviderSignals.m
@@ -1,10 +1,6 @@
-#import "TGItemProviderSignals.h"
+#import
-#ifdef BUCK
#import
-#else
-#import
-#endif
#import
#import
@@ -14,8 +10,6 @@
#import
-#import "TGContactModel.h"
-
@implementation TGItemProviderSignals
+ (NSArray *)itemSignalsForInputItems:(NSArray *)inputItems
diff --git a/submodules/ShareItems/Sources/TGShareLocationSignals.m b/submodules/ShareItems/Impl/Sources/TGShareLocationSignals.m
similarity index 99%
rename from submodules/ShareItems/Sources/TGShareLocationSignals.m
rename to submodules/ShareItems/Impl/Sources/TGShareLocationSignals.m
index 84544edba6..7eaf7fe418 100644
--- a/submodules/ShareItems/Sources/TGShareLocationSignals.m
+++ b/submodules/ShareItems/Impl/Sources/TGShareLocationSignals.m
@@ -1,10 +1,6 @@
-#import "TGShareLocationSignals.h"
+#import
-#ifdef BUCK
#import
-#else
-#import
-#endif
NSString *const TGShareAppleMapsHost = @"maps.apple.com";
NSString *const TGShareAppleMapsPath = @"/maps";
diff --git a/submodules/ShareItems/Sources/ShareItems.h b/submodules/ShareItems/Sources/ShareItems.h
deleted file mode 100644
index 9dd09adf4d..0000000000
--- a/submodules/ShareItems/Sources/ShareItems.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#import
-
-//! Project version number for ShareItems.
-FOUNDATION_EXPORT double ShareItemsVersionNumber;
-
-//! Project version string for ShareItems.
-FOUNDATION_EXPORT const unsigned char ShareItemsVersionString[];
-
-#import
-#import
-#import
-
-
diff --git a/submodules/ShareItems/Sources/ShareItems.swift b/submodules/ShareItems/Sources/ShareItems.swift
index f87db7d9b3..87f271c800 100644
--- a/submodules/ShareItems/Sources/ShareItems.swift
+++ b/submodules/ShareItems/Sources/ShareItems.swift
@@ -3,17 +3,14 @@ import SwiftSignalKit
import Postbox
import TelegramCore
import SyncCore
-#if BUCK
import MtProtoKit
-#else
-import MtProtoKitDynamic
-#endif
import Display
import AccountContext
import Pdf
import LocalMediaResources
import AVFoundation
import LegacyComponents
+import ShareItemsImpl
public enum UnpreparedShareItemContent {
case contact(DeviceContactExtendedData)
diff --git a/submodules/ShareItems/Sources/TGContactModel.h b/submodules/ShareItems/Sources/TGContactModel.h
deleted file mode 100644
index 5218304bd0..0000000000
--- a/submodules/ShareItems/Sources/TGContactModel.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#import
-
-@interface TGPhoneNumberModel : NSObject
-
-@property (nonatomic, strong, readonly) NSString *phoneNumber;
-@property (nonatomic, strong, readonly) NSString *displayPhoneNumber;
-
-@property (nonatomic, strong, readonly) NSString *label;
-
-- (instancetype)initWithPhoneNumber:(NSString *)string label:(NSString *)label;
-
-@end
-
-
-@interface TGContactModel : NSObject
-
-@property (nonatomic, strong, readonly) NSString *firstName;
-@property (nonatomic, strong, readonly) NSString *lastName;
-
-@property (nonatomic, strong, readonly) NSArray *phoneNumbers;
-
-- (instancetype)initWithFirstName:(NSString *)firstName lastName:(NSString *)lastName phoneNumbers:(NSArray *)phoneNumbers;
-
-@end
diff --git a/submodules/ShareItems/Sources/TGContactModel.m b/submodules/ShareItems/Sources/TGContactModel.m
deleted file mode 100644
index 8a69aad4b1..0000000000
--- a/submodules/ShareItems/Sources/TGContactModel.m
+++ /dev/null
@@ -1,35 +0,0 @@
-#import "TGContactModel.h"
-
-#import
-
-@implementation TGPhoneNumberModel
-
-- (instancetype)initWithPhoneNumber:(NSString *)phoneNumber label:(NSString *)label
-{
- self = [super init];
- if (self != nil)
- {
- _phoneNumber = [FormatPhoneNumber cleanInternationalPhone:phoneNumber forceInternational:false];
- _displayPhoneNumber = [FormatPhoneNumber formatPhoneNumber:_phoneNumber];
- _label = label;
- }
- return self;
-}
-
-@end
-
-@implementation TGContactModel
-
-- (instancetype)initWithFirstName:(NSString *)firstName lastName:(NSString *)lastName phoneNumbers:(NSArray *)phoneNumbers
-{
- self = [super init];
- if (self != nil)
- {
- _firstName = firstName;
- _lastName = lastName;
- _phoneNumbers = phoneNumbers;
- }
- return self;
-}
-
-@end
diff --git a/submodules/Stripe/BUILD b/submodules/Stripe/BUILD
new file mode 100644
index 0000000000..98a5f786f1
--- /dev/null
+++ b/submodules/Stripe/BUILD
@@ -0,0 +1,27 @@
+
+objc_library(
+ name = "Stripe",
+ enable_modules = True,
+ module_name = "Stripe",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ copts = [
+ "-Isubmodules/Stripe/PublicHeaders/Stripe",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ "UIKit",
+ "PassKit",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/Stripe/Sources/STPAPIClient+ApplePay.h b/submodules/Stripe/PublicHeaders/Stripe/STPAPIClient+ApplePay.h
similarity index 100%
rename from submodules/Stripe/Sources/STPAPIClient+ApplePay.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPAPIClient+ApplePay.h
diff --git a/submodules/Stripe/Sources/STPAPIClient.h b/submodules/Stripe/PublicHeaders/Stripe/STPAPIClient.h
similarity index 100%
rename from submodules/Stripe/Sources/STPAPIClient.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPAPIClient.h
diff --git a/submodules/Stripe/Sources/STPAPIResponseDecodable.h b/submodules/Stripe/PublicHeaders/Stripe/STPAPIResponseDecodable.h
similarity index 100%
rename from submodules/Stripe/Sources/STPAPIResponseDecodable.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPAPIResponseDecodable.h
diff --git a/submodules/Stripe/Sources/STPAddress.h b/submodules/Stripe/PublicHeaders/Stripe/STPAddress.h
similarity index 100%
rename from submodules/Stripe/Sources/STPAddress.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPAddress.h
diff --git a/submodules/Stripe/Sources/STPBINRange.h b/submodules/Stripe/PublicHeaders/Stripe/STPBINRange.h
similarity index 100%
rename from submodules/Stripe/Sources/STPBINRange.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPBINRange.h
diff --git a/submodules/Stripe/Sources/STPBackendAPIAdapter.h b/submodules/Stripe/PublicHeaders/Stripe/STPBackendAPIAdapter.h
similarity index 100%
rename from submodules/Stripe/Sources/STPBackendAPIAdapter.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPBackendAPIAdapter.h
diff --git a/submodules/Stripe/Sources/STPBankAccount.h b/submodules/Stripe/PublicHeaders/Stripe/STPBankAccount.h
similarity index 100%
rename from submodules/Stripe/Sources/STPBankAccount.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPBankAccount.h
diff --git a/submodules/Stripe/Sources/STPBankAccountParams.h b/submodules/Stripe/PublicHeaders/Stripe/STPBankAccountParams.h
similarity index 100%
rename from submodules/Stripe/Sources/STPBankAccountParams.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPBankAccountParams.h
diff --git a/submodules/Stripe/Sources/STPBlocks.h b/submodules/Stripe/PublicHeaders/Stripe/STPBlocks.h
similarity index 100%
rename from submodules/Stripe/Sources/STPBlocks.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPBlocks.h
diff --git a/submodules/Stripe/Sources/STPCard.h b/submodules/Stripe/PublicHeaders/Stripe/STPCard.h
similarity index 100%
rename from submodules/Stripe/Sources/STPCard.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPCard.h
diff --git a/submodules/Stripe/Sources/STPCardBrand.h b/submodules/Stripe/PublicHeaders/Stripe/STPCardBrand.h
similarity index 100%
rename from submodules/Stripe/Sources/STPCardBrand.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPCardBrand.h
diff --git a/submodules/Stripe/Sources/STPCardParams.h b/submodules/Stripe/PublicHeaders/Stripe/STPCardParams.h
similarity index 100%
rename from submodules/Stripe/Sources/STPCardParams.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPCardParams.h
diff --git a/submodules/Stripe/Sources/STPCardValidationState.h b/submodules/Stripe/PublicHeaders/Stripe/STPCardValidationState.h
similarity index 100%
rename from submodules/Stripe/Sources/STPCardValidationState.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPCardValidationState.h
diff --git a/submodules/Stripe/Sources/STPCardValidator.h b/submodules/Stripe/PublicHeaders/Stripe/STPCardValidator.h
similarity index 100%
rename from submodules/Stripe/Sources/STPCardValidator.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPCardValidator.h
diff --git a/submodules/Stripe/Sources/STPCustomer.h b/submodules/Stripe/PublicHeaders/Stripe/STPCustomer.h
similarity index 100%
rename from submodules/Stripe/Sources/STPCustomer.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPCustomer.h
diff --git a/submodules/Stripe/Sources/STPFormEncodable.h b/submodules/Stripe/PublicHeaders/Stripe/STPFormEncodable.h
similarity index 100%
rename from submodules/Stripe/Sources/STPFormEncodable.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPFormEncodable.h
diff --git a/submodules/Stripe/Sources/STPPaymentCardTextField.h b/submodules/Stripe/PublicHeaders/Stripe/STPPaymentCardTextField.h
similarity index 100%
rename from submodules/Stripe/Sources/STPPaymentCardTextField.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPPaymentCardTextField.h
diff --git a/submodules/Stripe/Sources/STPPaymentConfiguration.h b/submodules/Stripe/PublicHeaders/Stripe/STPPaymentConfiguration.h
similarity index 100%
rename from submodules/Stripe/Sources/STPPaymentConfiguration.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPPaymentConfiguration.h
diff --git a/submodules/Stripe/Sources/STPPaymentMethod.h b/submodules/Stripe/PublicHeaders/Stripe/STPPaymentMethod.h
similarity index 100%
rename from submodules/Stripe/Sources/STPPaymentMethod.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPPaymentMethod.h
diff --git a/submodules/Stripe/Sources/STPPhoneNumberValidator.h b/submodules/Stripe/PublicHeaders/Stripe/STPPhoneNumberValidator.h
similarity index 100%
rename from submodules/Stripe/Sources/STPPhoneNumberValidator.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPPhoneNumberValidator.h
diff --git a/submodules/Stripe/Sources/STPPostalCodeValidator.h b/submodules/Stripe/PublicHeaders/Stripe/STPPostalCodeValidator.h
similarity index 100%
rename from submodules/Stripe/Sources/STPPostalCodeValidator.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPPostalCodeValidator.h
diff --git a/submodules/Stripe/Sources/STPSource.h b/submodules/Stripe/PublicHeaders/Stripe/STPSource.h
similarity index 100%
rename from submodules/Stripe/Sources/STPSource.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPSource.h
diff --git a/submodules/Stripe/Sources/STPToken.h b/submodules/Stripe/PublicHeaders/Stripe/STPToken.h
similarity index 100%
rename from submodules/Stripe/Sources/STPToken.h
rename to submodules/Stripe/PublicHeaders/Stripe/STPToken.h
diff --git a/submodules/Stripe/Sources/Stripe.h b/submodules/Stripe/PublicHeaders/Stripe/Stripe.h
similarity index 80%
rename from submodules/Stripe/Sources/Stripe.h
rename to submodules/Stripe/PublicHeaders/Stripe/Stripe.h
index 3cac805037..7b2d10cfb4 100644
--- a/submodules/Stripe/Sources/Stripe.h
+++ b/submodules/Stripe/PublicHeaders/Stripe/Stripe.h
@@ -1,11 +1,5 @@
#import
-//! Project version number for Stripe.
-FOUNDATION_EXPORT double StripeVersionNumber;
-
-//! Project version string for Stripe.
-FOUNDATION_EXPORT const unsigned char StripeVersionString[];
-
#import
#import
#import
diff --git a/submodules/Stripe/Sources/StripeError.h b/submodules/Stripe/PublicHeaders/Stripe/StripeError.h
similarity index 100%
rename from submodules/Stripe/Sources/StripeError.h
rename to submodules/Stripe/PublicHeaders/Stripe/StripeError.h
diff --git a/submodules/Svg/BUILD b/submodules/Svg/BUILD
new file mode 100644
index 0000000000..eba76650f4
--- /dev/null
+++ b/submodules/Svg/BUILD
@@ -0,0 +1,23 @@
+
+objc_library(
+ name = "Svg",
+ enable_modules = True,
+ module_name = "Svg",
+ srcs = glob([
+ "Sources/**/*.m",
+ "Sources/**/*.c",
+ "Sources/**/*.h",
+ ]),
+ hdrs = glob([
+ "PublicHeaders/**/*.h",
+ ]),
+ includes = [
+ "PublicHeaders",
+ ],
+ sdk_frameworks = [
+ "Foundation",
+ ],
+ visibility = [
+ "//visibility:public",
+ ],
+)
diff --git a/submodules/Svg/Sources/Svg.h b/submodules/Svg/PublicHeaders/Svg/Svg.h
similarity index 100%
rename from submodules/Svg/Sources/Svg.h
rename to submodules/Svg/PublicHeaders/Svg/Svg.h
diff --git a/submodules/Svg/Sources/Svg.m b/submodules/Svg/Sources/Svg.m
index def1d2b873..099cb481f0 100755
--- a/submodules/Svg/Sources/Svg.m
+++ b/submodules/Svg/Sources/Svg.m
@@ -1,4 +1,4 @@
-#import "Svg.h"
+#import