parent
094d74b746
commit
b160adc654
@ -0,0 +1,21 @@
|
|||||||
|
export 'local_schemes_web.dart' if (dart.library.io) 'local_schemes_linux.dart';
|
||||||
|
|
||||||
|
import 'package:dde_gesture_manager/models/scheme.dart';
|
||||||
|
|
||||||
|
abstract class LocalSchemeEntry {
|
||||||
|
Scheme scheme;
|
||||||
|
DateTime lastModifyTime;
|
||||||
|
String path;
|
||||||
|
|
||||||
|
LocalSchemeEntry({
|
||||||
|
required this.path,
|
||||||
|
required this.scheme,
|
||||||
|
required this.lastModifyTime,
|
||||||
|
});
|
||||||
|
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class LocalSchemesInterface<T extends LocalSchemeEntry> {
|
||||||
|
Future<List<T>> get schemeEntries;
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
export 'local_schemes_web.provider.dart' if (dart.library.io) 'local_schemes_linux.provider.dart';
|
@ -0,0 +1,67 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:dde_gesture_manager/builder/provider_annotation.dart';
|
||||||
|
import 'package:dde_gesture_manager/models/scheme.dart';
|
||||||
|
import 'package:dde_gesture_manager/extensions.dart';
|
||||||
|
import 'dart:html';
|
||||||
|
|
||||||
|
import 'local_schemes.dart';
|
||||||
|
export 'local_schemes.dart';
|
||||||
|
|
||||||
|
@ProviderModel()
|
||||||
|
class LocalSchemes implements LocalSchemesInterface<LocalSchemeEntryWeb> {
|
||||||
|
LocalSchemes() {
|
||||||
|
schemeEntries.then((value) => schemes = value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<List<LocalSchemeEntryWeb>> get schemeEntries async {
|
||||||
|
return window.localStorage.keys
|
||||||
|
.map<LocalSchemeEntryWeb?>((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;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.where((e) => e != null)
|
||||||
|
.cast<LocalSchemeEntryWeb>()
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ProviderModelProp()
|
||||||
|
List<LocalSchemeEntry>? schemes;
|
||||||
|
}
|
||||||
|
|
||||||
|
class LocalSchemeEntryWeb implements LocalSchemeEntry {
|
||||||
|
@override
|
||||||
|
String path;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Scheme scheme;
|
||||||
|
|
||||||
|
@override
|
||||||
|
DateTime lastModifyTime;
|
||||||
|
|
||||||
|
LocalSchemeEntryWeb({
|
||||||
|
required this.path,
|
||||||
|
required this.scheme,
|
||||||
|
required this.lastModifyTime,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
save() {
|
||||||
|
// TODO: implement save
|
||||||
|
throw UnimplementedError();
|
||||||
|
}
|
||||||
|
}
|
@ -1,21 +0,0 @@
|
|||||||
export 'local_solutions_web.dart' if (dart.library.io) 'local_solutions_linux.dart';
|
|
||||||
|
|
||||||
import 'package:dde_gesture_manager/models/solution.dart';
|
|
||||||
|
|
||||||
abstract class LocalSolutionEntry {
|
|
||||||
Solution solution;
|
|
||||||
DateTime lastModifyTime;
|
|
||||||
String path;
|
|
||||||
|
|
||||||
LocalSolutionEntry({
|
|
||||||
required this.path,
|
|
||||||
required this.solution,
|
|
||||||
required this.lastModifyTime,
|
|
||||||
});
|
|
||||||
|
|
||||||
save();
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class LocalSolutionsInterface<T extends LocalSolutionEntry> {
|
|
||||||
Future<List<T>> get solutionEntries;
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
export 'local_solutions_web.provider.dart' if (dart.library.io) 'local_solutions_linux.provider.dart';
|
|
@ -1,67 +0,0 @@
|
|||||||
import 'dart:convert';
|
|
||||||
|
|
||||||
import 'package:dde_gesture_manager/builder/provider_annotation.dart';
|
|
||||||
import 'package:dde_gesture_manager/models/solution.dart';
|
|
||||||
import 'package:dde_gesture_manager/extensions.dart';
|
|
||||||
import 'dart:html';
|
|
||||||
|
|
||||||
import 'local_solutions.dart';
|
|
||||||
export 'local_solutions.dart';
|
|
||||||
|
|
||||||
@ProviderModel()
|
|
||||||
class LocalSolutions implements LocalSolutionsInterface<LocalSolutionEntryWeb> {
|
|
||||||
LocalSolutions() {
|
|
||||||
solutionEntries.then((value) => solutions = value);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future<List<LocalSolutionEntryWeb>> get solutionEntries async {
|
|
||||||
return window.localStorage.keys
|
|
||||||
.map<LocalSolutionEntryWeb?>((key) {
|
|
||||||
if (key.startsWith('solutions.')) {
|
|
||||||
LocalSolutionEntryWeb? entry;
|
|
||||||
try {
|
|
||||||
var content = window.localStorage[key] ?? '';
|
|
||||||
var solutionJson = json.decode(content);
|
|
||||||
entry = LocalSolutionEntryWeb(
|
|
||||||
path: key,
|
|
||||||
solution: Solution.parse(solutionJson),
|
|
||||||
lastModifyTime: DateTime.parse(solutionJson['modified_at']),
|
|
||||||
);
|
|
||||||
} catch (e) {
|
|
||||||
e.sout();
|
|
||||||
}
|
|
||||||
return entry;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.where((e) => e != null)
|
|
||||||
.cast<LocalSolutionEntryWeb>()
|
|
||||||
.toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ProviderModelProp()
|
|
||||||
List<LocalSolutionEntry>? solutions;
|
|
||||||
}
|
|
||||||
|
|
||||||
class LocalSolutionEntryWeb implements LocalSolutionEntry {
|
|
||||||
@override
|
|
||||||
String path;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Solution solution;
|
|
||||||
|
|
||||||
@override
|
|
||||||
DateTime lastModifyTime;
|
|
||||||
|
|
||||||
LocalSolutionEntryWeb({
|
|
||||||
required this.path,
|
|
||||||
required this.solution,
|
|
||||||
required this.lastModifyTime,
|
|
||||||
});
|
|
||||||
|
|
||||||
@override
|
|
||||||
save() {
|
|
||||||
// TODO: implement save
|
|
||||||
throw UnimplementedError();
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in new issue