#54 snippet group

This commit is contained in:
lollipopkit
2023-07-07 20:37:50 +08:00
parent d8155e7771
commit bb50fbc589
12 changed files with 223 additions and 82 deletions

View File

@@ -8,16 +8,20 @@ class Snippet {
late String name;
@HiveField(1)
late String script;
Snippet(this.name, this.script);
@HiveField(2)
late List<String>? tags;
Snippet(this.name, this.script, this.tags);
Snippet.fromJson(Map<String, dynamic> json) {
name = json['name'].toString();
script = json['script'].toString();
tags = json['tags']?.cast<String>();
}
Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['name'] = name;
data['script'] = script;
data['tags'] = tags;
return data;
}
}

View File

@@ -19,17 +19,20 @@ class SnippetAdapter extends TypeAdapter<Snippet> {
return Snippet(
fields[0] as String,
fields[1] as String,
(fields[2] as List?)?.cast<String>(),
);
}
@override
void write(BinaryWriter writer, Snippet obj) {
writer
..writeByte(2)
..writeByte(3)
..writeByte(0)
..write(obj.name)
..writeByte(1)
..write(obj.script);
..write(obj.script)
..writeByte(2)
..write(obj.tags);
}
@override

View File

@@ -5,25 +5,44 @@ import 'package:toolbox/data/model/server/snippet.dart';
import 'package:toolbox/data/store/snippet.dart';
import 'package:toolbox/locator.dart';
import '../../core/extension/order.dart';
class SnippetProvider extends BusyProvider {
List<Snippet> get snippets => _snippets;
late Order<Snippet> _snippets;
Order<Snippet> get snippets => _snippets;
final _tags = <String>[];
List<String> get tags => _tags;
final _store = locator<SnippetStore>();
late List<Snippet> _snippets;
void loadData() {
_snippets = _store.fetch();
}
void _updateTags() {
_tags.clear();
for (final s in _snippets) {
if (s.tags?.isEmpty ?? true) {
continue;
}
_tags.addAll(s.tags!);
}
_tags.toSet().toList();
}
void add(Snippet snippet) {
_snippets.add(snippet);
_store.put(snippet);
notifyListeners();
_updateTags();
}
void del(Snippet snippet) {
_snippets.remove(snippet);
_store.delete(snippet);
notifyListeners();
_updateTags();
}
void update(Snippet old, Snippet newOne) {
@@ -32,6 +51,21 @@ class SnippetProvider extends BusyProvider {
_snippets.remove(old);
_snippets.add(newOne);
notifyListeners();
_updateTags();
}
void renameTag(String old, String newOne) {
for (final s in _snippets) {
if (s.tags?.contains(old) ?? false) {
s.tags?.remove(old);
s.tags?.add(newOne);
}
}
for (final s in _snippets) {
_store.put(s);
}
notifyListeners();
_updateTags();
}
String get export => json.encode(snippets);

View File

@@ -46,6 +46,11 @@ class SettingStore extends PersistentStore {
StoreProperty<List<String>> get serverOrder =>
property('serverOrder', defaultValue: null);
StoreProperty<List<String>> get snippetOrder => property(
'snippetOrder',
defaultValue: null,
);
// Server details page cards order
StoreProperty<List<String>> get detailCardOrder =>
property('detailCardPrder', defaultValue: defaultDetailCardOrder);