ok im fucking pissed off

the keyboard input issue is back
This commit is contained in:
neon443
2025-07-04 16:28:08 +01:00
parent 186c04ce7f
commit a85022e351
3 changed files with 30 additions and 30 deletions

View File

@@ -19,24 +19,33 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina
self.handler = handler self.handler = handler
self.hostsManager = hostsManager self.hostsManager = hostsManager
print(getTerminal().backgroundColor.colorCodable)
print(getTerminal().foregroundColor.colorCodable)
applySelectedTheme() applySelectedTheme()
Task { DispatchQueue.main.async {
await restoreScrollback() Task {
await startFeedLoop() guard let handler = self.handler else { return }
while handler.connected {
if let read = handler.readFromChannel() {
await MainActor.run {
self.feed(text: read)
}
} else {
try? await Task.sleep(nanoseconds: 10_000_000) //10ms
}
}
handler.disconnect()
}
} }
} }
func restoreScrollback() async { func restoreScrollback() {
guard let scrollback = handler?.scrollback else { return } guard let scrollback = handler?.scrollback else { return }
guard !scrollback.isEmpty else { return } guard !scrollback.isEmpty else { return }
await MainActor.run { DispatchQueue.main.asyncAfter(deadline: .now()+0.01) {
self.getTerminal().resetToInitialState() self.getTerminal().resetToInitialState()
for line in scrollback { for line in scrollback {
print("scrollbak \(line)")
self.feed(text: line) self.feed(text: line)
} }
self.setNeedsLayout() self.setNeedsLayout()
@@ -44,20 +53,6 @@ final class SSHTerminalDelegate: TerminalView, Sendable, @preconcurrency Termina
} }
} }
func startFeedLoop() async {
guard let handler else { return }
while handler.connected {
if let read = handler.readFromChannel() {
await MainActor.run {
self.feed(text: read)
}
} else {
try? await Task.sleep(nanoseconds: 10_000_000) //10ms
}
}
handler.disconnect()
}
func applySelectedTheme() { func applySelectedTheme() {
guard let hostsManager else { return } guard let hostsManager else { return }
applyTheme(hostsManager.selectedTheme) applyTheme(hostsManager.selectedTheme)

View File

@@ -21,6 +21,11 @@ struct ShellView: View {
hostsManager.selectedTheme.background.suiColor hostsManager.selectedTheme.background.suiColor
.ignoresSafeArea(.all) .ignoresSafeArea(.all)
TerminalController(handler: handler, hostsManager: hostsManager) TerminalController(handler: handler, hostsManager: hostsManager)
.onAppear {
if let sessionID = handler.sessionID {
container.sessions[sessionID]?.terminalView.restoreScrollback()
}
}
Group { Group {
Color.gray.opacity(0.2) Color.gray.opacity(0.2)

View File

@@ -31,14 +31,14 @@ struct TerminalController: UIViewRepresentable {
tv.translatesAutoresizingMaskIntoConstraints = false tv.translatesAutoresizingMaskIntoConstraints = false
tv.autoresizingMask = [.flexibleWidth, .flexibleHeight] tv.autoresizingMask = [.flexibleWidth, .flexibleHeight]
if let sessionID = handler.sessionID { // if let sessionID = handler.sessionID {
Task { @MainActor in // Task { @MainActor in
container.sessions[sessionID] = TerminalContainer( // container.sessions[sessionID] = TerminalContainer(
handler: handler, // handler: handler,
terminalView: tv // terminalView: tv
) // )
} // }
} // }
return tv return tv
} }