Browser improvements

This commit is contained in:
Ilya Laktyushin
2024-07-25 14:39:07 +02:00
parent 8120dde68c
commit 606e33607a
12 changed files with 483 additions and 29 deletions

View File

@@ -188,7 +188,10 @@ private final class BrowserScreenComponent: CombinedComponent {
centerItem: navigationContent,
readingProgress: context.component.contentState?.readingProgress ?? 0.0,
loadingProgress: context.component.contentState?.estimatedProgress,
collapseFraction: collapseFraction
collapseFraction: collapseFraction,
activate: {
performAction.invoke(.expand)
}
),
availableSize: context.availableSize,
transition: context.transition
@@ -267,6 +270,7 @@ private final class BrowserScreenComponent: CombinedComponent {
)
context.add(addressList
.position(CGPoint(x: context.availableSize.width / 2.0, y: navigationBar.size.height + addressList.size.height / 2.0))
.clipsToBounds(true)
.appear(.default(alpha: true))
.disappear(.default(alpha: true))
)
@@ -314,6 +318,7 @@ public class BrowserScreen: ViewController, MinimizableController {
case openAddressBar
case closeAddressBar
case navigateTo(String)
case expand
}
fileprivate final class Node: ViewControllerTracingNode {
@@ -568,6 +573,10 @@ public class BrowserScreen: ViewController, MinimizableController {
updatedState.addressFocused = false
return updatedState
})
case .expand:
if let content = self.content.last {
content.resetScrolling()
}
}
}
@@ -626,6 +635,14 @@ public class BrowserScreen: ViewController, MinimizableController {
}
self.pushContent(content, transition: .spring(duration: 0.4))
}
browserContent.openAppUrl = { [weak self] url in
guard let self else {
return
}
self.context.sharedContext.openExternalUrl(context: self.context, urlContext: .generic, url: url, forceExternal: false, presentationData: self.presentationData, navigationController: self.controller?.navigationController as? NavigationController, dismissInput: { [weak self] in
self?.view.window?.endEditing(true)
})
}
browserContent.present = { [weak self] c, a in
guard let self, let controller = self.controller else {
return
@@ -989,6 +1006,10 @@ public class BrowserScreen: ViewController, MinimizableController {
}
}
if update.isReset {
scrollingPanelOffsetFraction = 0.0
}
if scrollingPanelOffsetFraction != self.scrollingPanelOffsetFraction {
self.scrollingPanelOffsetFraction = scrollingPanelOffsetFraction
self.requestLayout(transition: transition)