swift 6 underway

This commit is contained in:
neon443
2025-06-23 20:30:26 +01:00
parent 88b39363b2
commit 1bb761d80e
3 changed files with 16 additions and 15 deletions

View File

@@ -616,6 +616,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.neon443.ShhShell; PRODUCT_BUNDLE_IDENTIFIER = com.neon443.ShhShell;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_STRICT_CONCURRENCY = complete;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
}; };
@@ -648,6 +649,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.neon443.ShhShell; PRODUCT_BUNDLE_IDENTIFIER = com.neon443.ShhShell;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_STRICT_CONCURRENCY = complete;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
}; };

View File

@@ -10,7 +10,7 @@ import LibSSH
import OSLog import OSLog
import SwiftUI import SwiftUI
class SSHHandler: ObservableObject { class SSHHandler: @unchecked Sendable, ObservableObject {
private var session: ssh_session? private var session: ssh_session?
var channel: ssh_channel? var channel: ssh_channel?
@@ -240,12 +240,10 @@ class SSHHandler: ObservableObject {
//if u got this far, youre authed! //if u got this far, youre authed!
withAnimation { authorized = true } withAnimation { authorized = true }
DispatchQueue.main.asyncAfter(deadline: .now()+10) {
ssh_key_free(pubkey) ssh_key_free(pubkey)
ssh_key_free(privkey) ssh_key_free(privkey)
try? fileManager.removeItem(at: tempPubkey) try? FileManager.default.removeItem(at: tempPubkey)
try? fileManager.removeItem(at: tempKey) try? FileManager.default.removeItem(at: tempKey)
}
return return
} }
@@ -334,7 +332,6 @@ class SSHHandler: ObservableObject {
} }
func readFromChannel() -> String? { func readFromChannel() -> String? {
print(connected)
if !connected { if !connected {
return nil return nil
} }
@@ -366,6 +363,7 @@ class SSHHandler: ObservableObject {
func writeToChannel(_ string: String?) { func writeToChannel(_ string: String?) {
guard let string = string else { return } guard let string = string else { return }
guard channel != nil else { return }
guard ssh_channel_is_open(channel) != 0 || ssh_channel_is_eof(channel) == 0 else { guard ssh_channel_is_open(channel) != 0 || ssh_channel_is_eof(channel) == 0 else {
disconnect() disconnect()
return return

View File

@@ -9,7 +9,8 @@ import Foundation
import UIKit import UIKit
import SwiftTerm import SwiftTerm
class SSHTerminalView: TerminalView, TerminalViewDelegate { @MainActor
class SSHTerminalView: TerminalView, Sendable, @preconcurrency TerminalViewDelegate {
var handler: SSHHandler? var handler: SSHHandler?
var sshQueue: DispatchQueue var sshQueue: DispatchQueue
@@ -29,7 +30,7 @@ class SSHTerminalView: TerminalView, TerminalViewDelegate {
while handler.connected { while handler.connected {
if let read = handler.readFromChannel() { if let read = handler.readFromChannel() {
DispatchQueue.main.async { self.feed(text: read) } self.feed(text: read)
} else { } else {
usleep(100_000) usleep(100_000)
} }
@@ -42,11 +43,11 @@ class SSHTerminalView: TerminalView, TerminalViewDelegate {
fatalError("unimplemented") fatalError("unimplemented")
} }
public func scrolled(source: TerminalView, position: Double) { nonisolated public func scrolled(source: TerminalView, position: Double) {
print("scrolled to \(position)") print("scrolled to \(position)")
} }
public func setTerminalTitle(source: TerminalView, title: String) { nonisolated public func setTerminalTitle(source: TerminalView, title: String) {
print("set title to \(title)") print("set title to \(title)")
} }
@@ -59,11 +60,11 @@ class SSHTerminalView: TerminalView, TerminalViewDelegate {
handler?.writeToChannel(String(data: data, encoding: .utf8)) handler?.writeToChannel(String(data: data, encoding: .utf8))
} }
public func clipboardCopy(source: TerminalView, content: Data) { nonisolated public func clipboardCopy(source: TerminalView, content: Data) {
print(content) print(content)
} }
public func hostCurrentDirectoryUpdate(source: TerminalView, directory: String?) { nonisolated public func hostCurrentDirectoryUpdate(source: TerminalView, directory: String?) {
print("new dir: \(directory ?? "")") print("new dir: \(directory ?? "")")
} }
@@ -73,7 +74,7 @@ class SSHTerminalView: TerminalView, TerminalViewDelegate {
UIApplication.shared.open(url, options: [:]) UIApplication.shared.open(url, options: [:])
} }
public func rangeChanged(source: TerminalView, startY: Int, endY: Int) { nonisolated public func rangeChanged(source: TerminalView, startY: Int, endY: Int) {
print(startY, endY) print(startY, endY)
} }
} }