favoriting
This commit is contained in:
+34
-5
@@ -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();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user