Implement Optimistic Effects (#1415)

* Fix person deletion not reflected on Opportunities POC

* Fix companies, user deletion

* Implement optimistic effects

* Implement optimistic effects

* Implement optimistic effects

* Fix accoding to PR
This commit is contained in:
Charles Bochet
2023-09-04 10:56:48 +02:00
committed by GitHub
parent ae072b6ce5
commit a46210bb80
10 changed files with 188 additions and 1 deletions

View File

@ -3,6 +3,7 @@ import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { v4 } from 'uuid';
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
import { CompanyTable } from '@/companies/table/components/CompanyTable';
import { SEARCH_COMPANY_QUERY } from '@/search/graphql/queries/searchCompanyQuery';
import { SpreadsheetImportProvider } from '@/spreadsheet-import/provider/components/SpreadsheetImportProvider';
@ -30,6 +31,7 @@ export function Companies() {
const [insertCompany] = useInsertOneCompanyMutation();
const upsertEntityTableItem = useUpsertEntityTableItem();
const upsertTableRowIds = useUpsertTableRowId();
const { triggerOptimisticEffects } = useOptimisticEffect();
async function handleAddButtonClick() {
const newCompanyId: string = v4();
@ -61,6 +63,7 @@ export function Companies() {
if (data?.createOneCompany) {
upsertTableRowIds(data?.createOneCompany.id);
upsertEntityTableItem(data?.createOneCompany);
triggerOptimisticEffects('Company', [data?.createOneCompany]);
}
},
refetchQueries: [getOperationName(SEARCH_COMPANY_QUERY) ?? ''],

View File

@ -2,6 +2,7 @@ import { useTheme } from '@emotion/react';
import styled from '@emotion/styled';
import { v4 } from 'uuid';
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
import { PeopleTable } from '@/people/table/components/PeopleTable';
import { SpreadsheetImportProvider } from '@/spreadsheet-import/provider/components/SpreadsheetImportProvider';
import { DropdownRecoilScopeContext } from '@/ui/dropdown/states/recoil-scope-contexts/DropdownRecoilScopeContext';
@ -28,6 +29,7 @@ export function People() {
const [insertOnePerson] = useInsertOnePersonMutation();
const upsertEntityTableItem = useUpsertEntityTableItem();
const upsertTableRowIds = useUpsertTableRowId();
const { triggerOptimisticEffects } = useOptimisticEffect();
async function handleAddButtonClick() {
const newPersonId: string = v4();
@ -50,10 +52,11 @@ export function People() {
createdAt: '',
},
},
update: (cache, { data }) => {
update: (_cache, { data }) => {
if (data?.createOnePerson) {
upsertTableRowIds(data?.createOnePerson.id);
upsertEntityTableItem(data?.createOnePerson);
triggerOptimisticEffects('Person', [data?.createOnePerson]);
}
},
});