History menu improvements

This commit is contained in:
James Magahern
2024-07-31 17:53:23 -07:00
parent a0056af8b1
commit 29057c8024
4 changed files with 35 additions and 1 deletions

View File

@@ -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))
}

View File

@@ -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 {

View 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: "")
}
}