From f7278fc8905f801f1db45b6b7252edc1e628a924 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Wed, 30 Aug 2023 13:52:25 +0800 Subject: [PATCH] #144 opt.: only show decompress option when valid --- lib/data/model/server/proc.dart | 7 +++---- lib/view/page/storage/sftp.dart | 22 ++++++++++++++++------ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/lib/data/model/server/proc.dart b/lib/data/model/server/proc.dart index 6f7006f6..1c401d00 100644 --- a/lib/data/model/server/proc.dart +++ b/lib/data/model/server/proc.dart @@ -136,16 +136,15 @@ class PsResult { ); final procs = []; - var err = ''; + final errs = []; for (var i = 1; i < lines.length; i++) { final line = lines[i]; if (line.isEmpty) continue; try { procs.add(Proc.parse(line, map)); } catch (e, trace) { - err += '$line: $e\n'; + errs.add('$line: $e'); _logger.warning(trace); - rethrow; } } @@ -166,7 +165,7 @@ class PsResult { procs.sort((a, b) => a.binary.compareTo(b.binary)); break; } - return PsResult(procs: procs, error: err.isEmpty ? null : err); + return PsResult(procs: procs, error: errs.isEmpty ? null : errs.join('\n')); } } diff --git a/lib/view/page/storage/sftp.dart b/lib/view/page/storage/sftp.dart index 37fcde46..98e03249 100644 --- a/lib/view/page/storage/sftp.dart +++ b/lib/view/page/storage/sftp.dart @@ -344,7 +344,8 @@ class _SftpPageState extends State with AfterLayoutMixin { title: Text(_s.download), onTap: () => _download(context, file), ), - ListTile( + // Only show decompress option when the file is a compressed file + if (_canDecompress(file.filename)) ListTile( leading: const Icon(Icons.folder_zip), title: Text(_s.decompress), onTap: () => _decompress(context, file), @@ -717,6 +718,15 @@ String? _getDecompressCmd(String filename) { return null; } +bool _canDecompress(String filename) { + for (final ext in _extCmdMap.keys) { + if (filename.endsWith('.$ext')) { + return true; + } + } + return false; +} + /// Translate from /// https://github.com/ohmyzsh/ohmyzsh/blob/03a0d5bbaedc732436b5c67b166cde954817cc2f/plugins/extract/extract.plugin.zsh const _extCmdMap = { @@ -752,11 +762,11 @@ const _extCmdMap = { 'rar': 'unrar x -ad FILE', 'rpm': 'rpm2cpio FILE | cpio --quiet -id', '7z': '7za x FILE', - 'deb': 'mkdir -p "control" "data"' - 'ar vx FILE > /dev/null' - 'cd control; extract ../control.tar.*' - 'cd ../data; extract ../data.tar.*' - 'cd ..; rm *.tar.* debian-binary', + // 'deb': 'mkdir -p "control" "data"' + // 'ar vx FILE > /dev/null' + // 'cd control; extract ../control.tar.*' + // 'cd ../data; extract ../data.tar.*' + // 'cd ..; rm *.tar.* debian-binary', 'zst': 'unzstd FILE', 'cab': 'cabextract FILE', 'exe': 'cabextract FILE',