mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Various fixes
This commit is contained in:
parent
42de4756aa
commit
fd5e1022e7
@ -55,7 +55,8 @@ final class BrowserPdfContent: UIView, BrowserContent, UIScrollViewDelegate, PDF
|
|||||||
self.file = file
|
self.file = file
|
||||||
|
|
||||||
self.pdfView = PDFView()
|
self.pdfView = PDFView()
|
||||||
|
self.pdfView.clipsToBounds = false
|
||||||
|
|
||||||
var scrollView: UIScrollView?
|
var scrollView: UIScrollView?
|
||||||
for view in self.pdfView.subviews {
|
for view in self.pdfView.subviews {
|
||||||
if let view = view as? UIScrollView {
|
if let view = view as? UIScrollView {
|
||||||
@ -69,6 +70,7 @@ final class BrowserPdfContent: UIView, BrowserContent, UIScrollViewDelegate, PDF
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.scrollView = scrollView
|
self.scrollView = scrollView
|
||||||
|
scrollView?.clipsToBounds = false
|
||||||
|
|
||||||
self.pdfView.displayDirection = .vertical
|
self.pdfView.displayDirection = .vertical
|
||||||
self.pdfView.autoScales = true
|
self.pdfView.autoScales = true
|
||||||
@ -296,7 +298,14 @@ final class BrowserPdfContent: UIView, BrowserContent, UIScrollViewDelegate, PDF
|
|||||||
|
|
||||||
self.previousScrollingOffset = ScrollingOffsetState(value: self.scrollView.contentOffset.y, isDraggingOrDecelerating: self.scrollView.isDragging || self.scrollView.isDecelerating)
|
self.previousScrollingOffset = ScrollingOffsetState(value: self.scrollView.contentOffset.y, isDraggingOrDecelerating: self.scrollView.isDragging || self.scrollView.isDecelerating)
|
||||||
|
|
||||||
let pdfViewFrame = CGRect(origin: CGPoint(x: insets.left, y: insets.top), size: CGSize(width: size.width - insets.left - insets.right, height: size.height - insets.top - insets.bottom))
|
let currentBounds = self.scrollView.bounds
|
||||||
|
let offsetToBottomEdge = max(0.0, self.scrollView.contentSize.height - currentBounds.maxY)
|
||||||
|
var bottomInset = insets.bottom
|
||||||
|
if offsetToBottomEdge < 128.0 {
|
||||||
|
bottomInset = fullInsets.bottom
|
||||||
|
}
|
||||||
|
|
||||||
|
let pdfViewFrame = CGRect(origin: CGPoint(x: insets.left, y: insets.top), size: CGSize(width: size.width - insets.left - insets.right, height: size.height - insets.top - bottomInset))
|
||||||
transition.setFrame(view: self.pdfView, frame: pdfViewFrame)
|
transition.setFrame(view: self.pdfView, frame: pdfViewFrame)
|
||||||
|
|
||||||
if isFirstTime {
|
if isFirstTime {
|
||||||
@ -370,6 +379,10 @@ final class BrowserPdfContent: UIView, BrowserContent, UIScrollViewDelegate, PDF
|
|||||||
}
|
}
|
||||||
if !decelerate {
|
if !decelerate {
|
||||||
self.snapScrollingOffsetToInsets()
|
self.snapScrollingOffsetToInsets()
|
||||||
|
|
||||||
|
if self.ignoreUpdatesUntilScrollingStopped {
|
||||||
|
self.ignoreUpdatesUntilScrollingStopped = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,9 +391,16 @@ final class BrowserPdfContent: UIView, BrowserContent, UIScrollViewDelegate, PDF
|
|||||||
scrollViewDelegate.scrollViewDidEndDecelerating?(scrollView)
|
scrollViewDelegate.scrollViewDidEndDecelerating?(scrollView)
|
||||||
}
|
}
|
||||||
self.snapScrollingOffsetToInsets()
|
self.snapScrollingOffsetToInsets()
|
||||||
|
|
||||||
|
if self.ignoreUpdatesUntilScrollingStopped {
|
||||||
|
self.ignoreUpdatesUntilScrollingStopped = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func updateScrollingOffset(isReset: Bool, transition: ComponentTransition) {
|
private func updateScrollingOffset(isReset: Bool, transition: ComponentTransition) {
|
||||||
|
guard !self.ignoreUpdatesUntilScrollingStopped else {
|
||||||
|
return
|
||||||
|
}
|
||||||
guard let scrollView = self.scrollView else {
|
guard let scrollView = self.scrollView else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -412,8 +432,12 @@ final class BrowserPdfContent: UIView, BrowserContent, UIScrollViewDelegate, PDF
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var ignoreUpdatesUntilScrollingStopped = false
|
||||||
func resetScrolling() {
|
func resetScrolling() {
|
||||||
self.updateScrollingOffset(isReset: true, transition: .spring(duration: 0.4))
|
self.updateScrollingOffset(isReset: true, transition: .spring(duration: 0.4))
|
||||||
|
if self.scrollView.isDecelerating {
|
||||||
|
self.ignoreUpdatesUntilScrollingStopped = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func open(url: String, new: Bool) {
|
private func open(url: String, new: Bool) {
|
||||||
|
@ -65,7 +65,7 @@ func resolveMissingStickerSets(network: Network, postbox: Postbox, stickerSets:
|
|||||||
var missingSignals: [Signal<(Int, Api.StickerSetCovered)?, NoError>] = []
|
var missingSignals: [Signal<(Int, Api.StickerSetCovered)?, NoError>] = []
|
||||||
for i in 0 ..< stickerSets.count {
|
for i in 0 ..< stickerSets.count {
|
||||||
switch stickerSets[i] {
|
switch stickerSets[i] {
|
||||||
case let .stickerSetNoCovered(value):
|
case let .stickerSetNoCovered(value), let .stickerSetCovered(value, _):
|
||||||
switch value {
|
switch value {
|
||||||
case let .stickerSet(_, _, id, accessHash, _, _, _, _, _, _, _, hash):
|
case let .stickerSet(_, _, id, accessHash, _, _, _, _, _, _, _, hash):
|
||||||
if ignorePacksWithHashes[id] == hash {
|
if ignorePacksWithHashes[id] == hash {
|
||||||
@ -143,7 +143,7 @@ func updatedFeaturedStickerPacks(network: Network, postbox: Postbox, category: F
|
|||||||
case .featuredStickersNotModified:
|
case .featuredStickersNotModified:
|
||||||
return .single(.notModified)
|
return .single(.notModified)
|
||||||
case let .featuredStickers(flags, _, _, sets, unread):
|
case let .featuredStickers(flags, _, _, sets, unread):
|
||||||
return resolveMissingStickerSets(network: network, postbox: postbox, stickerSets: sets, ignorePacksWithHashes: initialPackMap.mapValues({ item in
|
return resolveMissingStickerSets(network: network, postbox: postbox, stickerSets: sets, ignorePacksWithHashes: initialPackMap.filter { $0.value.topItems.count > 1 }.mapValues({ item in
|
||||||
item.info.hash
|
item.info.hash
|
||||||
}))
|
}))
|
||||||
|> castError(MTRpcError.self)
|
|> castError(MTRpcError.self)
|
||||||
@ -153,8 +153,10 @@ func updatedFeaturedStickerPacks(network: Network, postbox: Postbox, category: F
|
|||||||
for set in sets {
|
for set in sets {
|
||||||
var (info, items) = parsePreviewStickerSet(set, namespace: category.collectionIdNamespace)
|
var (info, items) = parsePreviewStickerSet(set, namespace: category.collectionIdNamespace)
|
||||||
if let previousPack = initialPackMap[info.id.id] {
|
if let previousPack = initialPackMap[info.id.id] {
|
||||||
if previousPack.info.hash == info.hash {
|
if previousPack.info.hash == info.hash, previousPack.topItems.count > 1 {
|
||||||
items = previousPack.topItems
|
items = previousPack.topItems
|
||||||
|
} else {
|
||||||
|
items = Array(items.prefix(5))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
updatedPacks.append(FeaturedStickerPackItem(info: info, topItems: items, unread: unreadIds.contains(info.id.id)))
|
updatedPacks.append(FeaturedStickerPackItem(info: info, topItems: items, unread: unreadIds.contains(info.id.id)))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user