Lollipopkit/issue382 (#383)

This commit is contained in:
lollipopkit🏳️‍⚧️
2024-06-10 21:34:56 +08:00
committed by GitHub
parent edceb5900e
commit 22c43c7124
20 changed files with 208 additions and 41 deletions

View File

@@ -562,7 +562,10 @@ class _ContainerPageState extends State<ContainerPage> {
case ContainerMenu.terminal:
AppRoutes.ssh(
spi: widget.spi,
initCmd: 'docker exec -it ${dItem.id} sh',
initCmd: '${switch (_container.type) {
ContainerType.podman => 'podman',
ContainerType.docker => 'docker',
}} exec -it ${dItem.id} sh',
).go(context);
break;
// case DockerMenuType.stats:

View File

@@ -98,7 +98,8 @@ class _ServerPageState extends State<ServerPage>
),
floatingActionButton: AutoHide(
key: _autoHideKey,
direction: AxisDirection.right,
direction: AxisDirection.down,
offset: 75,
controller: _scrollController,
child: FloatingActionButton(
heroTag: 'addServer',

View File

@@ -200,9 +200,13 @@ class _SnippetEditPageState extends State<SnippetEditPage>
padding: const EdgeInsets.all(13),
child: SimpleMarkdown(
data: '''
📌 ${l10n.supportFmtArgs}
📌 ${l10n.supportFmtArgs}\n
${Snippet.fmtArgs.keys.map((e) => '`$e`').join(', ')}\n
${Snippet.fmtArgs.keys.map((e) => '`$e`').join(', ')}
${Snippet.fmtTermKeys.keys.map((e) => '`$e+?}`').join(', ')}\n
${l10n.forExample}:
- `\${ctrl+c}` (Control + C)
- `\${ctrl+b}d` (Tmux Detach)
''',
styleSheet: MarkdownStyleSheet(
codeblockDecoration: const BoxDecoration(

View File

@@ -29,6 +29,7 @@ const _echoPWD = 'echo \$PWD';
class SSHPage extends StatefulWidget {
final ServerPrivateInfo spi;
final String? initCmd;
final Snippet? initSnippet;
final bool notFromTab;
final Function()? onSessionEnd;
final GlobalKey<TerminalViewState>? terminalKey;
@@ -37,6 +38,7 @@ class SSHPage extends StatefulWidget {
super.key,
required this.spi,
this.initCmd,
this.initSnippet,
this.notFromTab = true,
this.onSessionEnd,
this.terminalKey,
@@ -309,8 +311,7 @@ class SSHPageState extends State<SSHPage>
final snippet = snippets.firstOrNull;
if (snippet == null) return;
_terminal.textInput(snippet.script);
_terminal.keyInput(TerminalKey.enter);
snippet.runInTerm(_terminal, widget.spi);
break;
case VirtualKeyFunc.file:
// get $PWD from SSH session
@@ -415,16 +416,19 @@ class SSHPageState extends State<SSHPage>
_initService();
for (final snippet in Pros.snippet.snippets) {
if (snippet.autoRunOn?.contains(widget.spi.id) == true) {
snippet.runInTerm(_terminal, widget.spi);
}
}
if (widget.initCmd != null) {
_terminal.textInput(widget.initCmd!);
_terminal.keyInput(TerminalKey.enter);
} else {
for (final snippet in Pros.snippet.snippets) {
if (snippet.autoRunOn?.contains(widget.spi.id) == true) {
_terminal.textInput(snippet.script);
_terminal.keyInput(TerminalKey.enter);
}
}
}
if (widget.initSnippet != null) {
widget.initSnippet!.runInTerm(_terminal, widget.spi);
}
SSHPage.focusNode.requestFocus();

View File

@@ -96,6 +96,7 @@ class _SSHTabPageState extends State<SSHTabPage>
Widget _buildAddPage() {
return Center(
key: const Key('sshTabAddServer'),
child: Consumer<ServerProvider>(builder: (_, pro, __) {
if (pro.serverOrder.isEmpty) {
return Center(
@@ -105,21 +106,27 @@ class _SSHTabPageState extends State<SSHTabPage>
),
);
}
return ListView.builder(
return GridView.builder(
padding: const EdgeInsets.all(7),
itemBuilder: (_, idx) {
final spi = Pros.server.pick(id: pro.serverOrder[idx])?.spi;
if (spi == null) return UIs.placeholder;
return CardX(
child: ListTile(
contentPadding: const EdgeInsets.only(left: 17, right: 7),
title: Text(spi.name),
subtitle: Text(spi.id, style: UIs.textGrey),
trailing: const Icon(Icons.chevron_right),
onTap: () => _onTapInitCard(spi),
),
).center(),
);
},
itemCount: pro.servers.length,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
childAspectRatio: 3,
crossAxisSpacing: 3,
mainAxisSpacing: 3,
),
);
}),
);