Auto-close the tab where session is done

This commit is contained in:
PaperCube
2024-02-16 12:38:14 +00:00
parent c360dd7f84
commit b34b504bf3
3 changed files with 13 additions and 2 deletions

View File

@@ -33,11 +33,14 @@ class SSHPage extends StatefulWidget {
final ServerPrivateInfo spi;
final String? initCmd;
final bool pop;
final Function()? onSessionEnd;
const SSHPage({
super.key,
required this.spi,
this.initCmd,
this.pop = true,
this.onSessionEnd,
});
@override
@@ -381,6 +384,7 @@ class _SSHPageState extends State<SSHPage> with AutomaticKeepAliveClientMixin {
if (mounted && widget.pop) {
context.pop();
}
widget.onSessionEnd?.call();
}
void _listen(Stream<Uint8List>? stream) {

View File

@@ -71,6 +71,7 @@ class _SSHTabPageState extends State<SSHTabPage>
if (confirm != true) {
return;
}
// debugPrint("Removing a tab whose tabId = $e");
_tabIds.remove(e);
_refreshTabs();
},
@@ -104,6 +105,12 @@ class _SSHTabPageState extends State<SSHTabPage>
key: key,
spi: spi,
pop: false,
onSessionEnd: () {
// debugPrint("Session done received on page whose tabId = $name");
// debugPrint("key = $key");
_tabIds.remove(name);
_refreshTabs();
},
);
_refreshTabs();
_tabController.animateTo(_tabIds.length - 1);