new: webdav sync test
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user