@@ -32,7 +32,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
3232 private var originalContent : BrowserContent ?
3333 private let url : String
3434
35- private var webPage : TelegramMediaWebpage ?
35+ private var webPage : ( webPage : TelegramMediaWebpage , instantPage : InstantPage ? ) ?
3636
3737 let uuid : UUID
3838
@@ -97,7 +97,11 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
9797
9898 init ( context: AccountContext , presentationData: PresentationData , webPage: TelegramMediaWebpage , anchor: String ? , url: String , sourceLocation: InstantPageSourceLocation , preloadedResouces: [ Any ] ? , originalContent: BrowserContent ? = nil ) {
9999 self . context = context
100- self . webPage = webPage
100+ var instantPage : InstantPage ?
101+ if case let . Loaded( content) = webPage. content {
102+ instantPage = content. instantPage? . _parse ( )
103+ }
104+ self . webPage = ( webPage, instantPage)
101105 self . presentationData = presentationData
102106 self . theme = instantPageThemeForType ( presentationData. theme. overallDarkAppearance ? . dark : . light, settings: . defaultSettings)
103107 self . sourceLocation = sourceLocation
@@ -267,7 +271,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
267271 }
268272
269273 private func updateWebPage( _ webPage: TelegramMediaWebpage ? , anchor: String ? , state: InstantPageStoredState ? = nil ) {
270- if self . webPage != webPage {
274+ if self . webPage? . webPage != webPage {
271275 if self . webPage != nil && self . currentLayout != nil {
272276 if let snapshotView = self . scrollNode. view. snapshotView ( afterScreenUpdates: false ) {
273277 snapshotView. frame = self . scrollNode. frame
@@ -279,7 +283,15 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
279283 }
280284
281285 self . setupScrollOffsetOnLayout = self . webPage == nil
282- self . webPage = webPage
286+ if let webPage {
287+ var instantPage : InstantPage ?
288+ if case let . Loaded( content) = webPage. content {
289+ instantPage = content. instantPage? . _parse ( )
290+ }
291+ self . webPage = ( webPage, instantPage)
292+ } else {
293+ self . webPage = nil
294+ }
283295 if let anchor = anchor {
284296 self . initialAnchor = anchor. removingPercentEncoding
285297 } else if let state = state {
@@ -455,11 +467,11 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
455467 }
456468
457469 private func updatePageLayout( ) {
458- guard let ( size, insets, _) = self . containerLayout, let webPage = self . webPage else {
470+ guard let ( size, insets, _) = self . containerLayout, let ( webPage, instantPage ) = self . webPage else {
459471 return
460472 }
461473
462- let currentLayout = instantPageLayoutForWebPage ( webPage, userLocation: self . sourceLocation. userLocation, boundingWidth: size. width, safeInset: insets. left, strings: self . presentationData. strings, theme: self . theme, dateTimeFormat: self . presentationData. dateTimeFormat, webEmbedHeights: self . currentWebEmbedHeights)
474+ let currentLayout = instantPageLayoutForWebPage ( webPage, instantPage : instantPage , userLocation: self . sourceLocation. userLocation, boundingWidth: size. width, safeInset: insets. left, strings: self . presentationData. strings, theme: self . theme, dateTimeFormat: self . presentationData. dateTimeFormat, webEmbedHeights: self . currentWebEmbedHeights)
463475
464476 for (_, tileNode) in self . visibleTiles {
465477 tileNode. removeFromSupernode ( )
@@ -920,7 +932,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
920932 }
921933 }
922934
923- if let webPage = self . webPage, case let . Loaded ( content ) = webPage . content , let page = content . instantPage, page. url == baseUrl || baseUrl. isEmpty, let anchor = anchor {
935+ if let page = self . webPage? . instantPage, page. url == baseUrl || baseUrl. isEmpty, let anchor = anchor {
924936 self . scrollToAnchor ( anchor)
925937 return
926938 }
@@ -1029,7 +1041,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
10291041 }
10301042
10311043 private func openMedia( _ media: InstantPageMedia ) {
1032- guard let items = self . currentLayout? . items, let webPage = self . webPage else {
1044+ guard let items = self . currentLayout? . items, let ( webPage, _ ) = self . webPage else {
10331045 return
10341046 }
10351047
@@ -1157,7 +1169,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
11571169 let _ = saveToCameraRoll ( context: self . context, postbox: self . context. account. postbox, userLocation: self . sourceLocation. userLocation, mediaReference: . standalone( media: media) ) . start ( )
11581170 }
11591171 } ) , ContextMenuAction ( content: . text( title: self . presentationData. strings. Conversation_ContextMenuShare, accessibilityLabel: self . presentationData. strings. Conversation_ContextMenuShare) , action: { [ weak self] in
1160- if let self, let webPage = self . webPage, let image = media. media. _asMedia ( ) as? TelegramMediaImage {
1172+ if let self, let ( webPage, _ ) = self . webPage, let image = media. media. _asMedia ( ) as? TelegramMediaImage {
11611173 self . present ( ShareController ( context: self . context, subject: . image( image. representations. map ( { ImageRepresentationWithReference ( representation: $0, reference: MediaResourceReference . media ( media: . webPage( webPage: WebpageReference ( webPage) , media: image) , resource: $0. resource) ) } ) ) ) , nil )
11621174 }
11631175 } ) ] , catchTapsOutside: true )
@@ -1300,7 +1312,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
13001312 strongSelf. present ( UndoOverlayController ( presentationData: presentationData, content: . copy( text: strings. Conversation_TextCopied) , elevatedLayout: false , animateInAsReplacement: false , action: { _ in return false } ) , nil )
13011313 }
13021314 } ) , ContextMenuAction ( content: . text( title: strings. Conversation_ContextMenuShare, accessibilityLabel: strings. Conversation_ContextMenuShare) , action: { [ weak self] in
1303- if let strongSelf = self , let webPage = strongSelf. webPage, case let . Loaded( content) = webPage. content {
1315+ if let strongSelf = self , let ( webPage, _ ) = strongSelf. webPage, case let . Loaded( content) = webPage. content {
13041316 strongSelf. present ( ShareController ( context: strongSelf. context, subject: . quote( text: text, url: content. url) ) , nil )
13051317 }
13061318 } ) ]
@@ -1368,7 +1380,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
13681380 }
13691381
13701382 private func presentReferenceView( item: InstantPageTextItem , referenceAnchor: String ) {
1371- guard let webPage = self . webPage else {
1383+ guard let ( webPage, instantPage ) = self . webPage else {
13721384 return
13731385 }
13741386
@@ -1389,7 +1401,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
13891401 return
13901402 }
13911403
1392- let controller = InstantPageReferenceController ( context: self . context, sourceLocation: self . sourceLocation, theme: theme, webPage: webPage, anchorText: anchorText, openUrl: { [ weak self] url in
1404+ let controller = InstantPageReferenceController ( context: self . context, sourceLocation: self . sourceLocation, theme: theme, webPage: webPage, instantPage : instantPage , anchorText: anchorText, openUrl: { [ weak self] url in
13931405 self ? . openUrl ( url)
13941406 } , openUrlIn: { [ weak self] url in
13951407 self ? . openUrlIn ( url)
@@ -1444,7 +1456,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
14441456 }
14451457 self . scrollNode. view. setContentOffset ( CGPoint ( x: 0.0 , y: targetY) , animated: true )
14461458 }
1447- } else if case let . Loaded ( content ) = self . webPage? . content , let instantPage = content . instantPage, !instantPage. isComplete {
1459+ } else if let instantPage = self . webPage? . instantPage, !instantPage. isComplete {
14481460// self.loadProgress.set(0.5)
14491461 self . pendingAnchor = anchor
14501462 }
@@ -1480,7 +1492,7 @@ final class BrowserInstantPageContent: UIView, BrowserContent, UIScrollViewDeleg
14801492 }
14811493
14821494 func addToRecentlyVisited( ) {
1483- if let webPage = self . webPage {
1495+ if let ( webPage, _ ) = self . webPage {
14841496 let _ = addRecentlyVisitedLink ( engine: self . context. engine, webPage: webPage) . startStandalone ( )
14851497 }
14861498 }
0 commit comments