mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 15:24:35 +01:00
#54 snippet group
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user