opt.: bulk import servers (#512)

This commit is contained in:
lollipopkit🏳️‍⚧️
2024-08-03 14:52:39 +08:00
committed by GitHub
parent b8e5418ff2
commit 610f46da0d
16 changed files with 39 additions and 30 deletions

View File

@@ -4,7 +4,6 @@ import 'dart:io';
import 'package:computer/computer.dart';
import 'package:fl_lib/fl_lib.dart';
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:server_box/core/extension/context/locale.dart';
import 'package:server_box/core/utils/sync/icloud.dart';
import 'package:server_box/core/utils/sync/webdav.dart';
@@ -12,7 +11,6 @@ import 'package:server_box/data/model/app/backup.dart';
import 'package:server_box/data/model/server/server_private_info.dart';
import 'package:server_box/data/res/misc.dart';
import 'package:server_box/data/res/store.dart';
import 'package:server_box/data/res/url.dart';
class BackupPage extends StatelessWidget {
BackupPage({super.key});
@@ -204,12 +202,6 @@ class BackupPage extends StatelessWidget {
return CardX(
child: ListTile(
title: Text(l10n.bulkImportServers),
subtitle: SimpleMarkdown(
data: l10n.bulkImportServersTip(Urls.appWiki),
styleSheet: MarkdownStyleSheet(
p: UIs.textGrey,
),
),
leading: const Icon(Icons.import_export),
onTap: () => _onBulkImportServers(context),
trailing: const Icon(Icons.keyboard_arrow_right),
@@ -400,8 +392,12 @@ class BackupPage extends StatelessWidget {
}
void _onBulkImportServers(BuildContext context) async {
final text = await Pfs.pickFileString();
if (text == null) return;
final data = await context.showImportDialog(
title: l10n.server,
modelDef: ServerPrivateInfo.example.toJson(),
);
if (data == null) return;
final text = String.fromCharCodes(data);
try {
final (spis, err) = await context.showLoadingDialog(

View File

@@ -1,5 +1,6 @@
import 'dart:convert';
import 'package:computer/computer.dart';
import 'package:fl_lib/fl_lib.dart';
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
@@ -105,7 +106,7 @@ class _SnippetEditPageState extends State<SnippetEditPage>
Widget _buildBody() {
return ListView(
padding: const EdgeInsets.symmetric(horizontal:13),
padding: const EdgeInsets.symmetric(horizontal: 13),
children: [
_buildImport(),
Input(
@@ -198,8 +199,12 @@ class _SnippetEditPageState extends State<SnippetEditPage>
);
if (data == null) return;
final str = String.fromCharCodes(data);
final list = json.decode(str) as List;
if (list.isEmpty) return;
final (list, _) = await context.showLoadingDialog(
fn: () => Computer.shared.start((s) {
return json.decode(s) as List;
}, str),
);
if (list == null || list.isEmpty) return;
final snippets = <Snippet>[];
final errs = <String>[];
for (final item in list) {

View File

@@ -52,7 +52,7 @@ class _SnippetListPageState extends State<SnippetListPage> {
.toList();
return ReorderableListView.builder(
padding: const EdgeInsets.symmetric(horizontal: 13),
padding: const EdgeInsets.symmetric(horizontal: 11),
itemCount: filtered.length,
onReorder: (oldIdx, newIdx) => setState(() {
provider.snippets.moveByItem(