new: webdav sync test

This commit is contained in:
lollipopkit
2023-12-04 14:21:20 +08:00
parent 2dc86a9da2
commit 38cdef9458
18 changed files with 109 additions and 50 deletions

View File

@@ -119,9 +119,8 @@ class BackupPage extends StatelessWidget {
TextButton(
onPressed: () async {
await backup.restore(force: true);
Pros.reload();
context.pop();
RebuildNodes.app.rebuild();
_reload();
},
child: Text(l10n.ok),
),
@@ -156,6 +155,7 @@ class BackupPage extends StatelessWidget {
icloudLoading.value = true;
await ICloud.sync();
icloudLoading.value = false;
_reload();
}
},
),
@@ -195,6 +195,7 @@ class BackupPage extends StatelessWidget {
await compute(Backup.fromJsonString, dlFile);
await dlBak.restore(force: true);
icloudLoading.value = false;
_reload();
},
child: Text(l10n.download),
),
@@ -251,7 +252,8 @@ class BackupPage extends StatelessWidget {
mainAxisSize: MainAxisSize.min,
children: [
Input(
label: 'url',
label: 'URL',
hint: 'https://example.com/webdav/',
controller: urlCtrl,
),
Input(
@@ -271,6 +273,21 @@ class BackupPage extends StatelessWidget {
},
child: Text(l10n.ok),
),
TextButton(
onPressed: () async {
final result = await Webdav.test(
urlCtrl.text,
userCtrl.text,
pwdCtrl.text,
);
if (result == null) {
context.showSnackBar(l10n.success);
} else {
context.showSnackBar(result);
}
},
child: Text(l10n.test),
),
],
);
if (result == true) {
@@ -294,6 +311,7 @@ class BackupPage extends StatelessWidget {
webdavLoading.value = true;
await Webdav.sync();
webdavLoading.value = false;
_reload();
}
},
),
@@ -334,6 +352,7 @@ class BackupPage extends StatelessWidget {
await compute(Backup.fromJsonString, dlFile);
await dlBak.restore(force: true);
webdavLoading.value = false;
_reload();
},
child: Text(l10n.download),
),
@@ -363,4 +382,9 @@ class BackupPage extends StatelessWidget {
),
);
}
void _reload() {
Pros.reload();
RebuildNodes.app.rebuild();
}
}

View File

@@ -2,6 +2,7 @@ import 'dart:async';
import 'dart:io';
import 'package:code_text_field/code_text_field.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_highlight/theme_map.dart';
import 'package:flutter_highlight/themes/a11y-light.dart';
@@ -64,15 +65,25 @@ class _EditorPageState extends State<EditorPage> {
language: Highlights.all[_langCode],
);
/// TODO: This is a temporary solution to avoid the loading stuck
Future.delayed(const Duration(milliseconds: 377)).then((value) async {
if (widget.path != null) {
final code = await File(widget.path!).readAsString();
_controller.text = code;
} else if (widget.text != null) {
_controller.text = widget.text!;
}
});
if (_langCode == null) {
_setupCtrl();
} else {
Future.delayed(const Duration(milliseconds: 377)).then(
(value) async => await _setupCtrl(),
);
}
}
Future<void> _setupCtrl() async {
if (widget.path != null) {
final code = await compute(
(path) async => await File(path).readAsString(),
widget.path!,
);
_controller.text = code;
} else if (widget.text != null) {
_controller.text = widget.text!;
}
}
@override