mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-30 11:33:34 +08:00
TagEditor: Show the tags from all the notes
This could get a bit slow, but since we aren't doing it very often, it should be fine.
This commit is contained in:
@ -3,6 +3,7 @@ import 'package:collection/collection.dart';
|
|||||||
|
|
||||||
import 'package:gitjournal/core/note.dart';
|
import 'package:gitjournal/core/note.dart';
|
||||||
import 'package:gitjournal/core/md_yaml_doc.dart';
|
import 'package:gitjournal/core/md_yaml_doc.dart';
|
||||||
|
import 'package:gitjournal/core/notes_folder.dart';
|
||||||
import 'package:gitjournal/core/notes_folder_fs.dart';
|
import 'package:gitjournal/core/notes_folder_fs.dart';
|
||||||
import 'package:gitjournal/editors/journal_editor.dart';
|
import 'package:gitjournal/editors/journal_editor.dart';
|
||||||
import 'package:gitjournal/editors/markdown_editor.dart';
|
import 'package:gitjournal/editors/markdown_editor.dart';
|
||||||
@ -344,10 +345,15 @@ class NoteEditorState extends State<NoteEditor> {
|
|||||||
|
|
||||||
void _editTagsSelected(Note _note) async {
|
void _editTagsSelected(Note _note) async {
|
||||||
Log.i("Note Tags: ${_note.tags}");
|
Log.i("Note Tags: ${_note.tags}");
|
||||||
|
|
||||||
|
final rootFolder = Provider.of<NotesFolderFS>(context);
|
||||||
|
var allTags = _fetchTags(rootFolder, {});
|
||||||
|
Log.i("All Tags: $allTags");
|
||||||
|
|
||||||
var route = MaterialPageRoute(
|
var route = MaterialPageRoute(
|
||||||
builder: (context) => NoteTagEditor(
|
builder: (context) => NoteTagEditor(
|
||||||
selectedTags: note.tags,
|
selectedTags: note.tags,
|
||||||
allTags: note.tags,
|
allTags: allTags,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
var newTags = await Navigator.of(context).push(route);
|
var newTags = await Navigator.of(context).push(route);
|
||||||
@ -362,3 +368,15 @@ class NoteEditorState extends State<NoteEditor> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set<String> _fetchTags(NotesFolder folder, Set<String> tags) {
|
||||||
|
for (var note in folder.notes) {
|
||||||
|
tags.addAll(note.tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var folder in folder.subFolders) {
|
||||||
|
tags = _fetchTags(folder, tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
return tags;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user