The implementation uses / symbol as a nesting separator. I.e. tag/subtag is a nested tag, where tag is the parent tag and subtag is its child. Creating a tag named tag/subtag/subsubtag creates three tags, one for each level. The tags are associated using parent_id field.
In the app, viewing notes with a tag will also show all notes that are associated with any of the tag's descendant tags (same for the note count). Deleting a tag will also delete all its descendant tags.
In the desktop app the tags are shown nested just like the notebooks.
Follow up to #893
Now using middleware to set the tags when a note is selected
This avoids the ugly code in the NoteTextComponent where we determine
if tags are to be fetched, identify if they have been modified, fetch
them and then dispatch an action to update the store which might
again re-render the component.
Also implements style related fixes from #1000
Signed-off-by: Abijeet <abijeetpatro@gmail.com>
Fixes: #469
* Adding node counts for folders and tags
* Add unit tests
* Fix count update when the tag list for a note is updated
* Right align note counts and remove from the settings screen
* Folder note count calculation update to include descendants
* Update Setting.js
* Change count style and fix click on counts
* Fix tag/folder count update on delete/add note
* Review updates
* Allow downloading resources automatically, on demand, or when loading note
* Make needToBeFetched calls to return the right number of resources
* All: Improved handling of resource downloading and decryption
* Desktop: Click on resource to download it (and, optionally, to decrypt it)
* Desktop: Better handling of resource state (not downloaded, downloading, encrypted) in front end
* Renamed setting to sync.resourceDownloadMode
* Download resources when changing setting
* tweaks
* removed duplicate cs
* Better report resource download progress
* Make sure resource cache is properly cleared when needed
* Also handle manual download for non-image resources
* More improvements to logic when downloading and decrypting resources