This commit is contained in:
Evgeny Poberezkin
2024-07-15 10:33:04 +01:00
parent fc4ad32417
commit f84301883d
3 changed files with 9 additions and 45 deletions
+3 -4
View File
@@ -15,29 +15,28 @@ class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
logger.debug("AppDelegate: didFinishLaunchingWithOptions")
application.registerForRemoteNotifications()
if #available(iOS 17.0, *) { trackKeyboard() }
trackKeyboard()
NotificationCenter.default.addObserver(self, selector: #selector(pasteboardChanged), name: UIPasteboard.changedNotification, object: nil)
removePasscodesIfReinstalled()
prepareForLaunch()
return true
}
@available(iOS 17.0, *)
private func trackKeyboard() {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
@available(iOS 17.0, *)
@objc func keyboardWillShow(_ notification: Notification) {
if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
ChatModel.shared.keyboardHeight = keyboardFrame.cgRectValue.height
ChatModel.shared.keyboardShown = true
}
}
@available(iOS 17.0, *)
@objc func keyboardWillHide(_ notification: Notification) {
ChatModel.shared.keyboardHeight = 0
ChatModel.shared.keyboardShown = false
}
@objc func pasteboardChanged() {
+1
View File
@@ -108,6 +108,7 @@ final class ChatModel: ObservableObject {
@Published var draftChatId: String?
// tracks keyboard height via subscription in AppDelegate
@Published var keyboardHeight: CGFloat = 0
@Published var keyboardShown = false
@Published var pasteboardHasStrings: Bool = UIPasteboard.general.hasStrings
@Published var networkInfo = UserNetworkInfo(networkType: .other, online: true)
+5 -41
View File
@@ -35,7 +35,6 @@ struct ChatView: View {
@State private var revealedChatItem: ChatItem?
@State private var searchMode = false
@State private var searchText: String = ""
@FocusState private var searchFocussed
// opening GroupMemberInfoView on member icon
@State private var selectedMember: GMember? = nil
// opening GroupLinkView on link button (incognito)
@@ -57,10 +56,6 @@ struct ChatView: View {
private var viewBody: some View {
let cInfo = chat.chatInfo
return VStack(spacing: 0) {
// if searchMode {
// searchToolbar()
// Divider()
// }
ZStack(alignment: .bottomTrailing) {
let wallpaperImage = theme.wallpaper.type.image
let wallpaperType = theme.wallpaper.type
@@ -82,8 +77,11 @@ struct ChatView: View {
)
.disabled(!cInfo.sendMsgEnabled)
}
.if(searchMode) {
$0.searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always))
.if(searchMode) { v in
v.searchable(text: $searchText, placement: .navigationBarDrawer(displayMode: .always))
}
.onChange(of: chatModel.keyboardShown) { shown in
if !shown { searchMode = false }
}
.navigationTitle(cInfo.chatViewName)
.background(theme.colors.background)
@@ -282,39 +280,6 @@ struct ChatView: View {
}
}
private func searchToolbar() -> some View {
HStack(spacing: 12) {
HStack(spacing: 4) {
Image(systemName: "magnifyingglass")
TextField("Search", text: $searchText)
.focused($searchFocussed)
.foregroundColor(theme.colors.onBackground)
.frame(maxWidth: .infinity)
Button {
searchText = ""
} label: {
Image(systemName: "xmark.circle.fill").opacity(searchText == "" ? 0 : 1)
}
}
.padding(EdgeInsets(top: 7, leading: 7, bottom: 7, trailing: 7))
.foregroundColor(theme.colors.secondary)
.background(Color(.tertiarySystemFill))
.cornerRadius(10.0)
Button ("Cancel") {
searchText = ""
searchMode = false
searchFocussed = false
DispatchQueue.main.asyncAfter(deadline: .now() + 0.35) {
loadChat(chat: chat)
}
}
}
.padding(.horizontal)
.padding(.vertical, 8)
}
private func voiceWithoutFrame(_ ci: ChatItem) -> Bool {
ci.content.msgContent?.isVoice == true && ci.content.text.count == 0 && ci.quotedItem == nil && ci.meta.itemForwarded == nil
}
@@ -512,7 +477,6 @@ struct ChatView: View {
private func searchButton() -> some View {
Button {
searchMode = true
searchFocussed = true
searchText = ""
} label: {
Label("Search", systemImage: "magnifyingglass")