migration of job_id tags in notes and updated mine filter
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { type Component, createMemo, For, Show } from "solid-js";
|
||||
import { type Component, createMemo, createResource, For, Show } from "solid-js";
|
||||
import { store, getFavoriteTag } from "@/store";
|
||||
import { pb } from "@/lib/pocketbase";
|
||||
import { Plus, Lock, Star } from "lucide-solid";
|
||||
@@ -12,6 +12,35 @@ export const NotesSidebar: Component<{
|
||||
setSelectedNoteId: (id: string | null) => void;
|
||||
}> = (props) => {
|
||||
const currentUserId = pb.authStore.model?.id;
|
||||
const [accessibleJobs] = createResource(currentUserId, async (userId) => {
|
||||
if (!userId) return { ids: new Set<string>(), numbers: new Set<string>() };
|
||||
try {
|
||||
const items = await pb.collection('Job_Info_Prod').getFullList({
|
||||
filter: [
|
||||
`EstimatorUser = "${userId}"`,
|
||||
`OfficeRepUser = "${userId}"`,
|
||||
`ProjectManagerUser = "${userId}"`,
|
||||
`Estimator = "${userId}"`,
|
||||
`Office_Rep = "${userId}"`,
|
||||
`Project_Manager = "${userId}"`
|
||||
].join(" || "),
|
||||
fields: "id,Job_Number",
|
||||
requestKey: null
|
||||
});
|
||||
const ids = new Set<string>();
|
||||
const numbers = new Set<string>();
|
||||
items.forEach((r: any) => {
|
||||
if (r.id) ids.add(String(r.id));
|
||||
if (r.Job_Number !== undefined && r.Job_Number !== null && r.Job_Number !== "") {
|
||||
numbers.add(String(r.Job_Number));
|
||||
}
|
||||
});
|
||||
return { ids, numbers };
|
||||
} catch (e) {
|
||||
console.warn("Failed to load job access list for notes filter:", e);
|
||||
return { ids: new Set<string>(), numbers: new Set<string>() };
|
||||
}
|
||||
});
|
||||
|
||||
const filteredNotes = createMemo(() => {
|
||||
const filter = store.noteFilter;
|
||||
@@ -56,7 +85,20 @@ export const NotesSidebar: Component<{
|
||||
|
||||
// Owned By Me Filter
|
||||
if (filter.ownedByMe) {
|
||||
n = n.filter(note => note.user === currentUserId);
|
||||
const accessible = accessibleJobs();
|
||||
n = n.filter(note => {
|
||||
if (note.tags?.includes("prism_job")) {
|
||||
if (!accessible) return false;
|
||||
const jobIdTag = note.tags.find(t => t.startsWith("job_id:"));
|
||||
const jobRef = jobIdTag?.split(":")[1]?.trim();
|
||||
if (!jobRef) return false;
|
||||
const isLegacyNumber = /^\d{4}$/.test(jobRef);
|
||||
return isLegacyNumber
|
||||
? accessible.numbers.has(jobRef)
|
||||
: accessible.ids.has(jobRef);
|
||||
}
|
||||
return note.user === currentUserId;
|
||||
});
|
||||
}
|
||||
|
||||
// Starred Filter
|
||||
|
||||
Reference in New Issue
Block a user