favoriting

This commit is contained in:
2026-03-06 13:53:26 -06:00
parent 10d76eb3c1
commit 09557d49a4
8 changed files with 155 additions and 29 deletions
+34 -5
View File
@@ -4,6 +4,12 @@ import { pb } from "@/lib/pocketbase";
import { toast } from "solid-sonner";
import { TASGRID_COLLECTION, TAGS_COLLECTION, SHARE_RULES_COLLECTION, BUCKETS_COLLECTION, NOTES_COLLECTION, URGENCY_HOURS, SIZE_HOURS } from "@/lib/constants";
// Helper to get the current user's personalized favorite tag
export const getFavoriteTag = () => {
const userId = pb.authStore.model?.id;
return userId ? `__${userId}_favorite__` : "__favorite__";
};
const LIST_FIELDS = 'id,collectionId,collectionName,created,updated,title,startDate,dueDate,priority,status,completed,tags,user,size,recurrence,sharedWith,deletedAt';
const getStorageKey = () => {
@@ -163,6 +169,8 @@ export interface Filter {
urgencyMin: number;
urgencyMax: number;
editedToday: boolean;
ownedByMe: boolean;
starred: boolean;
}
// Background sync for Context Switcher (polling fallback for realtime)
@@ -288,7 +296,9 @@ export const [store, setStore] = createStore<TaskStore>({
priorityMax: 10,
urgencyMin: 1,
urgencyMax: 10,
editedToday: false
editedToday: false,
ownedByMe: false,
starred: false
},
shareRules: [],
filterTemplates: [],
@@ -304,7 +314,9 @@ export const [store, setStore] = createStore<TaskStore>({
priorityMax: 10,
urgencyMin: 1,
urgencyMax: 10,
editedToday: false
editedToday: false,
ownedByMe: false,
starred: false
}
});
@@ -403,6 +415,16 @@ export const matchesFilter = (task: Task) => {
if (today !== updated) return false;
}
// Owned By Me
if (f.ownedByMe && task.ownerId !== currentUserId) {
return false;
}
// Starred
if (f.starred && !task.tags?.includes(getFavoriteTag())) {
return false;
}
return true;
};
@@ -1153,7 +1175,9 @@ export const initStore = async () => {
priorityMax: 10,
urgencyMin: 1,
urgencyMax: 10,
editedToday: false
editedToday: false,
ownedByMe: false,
starred: false
}
});
}
@@ -2704,12 +2728,15 @@ export const clearFilter = () => {
priorityMax: 10,
urgencyMin: 1,
urgencyMax: 10,
editedToday: false
editedToday: false,
ownedByMe: false,
starred: false
});
};
export const setNoteFilter = (update: Partial<Filter>) => {
setStore("noteFilter", (f) => ({ ...f, ...update }));
syncPreferences();
};
const NOTE_FILTER_TEMPLATES_COLLECTION = 'TasGrid_NoteFilterTemplates';
@@ -2783,7 +2810,9 @@ export const clearNoteFilter = () => {
priorityMax: 10,
urgencyMin: 1,
urgencyMax: 10,
editedToday: false
editedToday: false,
ownedByMe: false,
starred: false
});
syncPreferences();
};