#54 new: grouped snippet & tab snippet

This commit is contained in:
lollipopkit
2023-05-30 18:05:46 +08:00
parent 96438313a1
commit a1e80fd806
13 changed files with 192 additions and 57 deletions

View File

@@ -1 +1 @@
enum AppTab { servers, encode, ping }
enum AppTab { servers, snippet, ping }

View File

@@ -8,16 +8,20 @@ class Snippet {
late String name;
@HiveField(1)
late String script;
Snippet(this.name, this.script);
@HiveField(2)
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,
tags: (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

@@ -15,31 +15,22 @@ class SnippetProvider extends BusyProvider {
}
void add(Snippet snippet) {
if (have(snippet)) return;
_snippets.add(snippet);
_store.put(snippet);
notifyListeners();
}
void del(Snippet snippet) {
if (!have(snippet)) return;
_snippets.removeAt(index(snippet));
_snippets.remove(snippet);
_store.delete(snippet);
notifyListeners();
}
int index(Snippet snippet) {
return _snippets.indexWhere((e) => e.name == snippet.name);
}
bool have(Snippet snippet) {
return index(snippet) != -1;
}
void update(Snippet old, Snippet newOne) {
if (!have(old)) return;
_snippets[index(old)] = newOne;
_store.delete(old);
_store.put(newOne);
_snippets.remove(old);
_snippets.add(newOne);
notifyListeners();
}