Refactor libphonenumber and TelegramAPI out of TelegramCore

This commit is contained in:
Peter 2019-10-18 11:35:04 +04:00
parent 3e6a37c1b2
commit 5f33b7ef51
53 changed files with 106 additions and 62 deletions

2
BUCK
View File

@ -36,6 +36,7 @@ framework_dependencies = [
"//submodules/MtProtoKit:MtProtoKit",
"//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit",
"//submodules/Postbox:Postbox",
"//submodules/TelegramApi:TelegramApi",
"//submodules/TelegramCore:TelegramCore",
"//submodules/AsyncDisplayKit:AsyncDisplayKit",
"//submodules/Display:Display",
@ -380,6 +381,7 @@ apple_binary(
deps = [
"//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared",
"//submodules/Postbox:Postbox#shared",
"//submodules/TelegramApi:TelegramApi#shared",
"//submodules/TelegramCore:TelegramCore#shared",
"//submodules/BuildConfig:BuildConfig",
"//submodules/OpenSSLEncryptionProvider:OpenSSLEncryptionProvider",

View File

@ -50,6 +50,8 @@ build_arm64: check_env
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64 \
//submodules/TelegramApi:TelegramApi#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramApi:TelegramApi#shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64 \
@ -76,6 +78,8 @@ build_debug_arm64: check_env
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64 \
//submodules/TelegramApi:TelegramApi#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramApi:TelegramApi#shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64 \
@ -116,6 +120,8 @@ build_debug_armv7: check_env
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-armv7 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-armv7 \
//submodules/Postbox:Postbox#shared,iphoneos-armv7 \
//submodules/TelegramApi:TelegramApi#dwarf-and-dsym,shared,iphoneos-armv7 \
//submodules/TelegramApi:TelegramApi#shared,iphoneos-armv7 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-armv7 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-armv7 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-armv7 \
@ -142,6 +148,8 @@ build: check_env
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/TelegramApi:TelegramApi#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/TelegramApi:TelegramApi#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64,iphoneos-armv7 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64,iphoneos-armv7 \
@ -282,6 +290,8 @@ build_buckdebug: check_env
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64 \
//submodules/TelegramApi:TelegramApi#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramApi:TelegramApi#shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64 \
@ -318,6 +328,8 @@ build_verbose: check_env
//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/Postbox:Postbox#shared,iphoneos-arm64 \
//submodules/TelegramApi:TelegramApi#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramApi:TelegramApi#shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#dwarf-and-dsym,shared,iphoneos-arm64 \
//submodules/TelegramCore:TelegramCore#shared,iphoneos-arm64 \
//submodules/AsyncDisplayKit:AsyncDisplayKit#dwarf-and-dsym,shared,iphoneos-arm64 \

View File

@ -5,6 +5,14 @@ import TelegramCore
import Contacts
import Intents
func formatPhoneNumber(_ value: String) -> String {
if value.hasPrefix("+") {
return value
} else {
return "+\(value)"
}
}
struct MatchingDeviceContact {
let stableId: String
let firstName: String

View File

@ -39,6 +39,7 @@ static_library(
"//submodules/PhotoResources:PhotoResources",
"//submodules/AppBundle:AppBundle",
"//submodules/ContextUI:ContextUI",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -14,6 +14,7 @@ import ContactsPeerItem
import ChatListSearchItemHeader
import ContactListUI
import ContextUI
import PhoneNumberFormat
private enum ChatListRecentEntryStableId: Hashable {
case topPeers

View File

@ -27,6 +27,7 @@ static_library(
"//submodules/ShareController:ShareController",
"//submodules/AppBundle:AppBundle",
"//submodules/OverlayStatusController:OverlayStatusController",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -7,6 +7,7 @@ import SwiftSignalKit
import TelegramCore
import TelegramPresentationData
import AppBundle
import PhoneNumberFormat
private let titleFont = Font.regular(17.0)

View File

@ -22,6 +22,7 @@ import SearchUI
import TelegramPermissionsUI
import AppBundle
import ContextUI
import PhoneNumberFormat
private let dropDownIcon = { () -> UIImage in
UIGraphicsBeginImageContextWithOptions(CGSize(width: 12.0, height: 12.0), false, 0.0)

View File

@ -13,6 +13,7 @@ import SearchUI
import ChatListSearchItemHeader
import ContactsPeerItem
import ContextUI
import PhoneNumberFormat
private enum ContactListSearchGroup {
case contacts

View File

@ -15,6 +15,7 @@ import SearchUI
import ContactsPeerItem
import ChatListSearchItemHeader
import AppBundle
import PhoneNumberFormat
private enum InviteContactsEntryId: Hashable {
case option(index: Int)

View File

@ -19,6 +19,7 @@ static_library(
"//submodules/ItemListUI:ItemListUI",
"//submodules/AppBundle:AppBundle",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -13,6 +13,7 @@ import AvatarNode
import TelegramStringFormatting
import PeerPresenceStatusManager
import AppBundle
import PhoneNumberFormat
private let updatingAvatarOverlayImage = generateFilledCircleImage(diameter: 66.0, color: UIColor(white: 0.0, alpha: 0.4), backgroundColor: nil)

View File

@ -10,6 +10,7 @@ static_library(
"//submodules/Postbox:Postbox#dynamic",
"//submodules/TelegramPresentationData:TelegramPresentationData",
"//submodules/TelegramUIPreferences:TelegramUIPreferences",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -3,6 +3,7 @@ import TelegramCore
import Postbox
import TelegramPresentationData
import TelegramUIPreferences
import PhoneNumberFormat
public extension Peer {
var compactDisplayTitle: String {

View File

@ -24,6 +24,7 @@ static_library(
"//submodules/AppBundle:AppBundle",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/Markdown:Markdown",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData
import TelegramStringFormatting
import CountrySelectionUI
import PhoneNumberFormat
enum SecureIdRequestedIdentityDocument: Int32 {
case passport

View File

@ -4,6 +4,7 @@ import AsyncDisplayKit
import Display
import TelegramCore
import TelegramPresentationData
import PhoneNumberFormat
private let titleFont = Font.regular(17.0)
private let textFont = Font.regular(15.0)

View File

@ -11,6 +11,7 @@ import AccountContext
import AlertUI
import PresentationDataUtils
import CountrySelectionUI
import PhoneNumberFormat
private func cleanPhoneNumber(_ text: String?) -> String {
var cleanNumber = ""

View File

@ -58,6 +58,7 @@ static_library(
"//submodules/ContextUI:ContextUI",
"//submodules/AppBundle:AppBundle",
"//submodules/Markdown:Markdown",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -18,6 +18,7 @@ import ItemListAvatarAndNameInfoItem
import Geocoding
import ItemListAddressItem
import LocalizedPeerData
import PhoneNumberFormat
private enum DeviceContactInfoAction {
case sendMessage

View File

@ -25,6 +25,7 @@ import NotificationMuteSettingsUI
import NotificationSoundSelectionUI
import Markdown
import LocalizedPeerData
import PhoneNumberFormat
private final class UserInfoControllerArguments {
let account: Account

View File

@ -9,6 +9,7 @@ static_library(
"//submodules/AsyncDisplayKit:AsyncDisplayKit#shared",
"//submodules/Display:Display#shared",
"//submodules/TelegramPresentationData:TelegramPresentationData",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -2,7 +2,7 @@ import Foundation
import UIKit
import AsyncDisplayKit
import Display
import TelegramCore
import PhoneNumberFormat
private func removeDuplicatedPlus(_ text: String?) -> String {
var result = ""

View File

@ -0,0 +1,21 @@
load("//Config:buck_rule_macros.bzl", "static_library")
static_library(
name = "PhoneNumberFormat",
srcs = glob([
"Sources/**/*.swift",
"Sources/**/*.m",
]),
headers = glob([
"Sources/**/*.h",
]),
exported_headers = glob([
"Sources/**/*.h",
]),
deps = [
"//submodules/libphonenumber:libphonenumber",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
],
)

View File

@ -1,10 +1,6 @@
#import "FormatPhoneNumber.h"
#if TARGET_OS_IOS
#import <libphonenumber/libphonenumber.h>
#else
#import <libphonenumbermac/libphonenumbermac.h>
#endif
static NBPhoneNumberUtil *getNBPhoneNumberUtil() {
static NBPhoneNumberUtil *value;

View File

@ -1,10 +1,5 @@
import Foundation
#if os(macOS)
import libphonenumbermac
#else
import libphonenumber
#endif
public final class InteractivePhoneFormatter {
private let formatter = NBAsYouTypeFormatter(regionCode: "US")!

View File

@ -1,9 +1,5 @@
import Foundation
#if os(macOS)
import libphonenumbermac
#else
import libphonenumber
#endif
private let phoneNumberUtil = NBPhoneNumberUtil()

View File

@ -79,6 +79,7 @@ static_library(
"//submodules/ContextUI:ContextUI",
"//submodules/WalletUI:WalletUI",
"//submodules/Markdown:Markdown",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -12,6 +12,7 @@ import AccountContext
import AlertUI
import PresentationDataUtils
import AuthorizationUI
import PhoneNumberFormat
private final class ChangePhoneNumberCodeControllerArguments {
let updateEntryText: (String) -> Void

View File

@ -10,6 +10,7 @@ import AccountContext
import AlertUI
import PresentationDataUtils
import CountrySelectionUI
import PhoneNumberFormat
final class ChangePhoneNumberController: ViewController {
private var controllerNode: ChangePhoneNumberControllerNode {

View File

@ -16,6 +16,7 @@ import ItemListAvatarAndNameInfoItem
import WebSearchUI
import PeerAvatarGalleryUI
import MapResourceToAvatarSizes
import PhoneNumberFormat
private struct EditSettingsItemArguments {
let context: AccountContext

View File

@ -11,6 +11,7 @@ import AccountContext
import AlertUI
import PresentationDataUtils
import AuthorizationUI
import PhoneNumberFormat
private final class ConfirmPhoneNumberCodeControllerArguments {
let updateEntryText: (String) -> Void

View File

@ -13,6 +13,7 @@ import LocalAuth
import CallListUI
import NotificationSoundSelectionUI
import PresentationDataUtils
import PhoneNumberFormat
private let maximumNumberOfAccounts = 3

View File

@ -6,11 +6,7 @@ import SwiftSignalKit
import Postbox
import TelegramCore
import LegacyComponents
#if BUCK
import MtProtoKit
#else
import MtProtoKitDynamic
#endif
import TelegramPresentationData
import TelegramUIPreferences
import DeviceAccess
@ -37,6 +33,7 @@ import MapResourceToAvatarSizes
import AppBundle
import ContextUI
import WalletUI
import PhoneNumberFormat
private let maximumNumberOfAccounts = 3

View File

@ -23,6 +23,7 @@ static_library(
"//submodules/Pdf:Pdf",
"//submodules/AccountContext:AccountContext",
"//submodules/MimeTypes:MimeTypes",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -1,6 +1,6 @@
#import "TGContactModel.h"
#import <TelegramCore/TelegramCore.h>
#import <PhoneNumberFormat/PhoneNumberFormat.h>
@implementation TGPhoneNumberModel

View File

@ -8,8 +8,8 @@ static_library(
deps = [
"//submodules/AsyncDisplayKit:AsyncDisplayKit#shared",
"//submodules/Display:Display#shared",
"//submodules/TelegramCore:TelegramCore#shared",
"//submodules/TelegramStringFormatting:TelegramStringFormatting",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -4,6 +4,7 @@ import AsyncDisplayKit
import Display
import TelegramCore
import TelegramStringFormatting
import PhoneNumberFormat
private func removeDuplicatedPlus(_ text: String?) -> String {
var result = ""

View File

@ -1,6 +1,6 @@
load("//Config:buck_rule_macros.bzl", "static_library")
load("//Config:buck_rule_macros.bzl", "framework")
static_library(
framework(
name = "TelegramApi",
srcs = glob([
"Sources/**/*.swift",

View File

@ -7,24 +7,21 @@ framework(
"TelegramCore/*.m",
]),
headers = [
"TelegramCore/FormatPhoneNumber.h",
"TelegramCore/Crypto.h",
"TelegramCore/NetworkLogging.h",
"TelegramCore/Reachability.h",
],
exported_headers = [
"TelegramCore/FormatPhoneNumber.h",
"TelegramCore/Crypto.h",
"TelegramCore/NetworkLogging.h",
"TelegramCore/Reachability.h",
],
deps = [
"//submodules/libphonenumber:libphonenumber",
"//submodules/TelegramApi:TelegramApi",
"//submodules/TelegramApi:TelegramApi#shared",
"//submodules/MtProtoKit:MtProtoKit#shared",
"//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared",
"//submodules/Postbox:Postbox#shared",
"//submodules/CloudData:CloudData",
"//submodules/CloudData:CloudData",
"//submodules/EncryptionProvider:EncryptionProvider",
],
frameworks = [

View File

@ -1109,40 +1109,7 @@ public class Account {
}
let networkStateQueue = Queue()
/*
let previousNetworkStatus = Atomic<Bool?>(value: nil)
let delayNetworkStatus = self.shouldBeServiceTaskMaster.get()
|> map { mode -> Bool in
switch mode {
case .now, .always:
return true
case .never:
return false
}
}
|> distinctUntilChanged
|> deliverOn(networkStateQueue)
|> mapToSignal { value -> Signal<Bool, NoError> in
var shouldDelay = false
let _ = previousNetworkStatus.modify { previous in
if let previous = previous {
if !previous && value {
shouldDelay = true
}
} else {
shouldDelay = true
}
return value
}
if shouldDelay {
let delayedFalse = Signal<Bool, NoError>.single(false)
|> delay(3.0, queue: networkStateQueue)
return .single(true)
|> then(delayedFalse)
} else {
return .single(!value)
}
}*/
let networkStateSignal = combineLatest(queue: networkStateQueue, self.stateManager.isUpdating, network.connectionStatus/*, delayNetworkStatus*/)
|> map { isUpdating, connectionStatus/*, delayNetworkStatus*/ -> AccountNetworkState in
/*if delayNetworkStatus {
@ -1412,6 +1379,12 @@ public class Account {
public func acquireLocalInputActivity(peerId: PeerId, activity: PeerInputActivity) -> Disposable {
return self.localInputActivityManager.acquireActivity(chatPeerId: peerId, peerId: self.peerId, activity: activity)
}
public func addUpdates(serializedData: Data) -> Void {
if let object = Api.parse(Buffer(data: serializedData)) {
//self.stateManager.addUpdates()
}
}
}
public func accountNetworkUsageStats(account: Account, reset: ResetNetworkUsageStats) -> Signal<NetworkUsageStats, NoError> {

View File

@ -9,6 +9,16 @@ import SwiftSignalKit
import TelegramApi
#endif
private func normalizedPhoneNumber(_ value: String) -> String {
var result = ""
for c in value {
if c.isNumber {
result.append(c)
}
}
return result
}
private final class ContactSyncOperation {
let id: Int32
var isRunning: Bool = false
@ -277,7 +287,7 @@ private func pushDeviceContacts(postbox: Postbox, network: Network, importableCo
var currentContactDetails: [TelegramDeviceContactImportIdentifier: TelegramUser] = [:]
for peerId in transaction.getContactPeerIds() {
if let user = transaction.getPeer(peerId) as? TelegramUser, let phone = user.phone, !phone.isEmpty {
currentContactDetails[.phoneNumber(DeviceContactNormalizedPhoneNumber(rawValue: formatPhoneNumber(phone)))] = user
currentContactDetails[.phoneNumber(DeviceContactNormalizedPhoneNumber(rawValue: normalizedPhoneNumber(phone)))] = user
}
}

View File

@ -191,6 +191,7 @@ framework(
"//submodules/SearchPeerMembers:SearchPeerMembers",
"//submodules/WidgetItems:WidgetItems",
"//submodules/OpenSSLEncryptionProvider:OpenSSLEncryptionProvider",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -11,6 +11,7 @@ import LiveLocationManager
import TemporaryCachedPeerDataManager
import WalletCore
import WalletUI
import PhoneNumberFormat
private final class DeviceSpecificContactImportContext {
let disposable = MetaDisposable()

View File

@ -17,6 +17,7 @@ import TextFormat
import AccountContext
import CountrySelectionUI
import SettingsUI
import PhoneNumberFormat
private enum InnerState: Equatable {
case state(UnauthorizedAccountStateContents)

View File

@ -10,6 +10,7 @@ import ProgressNavigationButtonNode
import AccountContext
import CountrySelectionUI
import SettingsUI
import PhoneNumberFormat
final class AuthorizationSequencePhoneEntryController: ViewController {
private var controllerNode: AuthorizationSequencePhoneEntryControllerNode {

View File

@ -50,6 +50,7 @@ import AppBundle
import WalletUI
import WalletUrl
import LocalizedPeerData
import PhoneNumberFormat
public enum ChatControllerPeekActions {
case standard

View File

@ -8,6 +8,7 @@ import TelegramCore
import TelegramPresentationData
import AvatarNode
import AccountContext
import PhoneNumberFormat
private let avatarFont = UIFont(name: ".SFCompactRounded-Semibold", size: 16.0)!

View File

@ -13,6 +13,7 @@ import TelegramStringFormatting
import PeerPresenceStatusManager
import ChatTitleActivityNode
import LocalizedPeerData
import PhoneNumberFormat
enum ChatTitleContent {
case peer(peerView: PeerView, onlineMemberCount: Int32?, isScheduledMessages: Bool)

View File

@ -7,6 +7,7 @@ import AddressBook
import TelegramUIPreferences
import DeviceAccess
import AccountContext
import PhoneNumberFormat
private protocol DeviceContactDataContext {
func personNameDisplayOrder() -> PresentationPersonNameOrder

View File

@ -27,6 +27,7 @@ static_library(
"//submodules/PhotoResources:PhotoResources",
"//submodules/LegacyComponents:LegacyComponents",
"//submodules/LegacyUI:LegacyUI",
"//submodules/PhoneNumberFormat:PhoneNumberFormat",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -4,6 +4,7 @@ import TelegramCore
import WatchCommon
import TelegramPresentationData
import LegacyUI
import PhoneNumberFormat
func makePeerIdFromBridgeIdentifier(_ identifier: Int64) -> PeerId? {
if identifier < 0 && identifier > Int32.min {