fix: scheme storage on web.
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user