Refresh inbox recent after issue creation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
6ba9aea8ba
commit
4fdcfe5515
3 changed files with 43 additions and 0 deletions
|
|
@ -430,6 +430,9 @@ export function NewIssueDialog() {
|
||||||
},
|
},
|
||||||
onSuccess: ({ issue, companyId, failures }) => {
|
onSuccess: ({ issue, companyId, failures }) => {
|
||||||
queryClient.invalidateQueries({ queryKey: queryKeys.issues.list(companyId) });
|
queryClient.invalidateQueries({ queryKey: queryKeys.issues.list(companyId) });
|
||||||
|
queryClient.invalidateQueries({ queryKey: queryKeys.issues.listTouchedByMe(companyId) });
|
||||||
|
queryClient.invalidateQueries({ queryKey: queryKeys.issues.listUnreadTouchedByMe(companyId) });
|
||||||
|
queryClient.invalidateQueries({ queryKey: queryKeys.sidebarBadges(companyId) });
|
||||||
if (draftTimer.current) clearTimeout(draftTimer.current);
|
if (draftTimer.current) clearTimeout(draftTimer.current);
|
||||||
if (failures.length > 0) {
|
if (failures.length > 0) {
|
||||||
const prefix = (companies.find((company) => company.id === companyId)?.issuePrefix ?? "").trim();
|
const prefix = (companies.find((company) => company.id === companyId)?.issuePrefix ?? "").trim();
|
||||||
|
|
|
||||||
34
ui/src/context/LiveUpdatesProvider.test.ts
Normal file
34
ui/src/context/LiveUpdatesProvider.test.ts
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
// @vitest-environment node
|
||||||
|
|
||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import { __liveUpdatesTestUtils } from "./LiveUpdatesProvider";
|
||||||
|
import { queryKeys } from "../lib/queryKeys";
|
||||||
|
|
||||||
|
describe("LiveUpdatesProvider issue invalidation", () => {
|
||||||
|
it("refreshes touched inbox queries for issue activity", () => {
|
||||||
|
const invalidations: unknown[] = [];
|
||||||
|
const queryClient = {
|
||||||
|
invalidateQueries: (input: unknown) => {
|
||||||
|
invalidations.push(input);
|
||||||
|
},
|
||||||
|
getQueryData: () => undefined,
|
||||||
|
};
|
||||||
|
|
||||||
|
__liveUpdatesTestUtils.invalidateActivityQueries(
|
||||||
|
queryClient as never,
|
||||||
|
"company-1",
|
||||||
|
{
|
||||||
|
entityType: "issue",
|
||||||
|
entityId: "issue-1",
|
||||||
|
details: null,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(invalidations).toContainEqual({
|
||||||
|
queryKey: queryKeys.issues.listTouchedByMe("company-1"),
|
||||||
|
});
|
||||||
|
expect(invalidations).toContainEqual({
|
||||||
|
queryKey: queryKeys.issues.listUnreadTouchedByMe("company-1"),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
@ -361,6 +361,8 @@ function invalidateActivityQueries(
|
||||||
|
|
||||||
if (entityType === "issue") {
|
if (entityType === "issue") {
|
||||||
queryClient.invalidateQueries({ queryKey: queryKeys.issues.list(companyId) });
|
queryClient.invalidateQueries({ queryKey: queryKeys.issues.list(companyId) });
|
||||||
|
queryClient.invalidateQueries({ queryKey: queryKeys.issues.listTouchedByMe(companyId) });
|
||||||
|
queryClient.invalidateQueries({ queryKey: queryKeys.issues.listUnreadTouchedByMe(companyId) });
|
||||||
if (entityId) {
|
if (entityId) {
|
||||||
const details = readRecord(payload.details);
|
const details = readRecord(payload.details);
|
||||||
const issueRefs = resolveIssueQueryRefs(queryClient, companyId, entityId, details);
|
const issueRefs = resolveIssueQueryRefs(queryClient, companyId, entityId, details);
|
||||||
|
|
@ -510,6 +512,10 @@ function handleLiveEvent(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const __liveUpdatesTestUtils = {
|
||||||
|
invalidateActivityQueries,
|
||||||
|
};
|
||||||
|
|
||||||
export function LiveUpdatesProvider({ children }: { children: ReactNode }) {
|
export function LiveUpdatesProvider({ children }: { children: ReactNode }) {
|
||||||
const { selectedCompanyId } = useCompany();
|
const { selectedCompanyId } = useCompany();
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue