History menu improvements
This commit is contained in:
@@ -34,7 +34,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||
|
||||
private func historyMenu() -> UIMenu {
|
||||
let historyItems = BrowserHistory.shared.allHistory(limit: 50).map { item in
|
||||
let title = (item.title.count > 0) ? item.title : item.url.absoluteString
|
||||
let title = ((item.title.count > 0) ? item.title : item.url.absoluteString)
|
||||
.middleTruncatedString(maximumLength: 85)
|
||||
|
||||
return UIAction(title: title) { action in
|
||||
UIApplication.shared.sendAction(#selector(ShortcutResponder.handleOpenURL), to: nil, from: action, for: OpenURLEvent(url: item.url))
|
||||
}
|
||||
|
||||
@@ -84,6 +84,8 @@ class BrowserHistory
|
||||
let nserror = error as NSError
|
||||
fatalError("Failed saving persistent entity to store: \(nserror), \(nserror.userInfo)")
|
||||
}
|
||||
|
||||
UIMenuSystem.main.setNeedsRebuild()
|
||||
}
|
||||
|
||||
public func viewModel(forFilterString filterString: String? = nil, limit: Int = 500) -> ViewModel {
|
||||
|
||||
26
App/Utilities/StringUtilities.swift
Normal file
26
App/Utilities/StringUtilities.swift
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// StringUtilities.swift
|
||||
// App
|
||||
//
|
||||
// Created by James Magahern on 7/31/24.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension String {
|
||||
internal func middleTruncatedString(maximumLength: Int) -> String {
|
||||
if maximumLength > self.count {
|
||||
return self
|
||||
}
|
||||
|
||||
// Compute replacement range
|
||||
let pivot = self.count / 2
|
||||
let truncationLength = self.count - maximumLength
|
||||
|
||||
let pivotIndex = self.index(startIndex, offsetBy: pivot)
|
||||
let startIndex = self.index(pivotIndex, offsetBy: -truncationLength / 2)
|
||||
let endIndex = self.index(pivotIndex, offsetBy: truncationLength / 2)
|
||||
|
||||
return replacingCharacters(in: startIndex..<endIndex, with: "…")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user