From 36f0d765520a97b616eb373f261ba0668eef125b Mon Sep 17 00:00:00 2001 From: debuggerx Date: Fri, 21 Jan 2022 13:02:12 +0800 Subject: [PATCH] fix: scheme storage on web. --- app/lib/models/local_schemes_web.dart | 41 ++++++++++++++--------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/app/lib/models/local_schemes_web.dart b/app/lib/models/local_schemes_web.dart index 3ff3af5..ebd7e02 100644 --- a/app/lib/models/local_schemes_web.dart +++ b/app/lib/models/local_schemes_web.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'dart:html'; 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/scheme.dart'; import 'package:uuid/uuid.dart'; @@ -19,28 +18,20 @@ class LocalSchemes implements LocalSchemesInterface { @override Future> get schemeEntries async { - return window.localStorage.keys - .map((key) { - if (key.startsWith('schemes.')) { - LocalSchemeEntryWeb? entry; - try { - var content = window.localStorage[key] ?? ''; - var schemeJson = json.decode(content); - entry = LocalSchemeEntryWeb( - path: key, - scheme: Scheme.parse(schemeJson), - lastModifyTime: DateTime.parse(schemeJson['modified_at']), - ); - } catch (e) { - e.sout(); - } - return entry; - } - return null; - }) - .where((e) => e != null) - .cast() - .toList(); + List _localeSchemes = []; + for (var key in window.localStorage.keys) { + if (key.startsWith('schemes.')) { + var content = window.localStorage[key] ?? ''; + var schemeJson = json.decode(content); + _localeSchemes.add(LocalSchemeEntryWeb( + path: key, + scheme: Scheme.parse(schemeJson), + lastModifyTime: DateTime.parse(schemeJson['modified_at']), + )); + } + } + print(_localeSchemes.join('\n')); + return Future.value(_localeSchemes); } @ProviderModelProp() @@ -85,8 +76,8 @@ class LocalSchemeEntryWeb implements LocalSchemeEntry { @override save(LocalSchemesProvider provider) { var schemeMap = scheme.toJson(); - schemeMap['modified_at'] = DateTime.now(); - window.localStorage[path] = JsonEncoder.withIndent(' ' * 4).convert(); + schemeMap['modified_at'] = DateTime.now().toIso8601String(); + window.localStorage[path] = JsonEncoder.withIndent(' ' * 4).convert(schemeMap); provider.schemes!.firstWhere((ele) => ele.scheme.id == scheme.id).lastModifyTime = DateTime.now(); provider.setProps(schemes: [...provider.schemes!]..sort()); }