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.hostsManager = hostsManager
print(getTerminal().backgroundColor.colorCodable)
print(getTerminal().foregroundColor.colorCodable)
applySelectedTheme()
Task {
await restoreScrollback()
await startFeedLoop()
DispatchQueue.main.async {
Task {
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 !scrollback.isEmpty else { return }
await MainActor.run {
DispatchQueue.main.asyncAfter(deadline: .now()+0.01) {
self.getTerminal().resetToInitialState()
for line in scrollback {
print("scrollbak \(line)")
self.feed(text: line)
}
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() {
guard let hostsManager else { return }
applyTheme(hostsManager.selectedTheme)

View File

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

View File

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