Improvements for migrations (#2573)

* Fix optimistic effects

* Fix merge issue
This commit is contained in:
martmull
2023-11-17 19:09:46 +01:00
committed by GitHub
parent 4870b0ac30
commit 900c863f02
2 changed files with 19 additions and 7 deletions

View File

@ -4,6 +4,7 @@ import styled from '@emotion/styled';
import { DateTime } from 'luxon';
import { useRecoilState } from 'recoil';
import { useOptimisticEvict } from '@/apollo/optimistic-effect/hooks/useOptimisticEvict';
import { useCreateOneObjectRecord } from '@/object-record/hooks/useCreateOneObjectRecord';
import { useFindOneObjectRecord } from '@/object-record/hooks/useFindOneObjectRecord';
import { useUpdateOneObjectRecord } from '@/object-record/hooks/useUpdateOneObjectRecord';
@ -45,6 +46,7 @@ export const SettingsDevelopersApiKeyDetail = () => {
const [generatedApiKey] = useRecoilState(
generatedApiKeyFamilyState(apiKeyId),
);
const { performOptimisticEvict } = useOptimisticEvict();
const [generateOneApiKeyToken] = useGenerateOneApiKeyTokenMutation();
const { createOneObject: createOneApiKey } = useCreateOneObjectRecord<ApiKey>(
@ -66,6 +68,7 @@ export const SettingsDevelopersApiKeyDetail = () => {
idToUpdate: apiKeyId,
input: { revokedAt: DateTime.now().toString() },
});
performOptimisticEvict('ApiKeyV2', 'id', apiKeyId);
if (redirect) {
navigate('/settings/developers/api-keys');
}

View File

@ -3,10 +3,11 @@ import { useNavigate } from 'react-router-dom';
import styled from '@emotion/styled';
import { useOptimisticEffect } from '@/apollo/optimistic-effect/hooks/useOptimisticEffect';
import { useFindOneObjectMetadataItem } from '@/object-metadata/hooks/useFindOneObjectMetadataItem';
import { getRecordOptimisticEffectDefinition } from '@/object-record/graphql/optimistic-effect-definition/getRecordOptimisticEffectDefinition';
import { useFindManyObjectRecords } from '@/object-record/hooks/useFindManyObjectRecords';
import { objectSettingsWidth } from '@/settings/data-model/constants/objectSettings';
import { SettingsApiKeysFieldItemTableRow } from '@/settings/developers/components/SettingsApiKeysFieldItemTableRow';
import { getApiKeysOptimisticEffectDefinition } from '@/settings/developers/optimistic-effect-definitions/getApiKeysOptimisticEffectDefinition';
import { ApiFieldItem } from '@/settings/developers/types/ApiFieldItem';
import { formatExpirations } from '@/settings/developers/utils/format-expiration';
import { IconPlus, IconSettings } from '@/ui/display/icon';
@ -41,11 +42,15 @@ const StyledH1Title = styled(H1Title)`
export const SettingsDevelopersApiKeys = () => {
const navigate = useNavigate();
const { registerOptimisticEffect } = useOptimisticEffect('ApiKeyV2');
const [apiKeys, setApiKeys] = useState<Array<ApiFieldItem>>([]);
const { registerOptimisticEffect } = useOptimisticEffect('apiKeyV2');
const { foundObjectMetadataItem } = useFindOneObjectMetadataItem({
objectNameSingular: 'apiKeyV2',
});
const filter = { revokedAt: { eq: null } };
useFindManyObjectRecords({
objectNamePlural: 'apiKeysV2',
filter: { revokedAt: { eq: null } },
filter,
onCompleted: (data) => {
setApiKeys(
formatExpirations(
@ -56,10 +61,14 @@ export const SettingsDevelopersApiKeys = () => {
})),
),
);
registerOptimisticEffect({
variables: {},
definition: getApiKeysOptimisticEffectDefinition,
});
if (foundObjectMetadataItem) {
registerOptimisticEffect({
variables: { filter },
definition: getRecordOptimisticEffectDefinition({
objectMetadataItem: foundObjectMetadataItem,
}),
});
}
},
});