Update Ghostgram features

This commit is contained in:
ichmagmaus 812
2026-03-07 18:15:32 +01:00
parent 1a3303b059
commit 24a7ec39d9
902 changed files with 148302 additions and 62355 deletions
@@ -131,7 +131,7 @@ public func webpagePreviewWithProgress(account: Account, urls: [String], webpage
}
if let imageProvider = metadata.imageProvider {
imageProvider.loadFileRepresentation(forTypeIdentifier: kUTTypeImage as String, completionHandler: { imageUrl, _ in
imageProvider.loadFileRepresentation(forTypeIdentifier: "public.image", completionHandler: { imageUrl, _ in
guard let imageUrl, let imageData = try? Data(contentsOf: imageUrl) else {
completeWithImage(nil)
return
@@ -157,7 +157,7 @@ public func webpagePreviewWithProgress(account: Account, urls: [String], webpage
return account.network.requestWithAdditionalInfo(Api.functions.messages.getWebPagePreview(flags: 0, message: urls.joined(separator: " "), entities: nil), info: .progress)
|> `catch` { _ -> Signal<NetworkRequestResult<Api.messages.WebPagePreview>, NoError> in
return .single(.result(.webPagePreview(media: .messageMediaEmpty, chats: [], users: [])))
return .single(.result(.webPagePreview(.init(media: .messageMediaEmpty, chats: [], users: []))))
}
|> mapToSignal { result -> Signal<WebpagePreviewWithProgressResult, NoError> in
switch result {
@@ -170,15 +170,17 @@ public func webpagePreviewWithProgress(account: Account, urls: [String], webpage
return .complete()
}
case let .result(result):
if case let .webPagePreview(result, _, _) = result, let preCachedResources = result.preCachedResources {
if case let .webPagePreview(webPagePreviewData) = result, let preCachedResources = webPagePreviewData.media.preCachedResources {
for (resource, data) in preCachedResources {
account.postbox.mediaBox.storeResourceData(resource.id, data: data)
}
}
switch result {
case let .webPagePreview(media, chats, users):
case let .webPagePreview(webPagePreviewData):
let (media, chats, users) = (webPagePreviewData.media, webPagePreviewData.chats, webPagePreviewData.users)
switch media {
case let .messageMediaWebPage(_, webpage):
case let .messageMediaWebPage(messageMediaWebPageData):
let webpage = messageMediaWebPageData.webpage
return account.postbox.transaction { transaction -> Signal<WebpagePreviewWithProgressResult, NoError> in
let peers = AccumulatedPeers(chats: chats, users: users)
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: peers)
@@ -227,13 +229,14 @@ public func actualizedWebpage(account: Account, webpage: TelegramMediaWebpage) -
if let result = result {
return account.postbox.transaction { transaction -> Signal<TelegramMediaWebpage, NoError> in
switch result {
case let .webPage(apiWebpage, chats, users):
case let .webPage(webPageData):
let (apiWebpage, chats, users) = (webPageData.webpage, webPageData.chats, webPageData.users)
let parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users)
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: parsedPeers)
if let updatedWebpage = telegramMediaWebpageFromApiWebpage(apiWebpage), case .Loaded = updatedWebpage.content, updatedWebpage.webpageId == webpage.webpageId {
return .single(updatedWebpage)
} else if case let .webPageNotModified(_, viewsValue) = apiWebpage, let views = viewsValue, case let .Loaded(content) = webpage.content {
} else if case let .webPageNotModified(webPageNotModifiedData) = apiWebpage, let views = webPageNotModifiedData.cachedPageViews, case let .Loaded(content) = webpage.content {
let updatedContent: TelegramMediaWebpageContent = .Loaded(TelegramMediaWebpageLoadedContent(
url: content.url,
displayUrl: content.displayUrl,
@@ -280,7 +283,8 @@ public func updatedRemoteWebpage(postbox: Postbox, network: Network, accountPeer
return .single(nil)
}
|> mapToSignal { result -> Signal<TelegramMediaWebpage?, NoError> in
if let result = result, case let .webPage(webpage, chats, users) = result, let updatedWebpage = telegramMediaWebpageFromApiWebpage(webpage), case .Loaded = updatedWebpage.content {
if let result = result, case let .webPage(webPageData) = result, let updatedWebpage = telegramMediaWebpageFromApiWebpage(webPageData.webpage), case .Loaded = updatedWebpage.content {
let (chats, users) = (webPageData.chats, webPageData.users)
if updatedWebpage.webpageId.id == id {
return postbox.transaction { transaction -> TelegramMediaWebpage? in
let parsedPeers = AccumulatedPeers(transaction: transaction, chats: chats, users: users)