fix: scheme storage on web.

dev
DebuggerX 3 years ago
parent d74a0ad167
commit 36f0d76552

@ -2,7 +2,6 @@ import 'dart:convert';
import 'dart:html'; import 'dart:html';
import 'package:dde_gesture_manager/builder/provider_annotation.dart'; import 'package:dde_gesture_manager/builder/provider_annotation.dart';
import 'package:dde_gesture_manager/extensions.dart';
import 'package:dde_gesture_manager/models/local_schemes_provider.dart'; import 'package:dde_gesture_manager/models/local_schemes_provider.dart';
import 'package:dde_gesture_manager/models/scheme.dart'; import 'package:dde_gesture_manager/models/scheme.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
@ -19,28 +18,20 @@ class LocalSchemes implements LocalSchemesInterface<LocalSchemeEntryWeb> {
@override @override
Future<List<LocalSchemeEntryWeb>> get schemeEntries async { Future<List<LocalSchemeEntryWeb>> get schemeEntries async {
return window.localStorage.keys List<LocalSchemeEntryWeb> _localeSchemes = [];
.map<LocalSchemeEntryWeb?>((key) { for (var key in window.localStorage.keys) {
if (key.startsWith('schemes.')) { if (key.startsWith('schemes.')) {
LocalSchemeEntryWeb? entry; var content = window.localStorage[key] ?? '';
try { var schemeJson = json.decode(content);
var content = window.localStorage[key] ?? ''; _localeSchemes.add(LocalSchemeEntryWeb(
var schemeJson = json.decode(content); path: key,
entry = LocalSchemeEntryWeb( scheme: Scheme.parse(schemeJson),
path: key, lastModifyTime: DateTime.parse(schemeJson['modified_at']),
scheme: Scheme.parse(schemeJson), ));
lastModifyTime: DateTime.parse(schemeJson['modified_at']), }
); }
} catch (e) { print(_localeSchemes.join('\n'));
e.sout(); return Future.value(_localeSchemes);
}
return entry;
}
return null;
})
.where((e) => e != null)
.cast<LocalSchemeEntryWeb>()
.toList();
} }
@ProviderModelProp() @ProviderModelProp()
@ -85,8 +76,8 @@ class LocalSchemeEntryWeb implements LocalSchemeEntry {
@override @override
save(LocalSchemesProvider provider) { save(LocalSchemesProvider provider) {
var schemeMap = scheme.toJson(); var schemeMap = scheme.toJson();
schemeMap['modified_at'] = DateTime.now(); schemeMap['modified_at'] = DateTime.now().toIso8601String();
window.localStorage[path] = JsonEncoder.withIndent(' ' * 4).convert(); window.localStorage[path] = JsonEncoder.withIndent(' ' * 4).convert(schemeMap);
provider.schemes!.firstWhere((ele) => ele.scheme.id == scheme.id).lastModifyTime = DateTime.now(); provider.schemes!.firstWhere((ele) => ele.scheme.id == scheme.id).lastModifyTime = DateTime.now();
provider.setProps(schemes: [...provider.schemes!]..sort()); provider.setProps(schemes: [...provider.schemes!]..sort());
} }

Loading…
Cancel
Save