refactor(graphql): replace dashboard query with resource queries

This commit is contained in:
Ruslan Bakiev
2026-02-23 12:46:29 +07:00
parent aa465f65bd
commit d3b751db65
11 changed files with 333 additions and 281 deletions

View File

@@ -10,7 +10,14 @@ import CrmPilotSidebar from "~~/app/components/workspace/pilot/CrmPilotSidebar.v
import CrmChangeReviewOverlay from "~~/app/components/workspace/review/CrmChangeReviewOverlay.vue";
import meQuery from "~~/graphql/operations/me.graphql?raw";
import chatMessagesQuery from "~~/graphql/operations/chat-messages.graphql?raw";
import dashboardQuery from "~~/graphql/operations/dashboard.graphql?raw";
import contactsQuery from "~~/graphql/operations/contacts.graphql?raw";
import communicationsQuery from "~~/graphql/operations/communications.graphql?raw";
import contactInboxesQuery from "~~/graphql/operations/contact-inboxes.graphql?raw";
import calendarQuery from "~~/graphql/operations/calendar.graphql?raw";
import dealsQuery from "~~/graphql/operations/deals.graphql?raw";
import feedQuery from "~~/graphql/operations/feed.graphql?raw";
import pinsQuery from "~~/graphql/operations/pins.graphql?raw";
import documentsQuery from "~~/graphql/operations/documents.graphql?raw";
import getClientTimelineQuery from "~~/graphql/operations/get-client-timeline.graphql?raw";
import logoutMutation from "~~/graphql/operations/logout.graphql?raw";
import logPilotNoteMutation from "~~/graphql/operations/log-pilot-note.graphql?raw";
@@ -982,27 +989,34 @@ async function logout() {
}
async function refreshCrmData() {
const data = await gqlFetch<{
dashboard: {
contacts: Contact[];
communications: CommItem[];
contactInboxes: ContactInbox[];
calendar: CalendarEvent[];
deals: Deal[];
feed: FeedCard[];
pins: CommPin[];
documents: WorkspaceDocument[];
};
}>(dashboardQuery);
const [
contactsData,
communicationsData,
contactInboxesData,
calendarData,
dealsData,
feedData,
pinsData,
documentsData,
] = await Promise.all([
gqlFetch<{ contacts: Contact[] }>(contactsQuery),
gqlFetch<{ communications: CommItem[] }>(communicationsQuery),
gqlFetch<{ contactInboxes: ContactInbox[] }>(contactInboxesQuery),
gqlFetch<{ calendar: CalendarEvent[] }>(calendarQuery),
gqlFetch<{ deals: Deal[] }>(dealsQuery),
gqlFetch<{ feed: FeedCard[] }>(feedQuery),
gqlFetch<{ pins: CommPin[] }>(pinsQuery),
gqlFetch<{ documents: WorkspaceDocument[] }>(documentsQuery),
]);
contacts.value = data.dashboard.contacts ?? [];
commItems.value = data.dashboard.communications ?? [];
contactInboxes.value = data.dashboard.contactInboxes ?? [];
calendarEvents.value = data.dashboard.calendar ?? [];
deals.value = data.dashboard.deals ?? [];
feedCards.value = data.dashboard.feed ?? [];
commPins.value = data.dashboard.pins ?? [];
documents.value = data.dashboard.documents ?? [];
contacts.value = contactsData.contacts ?? [];
commItems.value = communicationsData.communications ?? [];
contactInboxes.value = contactInboxesData.contactInboxes ?? [];
calendarEvents.value = calendarData.calendar ?? [];
deals.value = dealsData.deals ?? [];
feedCards.value = feedData.feed ?? [];
commPins.value = pinsData.pins ?? [];
documents.value = documentsData.documents ?? [];
// Derive channels per contact from communication items.
const byName = new Map<string, Set<string>>();