migration of job_id tags in notes and updated mine filter

This commit is contained in:
2026-03-13 10:50:22 -05:00
parent 1d3d9b512a
commit 11daf918b6
2 changed files with 145 additions and 3 deletions
+44 -2
View File
@@ -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