Initial 64-bit id support

This commit is contained in:
Ali
2021-06-28 20:02:50 +04:00
parent d7f64543d5
commit a23971c0ef
129 changed files with 1486 additions and 1314 deletions

View File

@@ -145,8 +145,8 @@ public func parseInternalUrl(query: String) -> ParsedInternalUrl? {
}
}
}
} else if pathComponents[0].hasPrefix(phonebookUsernamePathPrefix), let idValue = Int32(String(pathComponents[0][pathComponents[0].index(pathComponents[0].startIndex, offsetBy: phonebookUsernamePathPrefix.count)...])) {
return .peerId(PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt32Value(idValue)))
} else if pathComponents[0].hasPrefix(phonebookUsernamePathPrefix), let idValue = Int64(String(pathComponents[0][pathComponents[0].index(pathComponents[0].startIndex, offsetBy: phonebookUsernamePathPrefix.count)...])) {
return .peerId(PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(idValue)))
} else if pathComponents[0].hasPrefix("+") || pathComponents[0].hasPrefix("%20") {
return .join(String(pathComponents[0].dropFirst()))
}
@@ -279,7 +279,7 @@ public func parseInternalUrl(query: String) -> ParsedInternalUrl? {
} else if pathComponents[0] == "addtheme" {
return .theme(pathComponents[1])
} else if pathComponents.count == 3 && pathComponents[0] == "c" {
if let channelId = Int32(pathComponents[1]), let messageId = Int32(pathComponents[2]) {
if let channelId = Int64(pathComponents[1]), let messageId = Int32(pathComponents[2]) {
var threadId: Int32?
if let queryItems = components.queryItems {
for queryItem in queryItems {
@@ -293,7 +293,7 @@ public func parseInternalUrl(query: String) -> ParsedInternalUrl? {
}
}
}
return .privateMessage(messageId: MessageId(peerId: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt32Value(channelId)), namespace: Namespaces.Message.Cloud, id: messageId), threadId: threadId)
return .privateMessage(messageId: MessageId(peerId: PeerId(namespace: Namespaces.Peer.CloudChannel, id: PeerId.Id._internalFromInt64Value(channelId)), namespace: Namespaces.Message.Cloud, id: messageId), threadId: threadId)
} else {
return nil
}
@@ -406,7 +406,7 @@ private func resolveInternalUrl(context: AccountContext, url: ParsedInternalUrl)
if let peer = peer {
foundPeer = .single(peer)
} else {
foundPeer = TelegramEngine(account: context.account).peers.findChannelById(channelId: messageId.peerId.id._internalGetInt32Value())
foundPeer = TelegramEngine(account: context.account).peers.findChannelById(channelId: messageId.peerId.id._internalGetInt64Value())
}
return foundPeer
|> mapToSignal { foundPeer -> Signal<ResolvedUrl?, NoError> in