feat: WebDAV file access and category color sync (v0.2.0)
Major Changes: - Switch from Nextcloud Notes API to direct WebDAV file access - Notes stored as .txt files with filename-based IDs for reliability - Implement safer sync strategy without clearNotes() to prevent data loss - Add ETag-based conflict detection for concurrent edits - Add category color sync to .category-colors.json on server - Show neutral gray badges for categories without assigned colors Technical Improvements: - Replace numeric IDs with filename-based string IDs - Update Note type to support both number and string IDs - Implement WebDAV methods: fetchNotesWebDAV, createNoteWebDAV, updateNoteWebDAV, deleteNoteWebDAV - Add CategoryColorsSync service for server synchronization - Remove hash-based color fallback (only show colors when explicitly set) Bug Fixes: - Fix category badge rendering to show all categories - Prevent note loss during sync operations - Improve offline-first functionality with better merge strategy
This commit is contained in:
@@ -59,7 +59,7 @@ class LocalDB {
|
||||
});
|
||||
}
|
||||
|
||||
async getNote(id: number): Promise<Note | undefined> {
|
||||
async getNote(id: number | string): Promise<Note | undefined> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const store = this.getStore(NOTES_STORE);
|
||||
const request = store.get(id);
|
||||
@@ -89,7 +89,7 @@ class LocalDB {
|
||||
});
|
||||
}
|
||||
|
||||
async deleteNote(id: number): Promise<void> {
|
||||
async deleteNote(id: number | string): Promise<void> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const store = this.getStore(NOTES_STORE, 'readwrite');
|
||||
const request = store.delete(id);
|
||||
|
||||
Reference in New Issue
Block a user