diff --git a/lib/data/res/github_id.dart b/lib/data/res/github_id.dart index f3aae607..675654a9 100644 --- a/lib/data/res/github_id.dart +++ b/lib/data/res/github_id.dart @@ -131,6 +131,12 @@ abstract final class GithubIds { 'Lancerys', 'yaziku', 'yeluosln', + 'FadeFx', + 'Snihc1205', + 'Bjups', + '4061N', + 'itmagpro', + 'atikattar1104' }; } diff --git a/lib/view/page/storage/sftp.dart b/lib/view/page/storage/sftp.dart index 7c405cf0..b3f40bb9 100644 --- a/lib/view/page/storage/sftp.dart +++ b/lib/view/page/storage/sftp.dart @@ -79,8 +79,23 @@ class _SftpPageState extends ConsumerState with AfterLayoutMixin { } @override - FutureOr afterFirstLayout(BuildContext context) { - var initPath = '/'; + FutureOr afterFirstLayout(BuildContext context) async { + String initPath; + + try { + final homeResult = await _client.run('eval echo ~${widget.args.spi.user}'); + final homePath = homeResult.string.trim(); + if (homePath.isNotEmpty && homePath.startsWith('/')) { + initPath = homePath; + } else { + final user = widget.args.spi.user; + initPath = user != 'root' ? '/home/$user' : '/root'; + } + } catch (_) { + final user = widget.args.spi.user; + initPath = user != 'root' ? '/home/$user' : '/root'; + } + if (Stores.setting.sftpOpenLastPath.fetch()) { final history = Stores.history.sftpLastPath.fetch(widget.args.spi.id); if (history != null) { @@ -89,7 +104,7 @@ class _SftpPageState extends ConsumerState with AfterLayoutMixin { } _status.path.path = widget.args.initPath ?? initPath; - _listDir(); + unawaited(_listDir()); } }