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