Separate system operations from core objects in GraphQL endpoints (#12977)
Moves system-level operations (auth, billing, admin) to use the /metadata endpoint instead of /graphql. This cleans up the endpoint separation so /graphql is purely for core objects (Company, People, etc.) and /metadata handles all system operations. Part of prep work for webhook/API key core migration.
This commit is contained in:
@ -5,20 +5,43 @@ module.exports = {
|
|||||||
(process.env.REACT_APP_SERVER_BASE_URL ?? 'http://localhost:3000') +
|
(process.env.REACT_APP_SERVER_BASE_URL ?? 'http://localhost:3000') +
|
||||||
'/metadata',
|
'/metadata',
|
||||||
documents: [
|
documents: [
|
||||||
'./src/modules/databases/graphql/**/*.ts',
|
'./src/modules/auth/graphql/**/*.{ts,tsx}',
|
||||||
'./src/modules/object-metadata/graphql/*.ts',
|
'./src/modules/users/graphql/**/*.{ts,tsx}',
|
||||||
'./src/modules/settings/serverless-functions/graphql/**/*.ts',
|
|
||||||
'./src/modules/object-record/graphql/*.tsx',
|
'./src/modules/workspace/graphql/**/*.{ts,tsx}',
|
||||||
'./src/modules/metadata/graphql/*.ts',
|
'./src/modules/workspace-member/graphql/**/*.{ts,tsx}',
|
||||||
|
'./src/modules/workspace-invitation/graphql/**/*.{ts,tsx}',
|
||||||
|
|
||||||
|
'./src/modules/billing/graphql/**/*.{ts,tsx}',
|
||||||
|
'./src/modules/settings/**/graphql/**/*.{ts,tsx}',
|
||||||
|
|
||||||
|
'./src/modules/databases/graphql/**/*.{ts,tsx}',
|
||||||
|
'./src/modules/workflow/**/graphql/**/*.{ts,tsx}',
|
||||||
|
'./src/modules/analytics/graphql/**/*.{ts,tsx}',
|
||||||
|
'./src/modules/object-metadata/graphql/**/*.{ts,tsx}',
|
||||||
|
'./src/modules/attachments/graphql/**/*.{ts,tsx}',
|
||||||
|
'./src/modules/onboarding/graphql/**/*.{ts,tsx}',
|
||||||
|
|
||||||
|
'!./src/**/*.test.{ts,tsx}',
|
||||||
|
'!./src/**/*.stories.{ts,tsx}',
|
||||||
|
'!./src/**/__mocks__/*.ts',
|
||||||
],
|
],
|
||||||
overwrite: true,
|
overwrite: true,
|
||||||
generates: {
|
generates: {
|
||||||
'./src/generated-metadata/': {
|
'./src/generated-metadata/graphql.ts': {
|
||||||
preset: 'client',
|
plugins: [
|
||||||
presetConfig: {
|
'typescript',
|
||||||
fragmentMasking: false,
|
'typescript-operations',
|
||||||
},
|
'typescript-react-apollo',
|
||||||
|
],
|
||||||
config: {
|
config: {
|
||||||
|
skipTypename: false,
|
||||||
|
withHooks: true,
|
||||||
|
withHOC: false,
|
||||||
|
withComponent: false,
|
||||||
|
scalars: {
|
||||||
|
DateTime: 'string',
|
||||||
|
},
|
||||||
namingConvention: { enumValues: 'keep' },
|
namingConvention: { enumValues: 'keep' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -5,20 +5,27 @@ module.exports = {
|
|||||||
(process.env.REACT_APP_SERVER_BASE_URL ?? 'http://localhost:3000') +
|
(process.env.REACT_APP_SERVER_BASE_URL ?? 'http://localhost:3000') +
|
||||||
'/graphql',
|
'/graphql',
|
||||||
documents: [
|
documents: [
|
||||||
'!./src/modules/databases/**',
|
'./src/modules/activities/graphql/**/*.{ts,tsx}',
|
||||||
'!./src/modules/object-metadata/**',
|
'./src/modules/companies/graphql/**/*.{ts,tsx}',
|
||||||
'!./src/modules/object-record/**',
|
'./src/modules/people/graphql/**/*.{ts,tsx}',
|
||||||
'!./src/modules/settings/serverless-functions/**',
|
'./src/modules/opportunities/graphql/**/*.{ts,tsx}',
|
||||||
'!./src/modules/settings/accounts/hooks/**',
|
|
||||||
'./src/modules/**/*.tsx',
|
'./src/modules/search/graphql/**/*.{ts,tsx}',
|
||||||
'./src/modules/**/*.ts',
|
'./src/modules/views/graphql/**/*.{ts,tsx}',
|
||||||
'!./src/**/*.test.tsx',
|
'./src/modules/favorites/graphql/**/*.{ts,tsx}',
|
||||||
'!./src/**/*.stories.tsx',
|
'./src/modules/spreadsheet-import/graphql/**/*.{ts,tsx}',
|
||||||
|
'./src/modules/command-menu/graphql/**/*.{ts,tsx}',
|
||||||
|
|
||||||
|
'./src/modules/prefetch/graphql/**/*.{ts,tsx}',
|
||||||
|
'./src/modules/subscription/graphql/**/*.{ts,tsx}',
|
||||||
|
|
||||||
|
'!./src/**/*.test.{ts,tsx}',
|
||||||
|
'!./src/**/*.stories.{ts,tsx}',
|
||||||
'!./src/**/__mocks__/*.ts',
|
'!./src/**/__mocks__/*.ts',
|
||||||
],
|
],
|
||||||
overwrite: true,
|
overwrite: true,
|
||||||
generates: {
|
generates: {
|
||||||
'./src/generated/graphql.tsx': {
|
'./src/generated/graphql.ts': {
|
||||||
plugins: [
|
plugins: [
|
||||||
'typescript',
|
'typescript',
|
||||||
'typescript-operations',
|
'typescript-operations',
|
||||||
|
|||||||
@ -1,177 +0,0 @@
|
|||||||
/* eslint-disable */
|
|
||||||
import * as types from './graphql';
|
|
||||||
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Map of all GraphQL operations in the project.
|
|
||||||
*
|
|
||||||
* This map has several performance disadvantages:
|
|
||||||
* 1. It is not tree-shakeable, so it will include all operations in the project.
|
|
||||||
* 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.
|
|
||||||
* 3. It does not support dead code elimination, so it will add unused operations.
|
|
||||||
*
|
|
||||||
* Therefore it is highly recommended to use the babel or swc plugin for production.
|
|
||||||
*/
|
|
||||||
const documents = {
|
|
||||||
"\n fragment RemoteServerFields on RemoteServer {\n id\n createdAt\n foreignDataWrapperId\n foreignDataWrapperOptions\n foreignDataWrapperType\n userMappingOptions {\n user\n }\n updatedAt\n schema\n label\n }\n": types.RemoteServerFieldsFragmentDoc,
|
|
||||||
"\n fragment RemoteTableFields on RemoteTable {\n id\n name\n schema\n status\n schemaPendingUpdates\n }\n": types.RemoteTableFieldsFragmentDoc,
|
|
||||||
"\n \n mutation createServer($input: CreateRemoteServerInput!) {\n createOneRemoteServer(input: $input) {\n ...RemoteServerFields\n }\n }\n": types.CreateServerDocument,
|
|
||||||
"\n mutation deleteServer($input: RemoteServerIdInput!) {\n deleteOneRemoteServer(input: $input) {\n id\n }\n }\n": types.DeleteServerDocument,
|
|
||||||
"\n \n mutation syncRemoteTable($input: RemoteTableInput!) {\n syncRemoteTable(input: $input) {\n ...RemoteTableFields\n }\n }\n": types.SyncRemoteTableDocument,
|
|
||||||
"\n \n mutation syncRemoteTableSchemaChanges($input: RemoteTableInput!) {\n syncRemoteTableSchemaChanges(input: $input) {\n ...RemoteTableFields\n }\n }\n": types.SyncRemoteTableSchemaChangesDocument,
|
|
||||||
"\n \n mutation unsyncRemoteTable($input: RemoteTableInput!) {\n unsyncRemoteTable(input: $input) {\n ...RemoteTableFields\n }\n }\n": types.UnsyncRemoteTableDocument,
|
|
||||||
"\n \n mutation updateServer($input: UpdateRemoteServerInput!) {\n updateOneRemoteServer(input: $input) {\n ...RemoteServerFields\n }\n }\n": types.UpdateServerDocument,
|
|
||||||
"\n \n query GetManyDatabaseConnections($input: RemoteServerTypeInput!) {\n findManyRemoteServersByType(input: $input) {\n ...RemoteServerFields\n }\n }\n": types.GetManyDatabaseConnectionsDocument,
|
|
||||||
"\n \n query GetManyRemoteTables($input: FindManyRemoteTablesInput!) {\n findDistantTablesWithStatus(input: $input) {\n ...RemoteTableFields\n }\n }\n": types.GetManyRemoteTablesDocument,
|
|
||||||
"\n \n query GetOneDatabaseConnection($input: RemoteServerIdInput!) {\n findOneRemoteServerById(input: $input) {\n ...RemoteServerFields\n }\n }\n": types.GetOneDatabaseConnectionDocument,
|
|
||||||
"\n mutation CreateOneObjectMetadataItem($input: CreateOneObjectInput!) {\n createOneObject(input: $input) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n isSearchable\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n isLabelSyncedWithName\n }\n }\n": types.CreateOneObjectMetadataItemDocument,
|
|
||||||
"\n mutation CreateOneFieldMetadataItem($input: CreateOneFieldMetadataInput!) {\n createOneField(input: $input) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n settings\n defaultValue\n options\n isLabelSyncedWithName\n }\n }\n": types.CreateOneFieldMetadataItemDocument,
|
|
||||||
"\n mutation UpdateOneFieldMetadataItem(\n $idToUpdate: UUID!\n $updatePayload: UpdateFieldInput!\n ) {\n updateOneField(input: { id: $idToUpdate, update: $updatePayload }) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n settings\n isLabelSyncedWithName\n }\n }\n": types.UpdateOneFieldMetadataItemDocument,
|
|
||||||
"\n mutation UpdateOneObjectMetadataItem(\n $idToUpdate: UUID!\n $updatePayload: UpdateObjectPayload!\n ) {\n updateOneObject(input: { id: $idToUpdate, update: $updatePayload }) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n isSearchable\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n isLabelSyncedWithName\n }\n }\n": types.UpdateOneObjectMetadataItemDocument,
|
|
||||||
"\n mutation DeleteOneObjectMetadataItem($idToDelete: UUID!) {\n deleteOneObject(input: { id: $idToDelete }) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n isSearchable\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n isLabelSyncedWithName\n }\n }\n": types.DeleteOneObjectMetadataItemDocument,
|
|
||||||
"\n mutation DeleteOneFieldMetadataItem($idToDelete: UUID!) {\n deleteOneField(input: { id: $idToDelete }) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n settings\n }\n }\n": types.DeleteOneFieldMetadataItemDocument,
|
|
||||||
"\n query ObjectMetadataItems {\n objects(paging: { first: 1000 }) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n shortcut\n isLabelSyncedWithName\n isSearchable\n duplicateCriteria\n indexMetadataList {\n id\n createdAt\n updatedAt\n name\n indexWhereClause\n indexType\n isUnique\n indexFieldMetadataList {\n id\n fieldMetadataId\n createdAt\n updatedAt\n order\n }\n }\n fieldsList {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n isUnique\n createdAt\n updatedAt\n defaultValue\n options\n settings\n isLabelSyncedWithName\n relation {\n type\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n": types.ObjectMetadataItemsDocument,
|
|
||||||
"\n fragment ServerlessFunctionFields on ServerlessFunction {\n id\n name\n description\n runtime\n timeoutSeconds\n latestVersion\n latestVersionInputSchema\n publishedVersions\n createdAt\n updatedAt\n }\n": types.ServerlessFunctionFieldsFragmentDoc,
|
|
||||||
"\n \n mutation CreateOneServerlessFunctionItem(\n $input: CreateServerlessFunctionInput!\n ) {\n createOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n": types.CreateOneServerlessFunctionItemDocument,
|
|
||||||
"\n \n mutation DeleteOneServerlessFunction($input: ServerlessFunctionIdInput!) {\n deleteOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n": types.DeleteOneServerlessFunctionDocument,
|
|
||||||
"\n mutation ExecuteOneServerlessFunction(\n $input: ExecuteServerlessFunctionInput!\n ) {\n executeOneServerlessFunction(input: $input) {\n data\n logs\n duration\n status\n error\n }\n }\n": types.ExecuteOneServerlessFunctionDocument,
|
|
||||||
"\n \n mutation PublishOneServerlessFunction(\n $input: PublishServerlessFunctionInput!\n ) {\n publishServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n": types.PublishOneServerlessFunctionDocument,
|
|
||||||
"\n \n mutation UpdateOneServerlessFunction($input: UpdateServerlessFunctionInput!) {\n updateOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n": types.UpdateOneServerlessFunctionDocument,
|
|
||||||
"\n query FindManyAvailablePackages($input: ServerlessFunctionIdInput!) {\n getAvailablePackages(input: $input)\n }\n": types.FindManyAvailablePackagesDocument,
|
|
||||||
"\n \n query GetManyServerlessFunctions {\n findManyServerlessFunctions {\n ...ServerlessFunctionFields\n }\n }\n": types.GetManyServerlessFunctionsDocument,
|
|
||||||
"\n \n query GetOneServerlessFunction($input: ServerlessFunctionIdInput!) {\n findOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n": types.GetOneServerlessFunctionDocument,
|
|
||||||
"\n query FindOneServerlessFunctionSourceCode(\n $input: GetServerlessFunctionSourceCodeInput!\n ) {\n getServerlessFunctionSourceCode(input: $input)\n }\n": types.FindOneServerlessFunctionSourceCodeDocument,
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @example
|
|
||||||
* ```ts
|
|
||||||
* const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* The query argument is unknown!
|
|
||||||
* Please regenerate the types.
|
|
||||||
*/
|
|
||||||
export function graphql(source: string): unknown;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n fragment RemoteServerFields on RemoteServer {\n id\n createdAt\n foreignDataWrapperId\n foreignDataWrapperOptions\n foreignDataWrapperType\n userMappingOptions {\n user\n }\n updatedAt\n schema\n label\n }\n"): (typeof documents)["\n fragment RemoteServerFields on RemoteServer {\n id\n createdAt\n foreignDataWrapperId\n foreignDataWrapperOptions\n foreignDataWrapperType\n userMappingOptions {\n user\n }\n updatedAt\n schema\n label\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n fragment RemoteTableFields on RemoteTable {\n id\n name\n schema\n status\n schemaPendingUpdates\n }\n"): (typeof documents)["\n fragment RemoteTableFields on RemoteTable {\n id\n name\n schema\n status\n schemaPendingUpdates\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n mutation createServer($input: CreateRemoteServerInput!) {\n createOneRemoteServer(input: $input) {\n ...RemoteServerFields\n }\n }\n"): (typeof documents)["\n \n mutation createServer($input: CreateRemoteServerInput!) {\n createOneRemoteServer(input: $input) {\n ...RemoteServerFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n mutation deleteServer($input: RemoteServerIdInput!) {\n deleteOneRemoteServer(input: $input) {\n id\n }\n }\n"): (typeof documents)["\n mutation deleteServer($input: RemoteServerIdInput!) {\n deleteOneRemoteServer(input: $input) {\n id\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n mutation syncRemoteTable($input: RemoteTableInput!) {\n syncRemoteTable(input: $input) {\n ...RemoteTableFields\n }\n }\n"): (typeof documents)["\n \n mutation syncRemoteTable($input: RemoteTableInput!) {\n syncRemoteTable(input: $input) {\n ...RemoteTableFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n mutation syncRemoteTableSchemaChanges($input: RemoteTableInput!) {\n syncRemoteTableSchemaChanges(input: $input) {\n ...RemoteTableFields\n }\n }\n"): (typeof documents)["\n \n mutation syncRemoteTableSchemaChanges($input: RemoteTableInput!) {\n syncRemoteTableSchemaChanges(input: $input) {\n ...RemoteTableFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n mutation unsyncRemoteTable($input: RemoteTableInput!) {\n unsyncRemoteTable(input: $input) {\n ...RemoteTableFields\n }\n }\n"): (typeof documents)["\n \n mutation unsyncRemoteTable($input: RemoteTableInput!) {\n unsyncRemoteTable(input: $input) {\n ...RemoteTableFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n mutation updateServer($input: UpdateRemoteServerInput!) {\n updateOneRemoteServer(input: $input) {\n ...RemoteServerFields\n }\n }\n"): (typeof documents)["\n \n mutation updateServer($input: UpdateRemoteServerInput!) {\n updateOneRemoteServer(input: $input) {\n ...RemoteServerFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n query GetManyDatabaseConnections($input: RemoteServerTypeInput!) {\n findManyRemoteServersByType(input: $input) {\n ...RemoteServerFields\n }\n }\n"): (typeof documents)["\n \n query GetManyDatabaseConnections($input: RemoteServerTypeInput!) {\n findManyRemoteServersByType(input: $input) {\n ...RemoteServerFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n query GetManyRemoteTables($input: FindManyRemoteTablesInput!) {\n findDistantTablesWithStatus(input: $input) {\n ...RemoteTableFields\n }\n }\n"): (typeof documents)["\n \n query GetManyRemoteTables($input: FindManyRemoteTablesInput!) {\n findDistantTablesWithStatus(input: $input) {\n ...RemoteTableFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n query GetOneDatabaseConnection($input: RemoteServerIdInput!) {\n findOneRemoteServerById(input: $input) {\n ...RemoteServerFields\n }\n }\n"): (typeof documents)["\n \n query GetOneDatabaseConnection($input: RemoteServerIdInput!) {\n findOneRemoteServerById(input: $input) {\n ...RemoteServerFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n mutation CreateOneObjectMetadataItem($input: CreateOneObjectInput!) {\n createOneObject(input: $input) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n isSearchable\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n isLabelSyncedWithName\n }\n }\n"): (typeof documents)["\n mutation CreateOneObjectMetadataItem($input: CreateOneObjectInput!) {\n createOneObject(input: $input) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n isSearchable\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n isLabelSyncedWithName\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n mutation CreateOneFieldMetadataItem($input: CreateOneFieldMetadataInput!) {\n createOneField(input: $input) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n settings\n defaultValue\n options\n isLabelSyncedWithName\n }\n }\n"): (typeof documents)["\n mutation CreateOneFieldMetadataItem($input: CreateOneFieldMetadataInput!) {\n createOneField(input: $input) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n settings\n defaultValue\n options\n isLabelSyncedWithName\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n mutation UpdateOneFieldMetadataItem(\n $idToUpdate: UUID!\n $updatePayload: UpdateFieldInput!\n ) {\n updateOneField(input: { id: $idToUpdate, update: $updatePayload }) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n settings\n isLabelSyncedWithName\n }\n }\n"): (typeof documents)["\n mutation UpdateOneFieldMetadataItem(\n $idToUpdate: UUID!\n $updatePayload: UpdateFieldInput!\n ) {\n updateOneField(input: { id: $idToUpdate, update: $updatePayload }) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n settings\n isLabelSyncedWithName\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n mutation UpdateOneObjectMetadataItem(\n $idToUpdate: UUID!\n $updatePayload: UpdateObjectPayload!\n ) {\n updateOneObject(input: { id: $idToUpdate, update: $updatePayload }) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n isSearchable\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n isLabelSyncedWithName\n }\n }\n"): (typeof documents)["\n mutation UpdateOneObjectMetadataItem(\n $idToUpdate: UUID!\n $updatePayload: UpdateObjectPayload!\n ) {\n updateOneObject(input: { id: $idToUpdate, update: $updatePayload }) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n isSearchable\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n isLabelSyncedWithName\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n mutation DeleteOneObjectMetadataItem($idToDelete: UUID!) {\n deleteOneObject(input: { id: $idToDelete }) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n isSearchable\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n isLabelSyncedWithName\n }\n }\n"): (typeof documents)["\n mutation DeleteOneObjectMetadataItem($idToDelete: UUID!) {\n deleteOneObject(input: { id: $idToDelete }) {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n isSearchable\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n isLabelSyncedWithName\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n mutation DeleteOneFieldMetadataItem($idToDelete: UUID!) {\n deleteOneField(input: { id: $idToDelete }) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n settings\n }\n }\n"): (typeof documents)["\n mutation DeleteOneFieldMetadataItem($idToDelete: UUID!) {\n deleteOneField(input: { id: $idToDelete }) {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n settings\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n query ObjectMetadataItems {\n objects(paging: { first: 1000 }) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n shortcut\n isLabelSyncedWithName\n isSearchable\n duplicateCriteria\n indexMetadataList {\n id\n createdAt\n updatedAt\n name\n indexWhereClause\n indexType\n isUnique\n indexFieldMetadataList {\n id\n fieldMetadataId\n createdAt\n updatedAt\n order\n }\n }\n fieldsList {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n isUnique\n createdAt\n updatedAt\n defaultValue\n options\n settings\n isLabelSyncedWithName\n relation {\n type\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"): (typeof documents)["\n query ObjectMetadataItems {\n objects(paging: { first: 1000 }) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isRemote\n isActive\n isSystem\n createdAt\n updatedAt\n labelIdentifierFieldMetadataId\n imageIdentifierFieldMetadataId\n shortcut\n isLabelSyncedWithName\n isSearchable\n duplicateCriteria\n indexMetadataList {\n id\n createdAt\n updatedAt\n name\n indexWhereClause\n indexType\n isUnique\n indexFieldMetadataList {\n id\n fieldMetadataId\n createdAt\n updatedAt\n order\n }\n }\n fieldsList {\n id\n type\n name\n label\n description\n icon\n isCustom\n isActive\n isSystem\n isNullable\n isUnique\n createdAt\n updatedAt\n defaultValue\n options\n settings\n isLabelSyncedWithName\n relation {\n type\n sourceObjectMetadata {\n id\n nameSingular\n namePlural\n }\n targetObjectMetadata {\n id\n nameSingular\n namePlural\n }\n sourceFieldMetadata {\n id\n name\n }\n targetFieldMetadata {\n id\n name\n }\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n fragment ServerlessFunctionFields on ServerlessFunction {\n id\n name\n description\n runtime\n timeoutSeconds\n latestVersion\n latestVersionInputSchema\n publishedVersions\n createdAt\n updatedAt\n }\n"): (typeof documents)["\n fragment ServerlessFunctionFields on ServerlessFunction {\n id\n name\n description\n runtime\n timeoutSeconds\n latestVersion\n latestVersionInputSchema\n publishedVersions\n createdAt\n updatedAt\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n mutation CreateOneServerlessFunctionItem(\n $input: CreateServerlessFunctionInput!\n ) {\n createOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"): (typeof documents)["\n \n mutation CreateOneServerlessFunctionItem(\n $input: CreateServerlessFunctionInput!\n ) {\n createOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n mutation DeleteOneServerlessFunction($input: ServerlessFunctionIdInput!) {\n deleteOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"): (typeof documents)["\n \n mutation DeleteOneServerlessFunction($input: ServerlessFunctionIdInput!) {\n deleteOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n mutation ExecuteOneServerlessFunction(\n $input: ExecuteServerlessFunctionInput!\n ) {\n executeOneServerlessFunction(input: $input) {\n data\n logs\n duration\n status\n error\n }\n }\n"): (typeof documents)["\n mutation ExecuteOneServerlessFunction(\n $input: ExecuteServerlessFunctionInput!\n ) {\n executeOneServerlessFunction(input: $input) {\n data\n logs\n duration\n status\n error\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n mutation PublishOneServerlessFunction(\n $input: PublishServerlessFunctionInput!\n ) {\n publishServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"): (typeof documents)["\n \n mutation PublishOneServerlessFunction(\n $input: PublishServerlessFunctionInput!\n ) {\n publishServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n mutation UpdateOneServerlessFunction($input: UpdateServerlessFunctionInput!) {\n updateOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"): (typeof documents)["\n \n mutation UpdateOneServerlessFunction($input: UpdateServerlessFunctionInput!) {\n updateOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n query FindManyAvailablePackages($input: ServerlessFunctionIdInput!) {\n getAvailablePackages(input: $input)\n }\n"): (typeof documents)["\n query FindManyAvailablePackages($input: ServerlessFunctionIdInput!) {\n getAvailablePackages(input: $input)\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n query GetManyServerlessFunctions {\n findManyServerlessFunctions {\n ...ServerlessFunctionFields\n }\n }\n"): (typeof documents)["\n \n query GetManyServerlessFunctions {\n findManyServerlessFunctions {\n ...ServerlessFunctionFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n \n query GetOneServerlessFunction($input: ServerlessFunctionIdInput!) {\n findOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"): (typeof documents)["\n \n query GetOneServerlessFunction($input: ServerlessFunctionIdInput!) {\n findOneServerlessFunction(input: $input) {\n ...ServerlessFunctionFields\n }\n }\n"];
|
|
||||||
/**
|
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
||||||
*/
|
|
||||||
export function graphql(source: "\n query FindOneServerlessFunctionSourceCode(\n $input: GetServerlessFunctionSourceCodeInput!\n ) {\n getServerlessFunctionSourceCode(input: $input)\n }\n"): (typeof documents)["\n query FindOneServerlessFunctionSourceCode(\n $input: GetServerlessFunctionSourceCodeInput!\n ) {\n getServerlessFunctionSourceCode(input: $input)\n }\n"];
|
|
||||||
|
|
||||||
export function graphql(source: string) {
|
|
||||||
return (documents as any)[source] ?? {};
|
|
||||||
}
|
|
||||||
|
|
||||||
export type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never;
|
|
||||||
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
export * from "./gql";
|
|
||||||
2704
packages/twenty-front/src/generated/graphql.ts
Normal file
2704
packages/twenty-front/src/generated/graphql.ts
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,3 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { useCallback, useMemo } from 'react';
|
import { useCallback, useMemo } from 'react';
|
||||||
import { useRecoilCallback, useRecoilState, useRecoilValue } from 'recoil';
|
import { useRecoilCallback, useRecoilState, useRecoilValue } from 'recoil';
|
||||||
import { v4 } from 'uuid';
|
import { v4 } from 'uuid';
|
||||||
@ -29,6 +28,7 @@ import { getActivityAttachmentPathsToRestore } from '@/activities/utils/getActiv
|
|||||||
import { commandMenuPageState } from '@/command-menu/states/commandMenuPageState';
|
import { commandMenuPageState } from '@/command-menu/states/commandMenuPageState';
|
||||||
import { CommandMenuHotkeyScope } from '@/command-menu/types/CommandMenuHotkeyScope';
|
import { CommandMenuHotkeyScope } from '@/command-menu/types/CommandMenuHotkeyScope';
|
||||||
import { CommandMenuPages } from '@/command-menu/types/CommandMenuPages';
|
import { CommandMenuPages } from '@/command-menu/types/CommandMenuPages';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useDeleteManyRecords } from '@/object-record/hooks/useDeleteManyRecords';
|
import { useDeleteManyRecords } from '@/object-record/hooks/useDeleteManyRecords';
|
||||||
import { useLazyFetchAllRecords } from '@/object-record/hooks/useLazyFetchAllRecords';
|
import { useLazyFetchAllRecords } from '@/object-record/hooks/useLazyFetchAllRecords';
|
||||||
import { useRestoreManyRecords } from '@/object-record/hooks/useRestoreManyRecords';
|
import { useRestoreManyRecords } from '@/object-record/hooks/useRestoreManyRecords';
|
||||||
@ -59,7 +59,7 @@ export const ActivityRichTextEditor = ({
|
|||||||
}: ActivityRichTextEditorProps) => {
|
}: ActivityRichTextEditorProps) => {
|
||||||
const [activityInStore] = useRecoilState(recordStoreFamilyState(activityId));
|
const [activityInStore] = useRecoilState(recordStoreFamilyState(activityId));
|
||||||
|
|
||||||
const cache = useApolloClient().cache;
|
const cache = useApolloCoreClient().cache;
|
||||||
const activity = activityInStore as Task | Note | null;
|
const activity = activityInStore as Task | Note | null;
|
||||||
|
|
||||||
const { objectMetadataItem: objectMetadataItemActivity } =
|
const { objectMetadataItem: objectMetadataItemActivity } =
|
||||||
|
|||||||
@ -5,14 +5,19 @@ import { getFileType } from '@/activities/files/utils/getFileType';
|
|||||||
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
|
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
|
||||||
import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName';
|
import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName';
|
||||||
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
|
import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
|
||||||
import { FileFolder, useUploadFileMutation } from '~/generated/graphql';
|
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
import {
|
||||||
|
FileFolder,
|
||||||
|
useUploadFileMutation,
|
||||||
|
} from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const useUploadAttachmentFile = () => {
|
export const useUploadAttachmentFile = () => {
|
||||||
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
||||||
const [uploadFile] = useUploadFileMutation();
|
const coreClient = useApolloCoreClient();
|
||||||
|
const [uploadFile] = useUploadFileMutation({ client: coreClient });
|
||||||
|
|
||||||
const { createOneRecord: createOneAttachment } =
|
const { createOneRecord: createOneAttachment } =
|
||||||
useCreateOneRecord<Attachment>({
|
useCreateOneRecord<Attachment>({
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { isNonEmptyArray } from '@sniptt/guards';
|
import { isNonEmptyArray } from '@sniptt/guards';
|
||||||
|
|
||||||
import { ActivityForEditor } from '@/activities/types/ActivityForEditor';
|
import { ActivityForEditor } from '@/activities/types/ActivityForEditor';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
@ -9,7 +10,6 @@ import { modifyRecordFromCache } from '@/object-record/cache/utils/modifyRecordF
|
|||||||
import { useCreateManyRecords } from '@/object-record/hooks/useCreateManyRecords';
|
import { useCreateManyRecords } from '@/object-record/hooks/useCreateManyRecords';
|
||||||
import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
|
import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
|
||||||
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
|
|
||||||
import { createOneActivityOperationSignatureFactory } from '@/activities/graphql/operation-signatures/factories/createOneActivityOperationSignatureFactory';
|
import { createOneActivityOperationSignatureFactory } from '@/activities/graphql/operation-signatures/factories/createOneActivityOperationSignatureFactory';
|
||||||
import { NoteTarget } from '@/activities/types/NoteTarget';
|
import { NoteTarget } from '@/activities/types/NoteTarget';
|
||||||
@ -55,7 +55,7 @@ export const useCreateActivityInDB = ({
|
|||||||
objectNameSingular: activityObjectNameSingular,
|
objectNameSingular: activityObjectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
const cache = useApolloClient().cache;
|
const cache = useApolloCoreClient().cache;
|
||||||
|
|
||||||
const createActivityInDB = useRecoilCallback(
|
const createActivityInDB = useRecoilCallback(
|
||||||
({ set }) =>
|
({ set }) =>
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
|
|
||||||
import { findActivitiesOperationSignatureFactory } from '@/activities/graphql/operation-signatures/factories/findActivitiesOperationSignatureFactory';
|
import { findActivitiesOperationSignatureFactory } from '@/activities/graphql/operation-signatures/factories/findActivitiesOperationSignatureFactory';
|
||||||
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
|
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
|
||||||
import { Note } from '@/activities/types/Note';
|
import { Note } from '@/activities/types/Note';
|
||||||
import { NoteTarget } from '@/activities/types/NoteTarget';
|
import { NoteTarget } from '@/activities/types/NoteTarget';
|
||||||
import { Task } from '@/activities/types/Task';
|
import { Task } from '@/activities/types/Task';
|
||||||
import { TaskTarget } from '@/activities/types/TaskTarget';
|
import { TaskTarget } from '@/activities/types/TaskTarget';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
@ -31,7 +30,7 @@ export const usePrepareFindManyActivitiesQuery = ({
|
|||||||
objectNameSingular: activityObjectNameSingular,
|
objectNameSingular: activityObjectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
const cache = useApolloClient().cache;
|
const cache = useApolloCoreClient().cache;
|
||||||
const { objectMetadataItems } = useObjectMetadataItems();
|
const { objectMetadataItems } = useObjectMetadataItems();
|
||||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import {
|
|||||||
AnalyticsType,
|
AnalyticsType,
|
||||||
MutationTrackAnalyticsArgs,
|
MutationTrackAnalyticsArgs,
|
||||||
useTrackAnalyticsMutation,
|
useTrackAnalyticsMutation,
|
||||||
} from '~/generated/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const ANALYTICS_COOKIE_NAME = 'analyticsCookie';
|
export const ANALYTICS_COOKIE_NAME = 'analyticsCookie';
|
||||||
export const getSessionId = (): string => {
|
export const getSessionId = (): string => {
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
import { ApolloProvider as ApolloProviderBase } from '@apollo/client';
|
import { ApolloProvider as ApolloProviderBase } from '@apollo/client';
|
||||||
|
|
||||||
import { useApolloFactory } from '@/apollo/hooks/useApolloFactory';
|
import { useApolloFactory } from '@/apollo/hooks/useApolloFactory';
|
||||||
import { useRequestFreshCaptchaToken } from '@/captcha/hooks/useRequestFreshCaptchaToken';
|
|
||||||
import { createCaptchaRefreshLink } from '@/apollo/utils/captchaRefreshLink';
|
import { createCaptchaRefreshLink } from '@/apollo/utils/captchaRefreshLink';
|
||||||
|
import { useRequestFreshCaptchaToken } from '@/captcha/hooks/useRequestFreshCaptchaToken';
|
||||||
|
import { REACT_APP_SERVER_BASE_URL } from '~/config';
|
||||||
|
|
||||||
export const ApolloProvider = ({ children }: React.PropsWithChildren) => {
|
export const ApolloProvider = ({ children }: React.PropsWithChildren) => {
|
||||||
const { requestFreshCaptchaToken } = useRequestFreshCaptchaToken();
|
const { requestFreshCaptchaToken } = useRequestFreshCaptchaToken();
|
||||||
@ -10,6 +11,7 @@ export const ApolloProvider = ({ children }: React.PropsWithChildren) => {
|
|||||||
const captchaRefreshLink = createCaptchaRefreshLink(requestFreshCaptchaToken);
|
const captchaRefreshLink = createCaptchaRefreshLink(requestFreshCaptchaToken);
|
||||||
|
|
||||||
const apolloClient = useApolloFactory({
|
const apolloClient = useApolloFactory({
|
||||||
|
uri: `${REACT_APP_SERVER_BASE_URL}/metadata`,
|
||||||
connectToDevTools: true,
|
connectToDevTools: true,
|
||||||
extraLinks: [captchaRefreshLink],
|
extraLinks: [captchaRefreshLink],
|
||||||
});
|
});
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import { ClientConfigProviderEffect } from '@/client-config/components/ClientCon
|
|||||||
import { MainContextStoreProvider } from '@/context-store/components/MainContextStoreProvider';
|
import { MainContextStoreProvider } from '@/context-store/components/MainContextStoreProvider';
|
||||||
import { ErrorMessageEffect } from '@/error-handler/components/ErrorMessageEffect';
|
import { ErrorMessageEffect } from '@/error-handler/components/ErrorMessageEffect';
|
||||||
import { PromiseRejectionEffect } from '@/error-handler/components/PromiseRejectionEffect';
|
import { PromiseRejectionEffect } from '@/error-handler/components/PromiseRejectionEffect';
|
||||||
import { ApolloMetadataClientProvider } from '@/object-metadata/components/ApolloMetadataClientProvider';
|
import { ApolloCoreProvider } from '@/object-metadata/components/ApolloCoreProvider';
|
||||||
import { ObjectMetadataItemsLoadEffect } from '@/object-metadata/components/ObjectMetadataItemsLoadEffect';
|
import { ObjectMetadataItemsLoadEffect } from '@/object-metadata/components/ObjectMetadataItemsLoadEffect';
|
||||||
import { ObjectMetadataItemsProvider } from '@/object-metadata/components/ObjectMetadataItemsProvider';
|
import { ObjectMetadataItemsProvider } from '@/object-metadata/components/ObjectMetadataItemsProvider';
|
||||||
import { PrefetchDataProvider } from '@/prefetch/components/PrefetchDataProvider';
|
import { PrefetchDataProvider } from '@/prefetch/components/PrefetchDataProvider';
|
||||||
@ -44,7 +44,7 @@ export const AppRouterProviders = () => {
|
|||||||
<ChromeExtensionSidecarProvider>
|
<ChromeExtensionSidecarProvider>
|
||||||
<UserProvider>
|
<UserProvider>
|
||||||
<AuthProvider>
|
<AuthProvider>
|
||||||
<ApolloMetadataClientProvider>
|
<ApolloCoreProvider>
|
||||||
<ObjectMetadataItemsLoadEffect />
|
<ObjectMetadataItemsLoadEffect />
|
||||||
<ObjectMetadataItemsProvider>
|
<ObjectMetadataItemsProvider>
|
||||||
<PrefetchDataProvider>
|
<PrefetchDataProvider>
|
||||||
@ -67,7 +67,7 @@ export const AppRouterProviders = () => {
|
|||||||
</PrefetchDataProvider>
|
</PrefetchDataProvider>
|
||||||
<PageChangeEffect />
|
<PageChangeEffect />
|
||||||
</ObjectMetadataItemsProvider>
|
</ObjectMetadataItemsProvider>
|
||||||
</ApolloMetadataClientProvider>
|
</ApolloCoreProvider>
|
||||||
</AuthProvider>
|
</AuthProvider>
|
||||||
</UserProvider>
|
</UserProvider>
|
||||||
</ChromeExtensionSidecarProvider>
|
</ChromeExtensionSidecarProvider>
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import {
|
|||||||
GetLoginTokenFromCredentialsDocument,
|
GetLoginTokenFromCredentialsDocument,
|
||||||
SignUpDocument,
|
SignUpDocument,
|
||||||
SignUpInWorkspaceDocument,
|
SignUpInWorkspaceDocument,
|
||||||
} from '~/generated/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const queries = {
|
export const queries = {
|
||||||
getLoginTokenFromCredentials: GetLoginTokenFromCredentialsDocument,
|
getLoginTokenFromCredentials: GetLoginTokenFromCredentialsDocument,
|
||||||
|
|||||||
@ -23,10 +23,10 @@ import {
|
|||||||
useGetCurrentUserLazyQuery,
|
useGetCurrentUserLazyQuery,
|
||||||
useGetLoginTokenFromCredentialsMutation,
|
useGetLoginTokenFromCredentialsMutation,
|
||||||
useGetLoginTokenFromEmailVerificationTokenMutation,
|
useGetLoginTokenFromEmailVerificationTokenMutation,
|
||||||
useSignUpMutation,
|
|
||||||
useSignInMutation,
|
useSignInMutation,
|
||||||
useSignUpInWorkspaceMutation,
|
useSignUpInWorkspaceMutation,
|
||||||
} from '~/generated/graphql';
|
useSignUpMutation,
|
||||||
|
} from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
import { currentWorkspaceMembersState } from '@/auth/states/currentWorkspaceMembersStates';
|
import { currentWorkspaceMembersState } from '@/auth/states/currentWorkspaceMembersStates';
|
||||||
import { isDeveloperDefaultSignInPrefilledState } from '@/client-config/states/isDeveloperDefaultSignInPrefilledState';
|
import { isDeveloperDefaultSignInPrefilledState } from '@/client-config/states/isDeveloperDefaultSignInPrefilledState';
|
||||||
@ -41,6 +41,8 @@ import { getTimeFormatFromWorkspaceTimeFormat } from '@/localization/utils/getTi
|
|||||||
import { currentUserState } from '../states/currentUserState';
|
import { currentUserState } from '../states/currentUserState';
|
||||||
import { tokenPairState } from '../states/tokenPairState';
|
import { tokenPairState } from '../states/tokenPairState';
|
||||||
|
|
||||||
|
import { useSignUpInNewWorkspace } from '@/auth/sign-in-up/hooks/useSignUpInNewWorkspace';
|
||||||
|
import { availableWorkspacesState } from '@/auth/states/availableWorkspacesState';
|
||||||
import { currentUserWorkspaceState } from '@/auth/states/currentUserWorkspaceState';
|
import { currentUserWorkspaceState } from '@/auth/states/currentUserWorkspaceState';
|
||||||
import { isCurrentUserLoadedState } from '@/auth/states/isCurrentUserLoadedState';
|
import { isCurrentUserLoadedState } from '@/auth/states/isCurrentUserLoadedState';
|
||||||
import {
|
import {
|
||||||
@ -49,6 +51,11 @@ import {
|
|||||||
} from '@/auth/states/signInUpStepState';
|
} from '@/auth/states/signInUpStepState';
|
||||||
import { workspacePublicDataState } from '@/auth/states/workspacePublicDataState';
|
import { workspacePublicDataState } from '@/auth/states/workspacePublicDataState';
|
||||||
import { BillingCheckoutSession } from '@/auth/types/billingCheckoutSession.type';
|
import { BillingCheckoutSession } from '@/auth/types/billingCheckoutSession.type';
|
||||||
|
import {
|
||||||
|
countAvailableWorkspaces,
|
||||||
|
getFirstAvailableWorkspaces,
|
||||||
|
} from '@/auth/utils/availableWorkspacesUtils';
|
||||||
|
import { useRequestFreshCaptchaToken } from '@/captcha/hooks/useRequestFreshCaptchaToken';
|
||||||
import { apiConfigState } from '@/client-config/states/apiConfigState';
|
import { apiConfigState } from '@/client-config/states/apiConfigState';
|
||||||
import { captchaState } from '@/client-config/states/captchaState';
|
import { captchaState } from '@/client-config/states/captchaState';
|
||||||
import { isEmailVerificationRequiredState } from '@/client-config/states/isEmailVerificationRequiredState';
|
import { isEmailVerificationRequiredState } from '@/client-config/states/isEmailVerificationRequiredState';
|
||||||
@ -70,13 +77,6 @@ import { iconsState } from 'twenty-ui/display';
|
|||||||
import { cookieStorage } from '~/utils/cookie-storage';
|
import { cookieStorage } from '~/utils/cookie-storage';
|
||||||
import { getWorkspaceUrl } from '~/utils/getWorkspaceUrl';
|
import { getWorkspaceUrl } from '~/utils/getWorkspaceUrl';
|
||||||
import { dynamicActivate } from '~/utils/i18n/dynamicActivate';
|
import { dynamicActivate } from '~/utils/i18n/dynamicActivate';
|
||||||
import { availableWorkspacesState } from '@/auth/states/availableWorkspacesState';
|
|
||||||
import { useSignUpInNewWorkspace } from '@/auth/sign-in-up/hooks/useSignUpInNewWorkspace';
|
|
||||||
import {
|
|
||||||
countAvailableWorkspaces,
|
|
||||||
getFirstAvailableWorkspaces,
|
|
||||||
} from '@/auth/utils/availableWorkspacesUtils';
|
|
||||||
import { useRequestFreshCaptchaToken } from '@/captcha/hooks/useRequestFreshCaptchaToken';
|
|
||||||
|
|
||||||
export const useAuth = () => {
|
export const useAuth = () => {
|
||||||
const setTokenPair = useSetRecoilState(tokenPairState);
|
const setTokenPair = useSetRecoilState(tokenPairState);
|
||||||
|
|||||||
@ -7,14 +7,14 @@ import {
|
|||||||
} from '@apollo/client';
|
} from '@apollo/client';
|
||||||
|
|
||||||
import { loggerLink } from '@/apollo/utils/loggerLink';
|
import { loggerLink } from '@/apollo/utils/loggerLink';
|
||||||
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
import {
|
import {
|
||||||
AuthTokenPair,
|
AuthTokenPair,
|
||||||
RenewTokenDocument,
|
RenewTokenDocument,
|
||||||
RenewTokenMutation,
|
RenewTokenMutation,
|
||||||
RenewTokenMutationVariables,
|
RenewTokenMutationVariables,
|
||||||
} from '~/generated/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
|
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
|
||||||
|
|
||||||
const logger = loggerLink(() => 'Twenty-Refresh');
|
const logger = loggerLink(() => 'Twenty-Refresh');
|
||||||
|
|
||||||
|
|||||||
@ -4,19 +4,19 @@ import { act, renderHook } from '@testing-library/react';
|
|||||||
import { RecoilRoot } from 'recoil';
|
import { RecoilRoot } from 'recoil';
|
||||||
|
|
||||||
import { useHandleResetPassword } from '@/auth/sign-in-up/hooks/useHandleResetPassword';
|
import { useHandleResetPassword } from '@/auth/sign-in-up/hooks/useHandleResetPassword';
|
||||||
|
import { workspacePublicDataState } from '@/auth/states/workspacePublicDataState';
|
||||||
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
||||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||||
|
import { SOURCE_LOCALE } from 'twenty-shared/translations';
|
||||||
import {
|
import {
|
||||||
PublicWorkspaceDataOutput,
|
PublicWorkspaceDataOutput,
|
||||||
useEmailPasswordResetLinkMutation,
|
useEmailPasswordResetLinkMutation,
|
||||||
} from '~/generated/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
import { dynamicActivate } from '~/utils/i18n/dynamicActivate';
|
import { dynamicActivate } from '~/utils/i18n/dynamicActivate';
|
||||||
import { workspacePublicDataState } from '@/auth/states/workspacePublicDataState';
|
|
||||||
import { SOURCE_LOCALE } from 'twenty-shared/translations';
|
|
||||||
|
|
||||||
// Mocks
|
// Mocks
|
||||||
jest.mock('@/ui/feedback/snack-bar-manager/hooks/useSnackBar');
|
jest.mock('@/ui/feedback/snack-bar-manager/hooks/useSnackBar');
|
||||||
jest.mock('~/generated/graphql');
|
jest.mock('~/generated-metadata/graphql');
|
||||||
|
|
||||||
dynamicActivate(SOURCE_LOCALE);
|
dynamicActivate(SOURCE_LOCALE);
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { useOrigin } from '@/domain-manager/hooks/useOrigin';
|
|||||||
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
||||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { useResendEmailVerificationTokenMutation } from '~/generated/graphql';
|
import { useResendEmailVerificationTokenMutation } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const useHandleResendEmailVerificationToken = () => {
|
export const useHandleResendEmailVerificationToken = () => {
|
||||||
const { enqueueSnackBar } = useSnackBar();
|
const { enqueueSnackBar } = useSnackBar();
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
|
import { currentUserState } from '@/auth/states/currentUserState';
|
||||||
|
import { workspacePublicDataState } from '@/auth/states/workspacePublicDataState';
|
||||||
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
||||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||||
import { useLingui } from '@lingui/react/macro';
|
import { useLingui } from '@lingui/react/macro';
|
||||||
import { useEmailPasswordResetLinkMutation } from '~/generated/graphql';
|
|
||||||
import { workspacePublicDataState } from '@/auth/states/workspacePublicDataState';
|
|
||||||
import { useRecoilValue } from 'recoil';
|
import { useRecoilValue } from 'recoil';
|
||||||
import { currentUserState } from '@/auth/states/currentUserState';
|
import { useEmailPasswordResetLinkMutation } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const useHandleResetPassword = () => {
|
export const useHandleResetPassword = () => {
|
||||||
const { enqueueSnackBar } = useSnackBar();
|
const { enqueueSnackBar } = useSnackBar();
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
import { getWorkspaceUrl } from '~/utils/getWorkspaceUrl';
|
|
||||||
import { AppPath } from '@/types/AppPath';
|
|
||||||
import { useSignUpInNewWorkspaceMutation } from '~/generated/graphql';
|
|
||||||
import { useRedirectToWorkspaceDomain } from '@/domain-manager/hooks/useRedirectToWorkspaceDomain';
|
import { useRedirectToWorkspaceDomain } from '@/domain-manager/hooks/useRedirectToWorkspaceDomain';
|
||||||
|
import { AppPath } from '@/types/AppPath';
|
||||||
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
||||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||||
|
import { useSignUpInNewWorkspaceMutation } from '~/generated-metadata/graphql';
|
||||||
|
import { getWorkspaceUrl } from '~/utils/getWorkspaceUrl';
|
||||||
|
|
||||||
export const useSignUpInNewWorkspace = () => {
|
export const useSignUpInNewWorkspace = () => {
|
||||||
const { redirectToWorkspaceDomain } = useRedirectToWorkspaceDomain();
|
const { redirectToWorkspaceDomain } = useRedirectToWorkspaceDomain();
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
|||||||
|
|
||||||
import { AppPath } from '@/types/AppPath';
|
import { AppPath } from '@/types/AppPath';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
import { useGetWorkspaceFromInviteHashQuery } from '~/generated/graphql';
|
import { useGetWorkspaceFromInviteHashQuery } from '~/generated-metadata/graphql';
|
||||||
import { useNavigateApp } from '~/hooks/useNavigateApp';
|
import { useNavigateApp } from '~/hooks/useNavigateApp';
|
||||||
|
|
||||||
export const useWorkspaceFromInviteHash = () => {
|
export const useWorkspaceFromInviteHash = () => {
|
||||||
|
|||||||
@ -1,17 +1,27 @@
|
|||||||
import { SubscriptionInfoContainer } from '@/billing/components/SubscriptionInfoContainer';
|
import { SubscriptionInfoContainer } from '@/billing/components/SubscriptionInfoContainer';
|
||||||
import { SubscriptionInfoRowContainer } from '@/billing/components/SubscriptionInfoRowContainer';
|
import { SubscriptionInfoRowContainer } from '@/billing/components/SubscriptionInfoRowContainer';
|
||||||
|
|
||||||
|
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
||||||
|
import { formatMonthlyPrices } from '@/billing/utils/formatMonthlyPrices';
|
||||||
|
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
||||||
|
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||||
|
import { ConfirmationModal } from '@/ui/layout/modal/components/ConfirmationModal';
|
||||||
|
import { useModal } from '@/ui/layout/modal/hooks/useModal';
|
||||||
|
import { useSubscriptionStatus } from '@/workspace/hooks/useSubscriptionStatus';
|
||||||
|
import styled from '@emotion/styled';
|
||||||
|
import { useLingui } from '@lingui/react/macro';
|
||||||
|
import { useRecoilState } from 'recoil';
|
||||||
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
import { Tag } from 'twenty-ui/components';
|
||||||
import {
|
import {
|
||||||
H2Title,
|
H2Title,
|
||||||
|
IconArrowUp,
|
||||||
IconCalendarEvent,
|
IconCalendarEvent,
|
||||||
IconTag,
|
IconTag,
|
||||||
IconUsers,
|
IconUsers,
|
||||||
IconArrowUp,
|
|
||||||
} from 'twenty-ui/display';
|
} from 'twenty-ui/display';
|
||||||
import { Button } from 'twenty-ui/input';
|
import { Button } from 'twenty-ui/input';
|
||||||
import { Section } from 'twenty-ui/layout';
|
import { Section } from 'twenty-ui/layout';
|
||||||
import styled from '@emotion/styled';
|
|
||||||
import { useLingui } from '@lingui/react/macro';
|
|
||||||
import {
|
import {
|
||||||
BillingPlanKey,
|
BillingPlanKey,
|
||||||
BillingPlanOutput,
|
BillingPlanOutput,
|
||||||
@ -21,17 +31,7 @@ import {
|
|||||||
useBillingBaseProductPricesQuery,
|
useBillingBaseProductPricesQuery,
|
||||||
useSwitchSubscriptionToEnterprisePlanMutation,
|
useSwitchSubscriptionToEnterprisePlanMutation,
|
||||||
useSwitchSubscriptionToYearlyIntervalMutation,
|
useSwitchSubscriptionToYearlyIntervalMutation,
|
||||||
} from '~/generated/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
import { useRecoilState } from 'recoil';
|
|
||||||
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
|
||||||
import { Tag } from 'twenty-ui/components';
|
|
||||||
import { useModal } from '@/ui/layout/modal/hooks/useModal';
|
|
||||||
import { useSubscriptionStatus } from '@/workspace/hooks/useSubscriptionStatus';
|
|
||||||
import { ConfirmationModal } from '@/ui/layout/modal/components/ConfirmationModal';
|
|
||||||
import { formatMonthlyPrices } from '@/billing/utils/formatMonthlyPrices';
|
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
|
||||||
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
|
||||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
|
||||||
|
|
||||||
const SWITCH_BILLING_INTERVAL_MODAL_ID = 'switch-billing-interval-modal';
|
const SWITCH_BILLING_INTERVAL_MODAL_ID = 'switch-billing-interval-modal';
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import { t } from '@lingui/core/macro';
|
|||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useRecoilState } from 'recoil';
|
import { useRecoilState } from 'recoil';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
import { useEndSubscriptionTrialPeriodMutation } from '~/generated/graphql';
|
import { useEndSubscriptionTrialPeriodMutation } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const useEndSubscriptionTrialPeriod = () => {
|
export const useEndSubscriptionTrialPeriod = () => {
|
||||||
const { enqueueSnackBar } = useSnackBar();
|
const { enqueueSnackBar } = useSnackBar();
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import {
|
|||||||
BillingProductKey,
|
BillingProductKey,
|
||||||
SubscriptionStatus,
|
SubscriptionStatus,
|
||||||
useGetMeteredProductsUsageQuery,
|
useGetMeteredProductsUsageQuery,
|
||||||
} from '~/generated/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const useGetWorkflowNodeExecutionUsage = () => {
|
export const useGetWorkflowNodeExecutionUsage = () => {
|
||||||
const subscriptionStatus = useSubscriptionStatus();
|
const subscriptionStatus = useSubscriptionStatus();
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import { useRedirect } from '@/domain-manager/hooks/useRedirect';
|
||||||
import { SettingsPath } from '@/types/SettingsPath';
|
import { SettingsPath } from '@/types/SettingsPath';
|
||||||
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
||||||
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
|
||||||
@ -5,10 +6,9 @@ import { useState } from 'react';
|
|||||||
import {
|
import {
|
||||||
BillingPlanKey,
|
BillingPlanKey,
|
||||||
SubscriptionInterval,
|
SubscriptionInterval,
|
||||||
|
useCheckoutSessionMutation,
|
||||||
} from '~/generated-metadata/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
import { useCheckoutSessionMutation } from '~/generated/graphql';
|
|
||||||
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
|
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
|
||||||
import { useRedirect } from '@/domain-manager/hooks/useRedirect';
|
|
||||||
|
|
||||||
export const useHandleCheckoutSession = ({
|
export const useHandleCheckoutSession = ({
|
||||||
recurringInterval,
|
recurringInterval,
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
import { commandMenuNavigationMorphItemByPageState } from '@/command-menu/states/commandMenuNavigationMorphItemsState';
|
import { commandMenuNavigationMorphItemByPageState } from '@/command-menu/states/commandMenuNavigationMorphItemsState';
|
||||||
import { commandMenuNavigationRecordsState } from '@/command-menu/states/commandMenuNavigationRecordsState';
|
import { commandMenuNavigationRecordsState } from '@/command-menu/states/commandMenuNavigationRecordsState';
|
||||||
import { commandMenuNavigationStackState } from '@/command-menu/states/commandMenuNavigationStackState';
|
import { commandMenuNavigationStackState } from '@/command-menu/states/commandMenuNavigationStackState';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache';
|
import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache';
|
||||||
import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions';
|
import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions';
|
||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
@ -25,7 +25,7 @@ export const CommandMenuContextChipRecordSetterEffect = () => {
|
|||||||
commandMenuNavigationStackState,
|
commandMenuNavigationStackState,
|
||||||
);
|
);
|
||||||
|
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (commandMenuNavigationStack.length > 1) {
|
if (commandMenuNavigationStack.length > 1) {
|
||||||
@ -45,7 +45,7 @@ export const CommandMenuContextChipRecordSetterEffect = () => {
|
|||||||
|
|
||||||
const record = getRecordFromCache({
|
const record = getRecordFromCache({
|
||||||
recordId: morphItem.recordId,
|
recordId: morphItem.recordId,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
objectPermissionsByObjectMetadataId,
|
objectPermissionsByObjectMetadataId,
|
||||||
@ -65,7 +65,7 @@ export const CommandMenuContextChipRecordSetterEffect = () => {
|
|||||||
setCommandMenuNavigationRecords(records);
|
setCommandMenuNavigationRecords(records);
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
apolloClient.cache,
|
apolloCoreClient.cache,
|
||||||
commandMenuNavigationMorphItemByPage,
|
commandMenuNavigationMorphItemByPage,
|
||||||
commandMenuNavigationStack,
|
commandMenuNavigationStack,
|
||||||
commandMenuNavigationStack.length,
|
commandMenuNavigationStack.length,
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import { useOpenRecordInCommandMenu } from '@/command-menu/hooks/useOpenRecordIn
|
|||||||
import { commandMenuSearchState } from '@/command-menu/states/commandMenuSearchState';
|
import { commandMenuSearchState } from '@/command-menu/states/commandMenuSearchState';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions';
|
import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions';
|
||||||
import { AppPath } from '@/types/AppPath';
|
import { AppPath } from '@/types/AppPath';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
@ -19,6 +20,7 @@ import { useSearchQuery } from '~/generated/graphql';
|
|||||||
|
|
||||||
export const useCommandMenuSearchRecords = () => {
|
export const useCommandMenuSearchRecords = () => {
|
||||||
const commandMenuSearch = useRecoilValue(commandMenuSearchState);
|
const commandMenuSearch = useRecoilValue(commandMenuSearchState);
|
||||||
|
const coreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const [deferredCommandMenuSearch] = useDebounce(commandMenuSearch, 300);
|
const [deferredCommandMenuSearch] = useDebounce(commandMenuSearch, 300);
|
||||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||||
@ -36,6 +38,7 @@ export const useCommandMenuSearchRecords = () => {
|
|||||||
}, [objectMetadataItems, objectPermissionsByObjectMetadataId]);
|
}, [objectMetadataItems, objectPermissionsByObjectMetadataId]);
|
||||||
|
|
||||||
const { data: searchData, loading } = useSearchQuery({
|
const { data: searchData, loading } = useSearchQuery({
|
||||||
|
client: coreClient,
|
||||||
variables: {
|
variables: {
|
||||||
searchInput: deferredCommandMenuSearch ?? '',
|
searchInput: deferredCommandMenuSearch ?? '',
|
||||||
limit: MAX_SEARCH_RESULTS,
|
limit: MAX_SEARCH_RESULTS,
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useMutation } from '@apollo/client';
|
|||||||
|
|
||||||
import { CREATE_ONE_DATABASE_CONNECTION } from '@/databases/graphql/mutations/createOneDatabaseConnection';
|
import { CREATE_ONE_DATABASE_CONNECTION } from '@/databases/graphql/mutations/createOneDatabaseConnection';
|
||||||
import { GET_MANY_DATABASE_CONNECTIONS } from '@/databases/graphql/queries/findManyDatabaseConnections';
|
import { GET_MANY_DATABASE_CONNECTIONS } from '@/databases/graphql/queries/findManyDatabaseConnections';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import {
|
import {
|
||||||
CreateRemoteServerInput,
|
CreateRemoteServerInput,
|
||||||
CreateServerMutation,
|
CreateServerMutation,
|
||||||
@ -11,7 +11,7 @@ import {
|
|||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
|
||||||
export const useCreateOneDatabaseConnection = () => {
|
export const useCreateOneDatabaseConnection = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
const apolloMetadataClient = useApolloCoreClient();
|
||||||
|
|
||||||
const [mutate] = useMutation<
|
const [mutate] = useMutation<
|
||||||
CreateServerMutation,
|
CreateServerMutation,
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { getOperationName } from '@apollo/client/utilities';
|
|||||||
|
|
||||||
import { DELETE_ONE_DATABASE_CONNECTION } from '@/databases/graphql/mutations/deleteOneDatabaseConnection';
|
import { DELETE_ONE_DATABASE_CONNECTION } from '@/databases/graphql/mutations/deleteOneDatabaseConnection';
|
||||||
import { GET_MANY_DATABASE_CONNECTIONS } from '@/databases/graphql/queries/findManyDatabaseConnections';
|
import { GET_MANY_DATABASE_CONNECTIONS } from '@/databases/graphql/queries/findManyDatabaseConnections';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import {
|
import {
|
||||||
DeleteServerMutation,
|
DeleteServerMutation,
|
||||||
DeleteServerMutationVariables,
|
DeleteServerMutationVariables,
|
||||||
@ -11,7 +11,7 @@ import {
|
|||||||
} from '~/generated-metadata/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const useDeleteOneDatabaseConnection = () => {
|
export const useDeleteOneDatabaseConnection = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
const apolloMetadataClient = useApolloCoreClient();
|
||||||
|
|
||||||
const [mutate] = useMutation<
|
const [mutate] = useMutation<
|
||||||
DeleteServerMutation,
|
DeleteServerMutation,
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useQuery, WatchQueryFetchPolicy } from '@apollo/client';
|
|||||||
|
|
||||||
import { GET_ONE_DATABASE_CONNECTION } from '@/databases/graphql/queries/findOneDatabaseConnection';
|
import { GET_ONE_DATABASE_CONNECTION } from '@/databases/graphql/queries/findOneDatabaseConnection';
|
||||||
import { getForeignDataWrapperType } from '@/databases/utils/getForeignDataWrapperType';
|
import { getForeignDataWrapperType } from '@/databases/utils/getForeignDataWrapperType';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import {
|
import {
|
||||||
GetOneDatabaseConnectionQuery,
|
GetOneDatabaseConnectionQuery,
|
||||||
GetOneDatabaseConnectionQueryVariables,
|
GetOneDatabaseConnectionQueryVariables,
|
||||||
@ -21,7 +21,7 @@ export const useGetDatabaseConnection = ({
|
|||||||
skip,
|
skip,
|
||||||
fetchPolicy,
|
fetchPolicy,
|
||||||
}: UseGetDatabaseConnectionParams) => {
|
}: UseGetDatabaseConnectionParams) => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
const apolloMetadataClient = useApolloCoreClient();
|
||||||
const foreignDataWrapperType = getForeignDataWrapperType(databaseKey);
|
const foreignDataWrapperType = getForeignDataWrapperType(databaseKey);
|
||||||
|
|
||||||
const fetchPolicyOption = fetchPolicy ? { fetchPolicy: fetchPolicy } : {};
|
const fetchPolicyOption = fetchPolicy ? { fetchPolicy: fetchPolicy } : {};
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useQuery, WatchQueryFetchPolicy } from '@apollo/client';
|
import { useQuery, WatchQueryFetchPolicy } from '@apollo/client';
|
||||||
|
|
||||||
import { GET_MANY_REMOTE_TABLES } from '@/databases/graphql/queries/findManyRemoteTables';
|
import { GET_MANY_REMOTE_TABLES } from '@/databases/graphql/queries/findManyRemoteTables';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import {
|
import {
|
||||||
GetManyRemoteTablesQuery,
|
GetManyRemoteTablesQuery,
|
||||||
GetManyRemoteTablesQueryVariables,
|
GetManyRemoteTablesQueryVariables,
|
||||||
@ -20,7 +20,7 @@ export const useGetDatabaseConnectionTables = ({
|
|||||||
shouldFetchPendingSchemaUpdates,
|
shouldFetchPendingSchemaUpdates,
|
||||||
fetchPolicy,
|
fetchPolicy,
|
||||||
}: UseGetDatabaseConnectionTablesParams) => {
|
}: UseGetDatabaseConnectionTablesParams) => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
const apolloMetadataClient = useApolloCoreClient();
|
||||||
|
|
||||||
const fetchPolicyOption = fetchPolicy ? { fetchPolicy: fetchPolicy } : {};
|
const fetchPolicyOption = fetchPolicy ? { fetchPolicy: fetchPolicy } : {};
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { useQuery } from '@apollo/client';
|
|||||||
|
|
||||||
import { GET_MANY_DATABASE_CONNECTIONS } from '@/databases/graphql/queries/findManyDatabaseConnections';
|
import { GET_MANY_DATABASE_CONNECTIONS } from '@/databases/graphql/queries/findManyDatabaseConnections';
|
||||||
import { getForeignDataWrapperType } from '@/databases/utils/getForeignDataWrapperType';
|
import { getForeignDataWrapperType } from '@/databases/utils/getForeignDataWrapperType';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import {
|
import {
|
||||||
GetManyDatabaseConnectionsQuery,
|
GetManyDatabaseConnectionsQuery,
|
||||||
GetManyDatabaseConnectionsQueryVariables,
|
GetManyDatabaseConnectionsQueryVariables,
|
||||||
@ -17,7 +17,7 @@ export const useGetDatabaseConnections = ({
|
|||||||
databaseKey,
|
databaseKey,
|
||||||
skip,
|
skip,
|
||||||
}: UseGetDatabaseConnectionsParams) => {
|
}: UseGetDatabaseConnectionsParams) => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
const apolloMetadataClient = useApolloCoreClient();
|
||||||
const foreignDataWrapperType = getForeignDataWrapperType(databaseKey);
|
const foreignDataWrapperType = getForeignDataWrapperType(databaseKey);
|
||||||
|
|
||||||
const { data } = useQuery<
|
const { data } = useQuery<
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useCallback } from 'react';
|
|||||||
|
|
||||||
import { SYNC_REMOTE_TABLE } from '@/databases/graphql/mutations/syncRemoteTable';
|
import { SYNC_REMOTE_TABLE } from '@/databases/graphql/mutations/syncRemoteTable';
|
||||||
import { modifyRemoteTableFromCache } from '@/databases/utils/modifyRemoteTableFromCache';
|
import { modifyRemoteTableFromCache } from '@/databases/utils/modifyRemoteTableFromCache';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
||||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
import { useFindManyRecordsQuery } from '@/object-record/hooks/useFindManyRecordsQuery';
|
import { useFindManyRecordsQuery } from '@/object-record/hooks/useFindManyRecordsQuery';
|
||||||
@ -15,7 +15,7 @@ import {
|
|||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
|
||||||
export const useSyncRemoteTable = () => {
|
export const useSyncRemoteTable = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
const apolloMetadataClient = useApolloCoreClient();
|
||||||
const apolloClient = useApolloClient();
|
const apolloClient = useApolloClient();
|
||||||
|
|
||||||
const { refetch: refetchObjectMetadataItems } =
|
const { refetch: refetchObjectMetadataItems } =
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useCallback } from 'react';
|
|||||||
|
|
||||||
import { SYNC_REMOTE_TABLE_SCHEMA_CHANGES } from '@/databases/graphql/mutations/syncRemoteTableSchemaChanges';
|
import { SYNC_REMOTE_TABLE_SCHEMA_CHANGES } from '@/databases/graphql/mutations/syncRemoteTableSchemaChanges';
|
||||||
import { modifyRemoteTableFromCache } from '@/databases/utils/modifyRemoteTableFromCache';
|
import { modifyRemoteTableFromCache } from '@/databases/utils/modifyRemoteTableFromCache';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
||||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
import { useFindManyRecordsQuery } from '@/object-record/hooks/useFindManyRecordsQuery';
|
import { useFindManyRecordsQuery } from '@/object-record/hooks/useFindManyRecordsQuery';
|
||||||
@ -15,7 +15,7 @@ import {
|
|||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
|
||||||
export const useSyncRemoteTableSchemaChanges = () => {
|
export const useSyncRemoteTableSchemaChanges = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
const apolloMetadataClient = useApolloCoreClient();
|
||||||
const apolloClient = useApolloClient();
|
const apolloClient = useApolloClient();
|
||||||
|
|
||||||
const { refetch: refetchObjectMetadataItems } =
|
const { refetch: refetchObjectMetadataItems } =
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { useCallback } from 'react';
|
|||||||
|
|
||||||
import { UNSYNC_REMOTE_TABLE } from '@/databases/graphql/mutations/unsyncRemoteTable';
|
import { UNSYNC_REMOTE_TABLE } from '@/databases/graphql/mutations/unsyncRemoteTable';
|
||||||
import { modifyRemoteTableFromCache } from '@/databases/utils/modifyRemoteTableFromCache';
|
import { modifyRemoteTableFromCache } from '@/databases/utils/modifyRemoteTableFromCache';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
|
||||||
import {
|
import {
|
||||||
RemoteTableInput,
|
RemoteTableInput,
|
||||||
@ -13,7 +13,7 @@ import {
|
|||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
|
|
||||||
export const useUnsyncRemoteTable = () => {
|
export const useUnsyncRemoteTable = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
const apolloMetadataClient = useApolloCoreClient();
|
||||||
const { refetch: refetchObjectMetadataItems } =
|
const { refetch: refetchObjectMetadataItems } =
|
||||||
useFindManyObjectMetadataItems();
|
useFindManyObjectMetadataItems();
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useMutation } from '@apollo/client';
|
import { useMutation } from '@apollo/client';
|
||||||
|
|
||||||
import { UPDATE_ONE_DATABASE_CONNECTION } from '@/databases/graphql/mutations/updateOneDatabaseConnection';
|
import { UPDATE_ONE_DATABASE_CONNECTION } from '@/databases/graphql/mutations/updateOneDatabaseConnection';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import {
|
import {
|
||||||
UpdateRemoteServerInput,
|
UpdateRemoteServerInput,
|
||||||
UpdateServerMutation,
|
UpdateServerMutation,
|
||||||
@ -9,7 +9,7 @@ import {
|
|||||||
} from '~/generated-metadata/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const useUpdateOneDatabaseConnection = () => {
|
export const useUpdateOneDatabaseConnection = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
const apolloMetadataClient = useApolloCoreClient();
|
||||||
|
|
||||||
const [mutate] = useMutation<
|
const [mutate] = useMutation<
|
||||||
UpdateServerMutation,
|
UpdateServerMutation,
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { useRedirectToDefaultDomain } from '@/domain-manager/hooks/useRedirectTo
|
|||||||
import { workspaceAuthProvidersState } from '@/workspace/states/workspaceAuthProvidersState';
|
import { workspaceAuthProvidersState } from '@/workspace/states/workspaceAuthProvidersState';
|
||||||
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
import { useGetPublicWorkspaceDataByDomainQuery } from '~/generated/graphql';
|
import { useGetPublicWorkspaceDataByDomainQuery } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const useGetPublicWorkspaceDataByDomain = () => {
|
export const useGetPublicWorkspaceDataByDomain = () => {
|
||||||
const { isDefaultDomain } = useIsCurrentLocationOnDefaultDomain();
|
const { isDefaultDomain } = useIsCurrentLocationOnDefaultDomain();
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { isDefined } from 'twenty-shared/utils';
|
|||||||
import {
|
import {
|
||||||
SettingPermissionType,
|
SettingPermissionType,
|
||||||
useBillingPortalSessionQuery,
|
useBillingPortalSessionQuery,
|
||||||
} from '~/generated/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
|
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
|
||||||
|
|
||||||
export const InformationBannerBillingSubscriptionPaused = () => {
|
export const InformationBannerBillingSubscriptionPaused = () => {
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { isDefined } from 'twenty-shared/utils';
|
|||||||
import {
|
import {
|
||||||
SettingPermissionType,
|
SettingPermissionType,
|
||||||
useBillingPortalSessionQuery,
|
useBillingPortalSessionQuery,
|
||||||
} from '~/generated/graphql';
|
} from '~/generated-metadata/graphql';
|
||||||
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
|
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
|
||||||
|
|
||||||
export const InformationBannerFailPaymentInfo = () => {
|
export const InformationBannerFailPaymentInfo = () => {
|
||||||
|
|||||||
@ -0,0 +1,21 @@
|
|||||||
|
import { useApolloFactory } from '@/apollo/hooks/useApolloFactory';
|
||||||
|
import { REACT_APP_SERVER_BASE_URL } from '~/config';
|
||||||
|
|
||||||
|
import { ApolloCoreClientContext } from '../contexts/ApolloCoreClientContext';
|
||||||
|
|
||||||
|
export const ApolloCoreProvider = ({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: React.ReactNode;
|
||||||
|
}) => {
|
||||||
|
const apolloCoreClient = useApolloFactory({
|
||||||
|
uri: `${REACT_APP_SERVER_BASE_URL}/graphql`,
|
||||||
|
connectToDevTools: true, // @Felix I am not sure if this is correct, should be false?
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ApolloCoreClientContext.Provider value={apolloCoreClient}>
|
||||||
|
{children}
|
||||||
|
</ApolloCoreClientContext.Provider>
|
||||||
|
);
|
||||||
|
};
|
||||||
@ -1,21 +0,0 @@
|
|||||||
import { useApolloFactory } from '@/apollo/hooks/useApolloFactory';
|
|
||||||
import { REACT_APP_SERVER_BASE_URL } from '~/config';
|
|
||||||
|
|
||||||
import { ApolloMetadataClientContext } from '../contexts/ApolloClientMetadataContext';
|
|
||||||
|
|
||||||
export const ApolloMetadataClientProvider = ({
|
|
||||||
children,
|
|
||||||
}: {
|
|
||||||
children: React.ReactNode;
|
|
||||||
}) => {
|
|
||||||
const apolloMetadataClient = useApolloFactory({
|
|
||||||
uri: `${REACT_APP_SERVER_BASE_URL}/metadata`,
|
|
||||||
connectToDevTools: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
return (
|
|
||||||
<ApolloMetadataClientContext.Provider value={apolloMetadataClient}>
|
|
||||||
{children}
|
|
||||||
</ApolloMetadataClientContext.Provider>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
@ -1,5 +1,5 @@
|
|||||||
import { createContext } from 'react';
|
import { createContext } from 'react';
|
||||||
import { ApolloClient, NormalizedCacheObject } from '@apollo/client';
|
import { ApolloClient, NormalizedCacheObject } from '@apollo/client';
|
||||||
|
|
||||||
export const ApolloMetadataClientContext =
|
export const ApolloCoreClientContext =
|
||||||
createContext<ApolloClient<NormalizedCacheObject> | null>(null);
|
createContext<ApolloClient<NormalizedCacheObject> | null>(null);
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
import { ReactNode } from 'react';
|
||||||
|
|
||||||
|
import { ApolloCoreClientContext } from '@/object-metadata/contexts/ApolloCoreClientContext';
|
||||||
|
import { mockedApolloCoreClient } from '~/testing/mockedApolloCoreClient';
|
||||||
|
|
||||||
|
export const ApolloCoreClientMockedProvider = ({
|
||||||
|
children,
|
||||||
|
}: {
|
||||||
|
children: ReactNode;
|
||||||
|
}) => {
|
||||||
|
return (
|
||||||
|
<ApolloCoreClientContext.Provider value={mockedApolloCoreClient}>
|
||||||
|
{mockedApolloCoreClient ? children : ''}
|
||||||
|
</ApolloCoreClientContext.Provider>
|
||||||
|
);
|
||||||
|
};
|
||||||
@ -1,16 +0,0 @@
|
|||||||
import { ReactNode } from 'react';
|
|
||||||
|
|
||||||
import { ApolloMetadataClientContext } from '@/object-metadata/contexts/ApolloClientMetadataContext';
|
|
||||||
import { mockedMetadataApolloClient } from '~/testing/mockedMetadataApolloClient';
|
|
||||||
|
|
||||||
export const ApolloMetadataClientMockedProvider = ({
|
|
||||||
children,
|
|
||||||
}: {
|
|
||||||
children: ReactNode;
|
|
||||||
}) => {
|
|
||||||
return (
|
|
||||||
<ApolloMetadataClientContext.Provider value={mockedMetadataApolloClient}>
|
|
||||||
{mockedMetadataApolloClient ? children : ''}
|
|
||||||
</ApolloMetadataClientContext.Provider>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
@ -3,7 +3,7 @@ import { act } from 'react';
|
|||||||
|
|
||||||
import { useFieldMetadataItem } from '@/object-metadata/hooks/useFieldMetadataItem';
|
import { useFieldMetadataItem } from '@/object-metadata/hooks/useFieldMetadataItem';
|
||||||
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
||||||
import { FieldMetadataType, RelationType } from '~/generated/graphql';
|
import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper';
|
import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper';
|
||||||
import {
|
import {
|
||||||
|
|||||||
@ -0,0 +1,18 @@
|
|||||||
|
import { ApolloCoreClientContext } from '@/object-metadata/contexts/ApolloCoreClientContext';
|
||||||
|
import { useApolloClient } from '@apollo/client';
|
||||||
|
import { useContext } from 'react';
|
||||||
|
|
||||||
|
export const useApolloCoreClient = () => {
|
||||||
|
const apolloCoreClient = useContext(ApolloCoreClientContext);
|
||||||
|
const apolloClient = useApolloClient();
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV === 'test') {
|
||||||
|
return apolloClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!apolloCoreClient) {
|
||||||
|
throw new Error('ApolloCoreClient not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
return apolloCoreClient;
|
||||||
|
};
|
||||||
@ -1,18 +0,0 @@
|
|||||||
import { ApolloMetadataClientContext } from '@/object-metadata/contexts/ApolloClientMetadataContext';
|
|
||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { useContext } from 'react';
|
|
||||||
|
|
||||||
export const useApolloMetadataClient = () => {
|
|
||||||
const apolloMetadataClient = useContext(ApolloMetadataClientContext);
|
|
||||||
const apolloClient = useApolloClient();
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'test') {
|
|
||||||
return apolloClient;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!apolloMetadataClient) {
|
|
||||||
throw new Error('ApolloMetadataClient not found');
|
|
||||||
}
|
|
||||||
|
|
||||||
return apolloMetadataClient;
|
|
||||||
};
|
|
||||||
@ -9,19 +9,15 @@ import {
|
|||||||
import { CREATE_ONE_FIELD_METADATA_ITEM } from '../graphql/mutations';
|
import { CREATE_ONE_FIELD_METADATA_ITEM } from '../graphql/mutations';
|
||||||
|
|
||||||
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem';
|
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem';
|
||||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
|
||||||
|
|
||||||
export const useCreateOneFieldMetadataItem = () => {
|
export const useCreateOneFieldMetadataItem = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
|
||||||
const { refreshObjectMetadataItems } =
|
const { refreshObjectMetadataItems } =
|
||||||
useRefreshObjectMetadataItems('network-only');
|
useRefreshObjectMetadataItems('network-only');
|
||||||
|
|
||||||
const [mutate] = useMutation<
|
const [mutate] = useMutation<
|
||||||
CreateOneFieldMetadataItemMutation,
|
CreateOneFieldMetadataItemMutation,
|
||||||
CreateOneFieldMetadataItemMutationVariables
|
CreateOneFieldMetadataItemMutationVariables
|
||||||
>(CREATE_ONE_FIELD_METADATA_ITEM, {
|
>(CREATE_ONE_FIELD_METADATA_ITEM);
|
||||||
client: apolloMetadataClient,
|
|
||||||
});
|
|
||||||
|
|
||||||
const createOneFieldMetadataItem = async (input: CreateFieldInput) => {
|
const createOneFieldMetadataItem = async (input: CreateFieldInput) => {
|
||||||
const result = await mutate({
|
const result = await mutate({
|
||||||
|
|||||||
@ -10,21 +10,17 @@ import { CREATE_ONE_OBJECT_METADATA_ITEM } from '../graphql/mutations';
|
|||||||
|
|
||||||
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem';
|
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem';
|
||||||
import { useRefreshCachedViews } from '@/views/hooks/useRefreshViews';
|
import { useRefreshCachedViews } from '@/views/hooks/useRefreshViews';
|
||||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
|
||||||
|
|
||||||
export const useCreateOneObjectMetadataItem = () => {
|
export const useCreateOneObjectMetadataItem = () => {
|
||||||
const { refreshCachedViews } = useRefreshCachedViews();
|
const { refreshCachedViews } = useRefreshCachedViews();
|
||||||
|
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
|
||||||
const { refreshObjectMetadataItems } =
|
const { refreshObjectMetadataItems } =
|
||||||
useRefreshObjectMetadataItems('network-only');
|
useRefreshObjectMetadataItems('network-only');
|
||||||
|
|
||||||
const [mutate] = useMutation<
|
const [mutate] = useMutation<
|
||||||
CreateOneObjectMetadataItemMutation,
|
CreateOneObjectMetadataItemMutation,
|
||||||
CreateOneObjectMetadataItemMutationVariables
|
CreateOneObjectMetadataItemMutationVariables
|
||||||
>(CREATE_ONE_OBJECT_METADATA_ITEM, {
|
>(CREATE_ONE_OBJECT_METADATA_ITEM);
|
||||||
client: apolloMetadataClient,
|
|
||||||
});
|
|
||||||
|
|
||||||
const createOneObjectMetadataItem = async (input: CreateObjectInput) => {
|
const createOneObjectMetadataItem = async (input: CreateObjectInput) => {
|
||||||
const createdObjectMetadata = await mutate({
|
const createdObjectMetadata = await mutate({
|
||||||
|
|||||||
@ -10,17 +10,12 @@ import { recordIndexKanbanAggregateOperationState } from '@/object-record/record
|
|||||||
import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations';
|
import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations';
|
||||||
import { useRecoilState } from 'recoil';
|
import { useRecoilState } from 'recoil';
|
||||||
import { DELETE_ONE_FIELD_METADATA_ITEM } from '../graphql/mutations';
|
import { DELETE_ONE_FIELD_METADATA_ITEM } from '../graphql/mutations';
|
||||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
|
||||||
|
|
||||||
export const useDeleteOneFieldMetadataItem = () => {
|
export const useDeleteOneFieldMetadataItem = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
|
||||||
|
|
||||||
const [mutate] = useMutation<
|
const [mutate] = useMutation<
|
||||||
DeleteOneFieldMetadataItemMutation,
|
DeleteOneFieldMetadataItemMutation,
|
||||||
DeleteOneFieldMetadataItemMutationVariables
|
DeleteOneFieldMetadataItemMutationVariables
|
||||||
>(DELETE_ONE_FIELD_METADATA_ITEM, {
|
>(DELETE_ONE_FIELD_METADATA_ITEM);
|
||||||
client: apolloMetadataClient,
|
|
||||||
});
|
|
||||||
|
|
||||||
const { refreshObjectMetadataItems } =
|
const { refreshObjectMetadataItems } =
|
||||||
useRefreshObjectMetadataItems('network-only');
|
useRefreshObjectMetadataItems('network-only');
|
||||||
|
|||||||
@ -8,17 +8,12 @@ import {
|
|||||||
import { DELETE_ONE_OBJECT_METADATA_ITEM } from '../graphql/mutations';
|
import { DELETE_ONE_OBJECT_METADATA_ITEM } from '../graphql/mutations';
|
||||||
|
|
||||||
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem';
|
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem';
|
||||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
|
||||||
|
|
||||||
export const useDeleteOneObjectMetadataItem = () => {
|
export const useDeleteOneObjectMetadataItem = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
|
||||||
|
|
||||||
const [mutate] = useMutation<
|
const [mutate] = useMutation<
|
||||||
DeleteOneObjectMetadataItemMutation,
|
DeleteOneObjectMetadataItemMutation,
|
||||||
DeleteOneObjectMetadataItemMutationVariables
|
DeleteOneObjectMetadataItemMutationVariables
|
||||||
>(DELETE_ONE_OBJECT_METADATA_ITEM, {
|
>(DELETE_ONE_OBJECT_METADATA_ITEM);
|
||||||
client: apolloMetadataClient,
|
|
||||||
});
|
|
||||||
|
|
||||||
const { refreshObjectMetadataItems } =
|
const { refreshObjectMetadataItems } =
|
||||||
useRefreshObjectMetadataItems('network-only');
|
useRefreshObjectMetadataItems('network-only');
|
||||||
|
|||||||
@ -12,23 +12,18 @@ import { logError } from '~/utils/logError';
|
|||||||
import { FIND_MANY_OBJECT_METADATA_ITEMS } from '../graphql/queries';
|
import { FIND_MANY_OBJECT_METADATA_ITEMS } from '../graphql/queries';
|
||||||
import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '../utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems';
|
import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '../utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems';
|
||||||
|
|
||||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
|
||||||
|
|
||||||
export const useFindManyObjectMetadataItems = ({
|
export const useFindManyObjectMetadataItems = ({
|
||||||
skip,
|
skip,
|
||||||
}: {
|
}: {
|
||||||
skip?: boolean;
|
skip?: boolean;
|
||||||
} = {}) => {
|
} = {}) => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
|
||||||
|
|
||||||
const { enqueueSnackBar } = useSnackBar();
|
const { enqueueSnackBar } = useSnackBar();
|
||||||
|
|
||||||
const { data, loading, error, refetch } = useQuery<
|
const { data, loading, error, refetch } = useQuery<
|
||||||
ObjectMetadataItemsQuery,
|
ObjectMetadataItemsQuery,
|
||||||
ObjectMetadataItemsQueryVariables
|
ObjectMetadataItemsQueryVariables
|
||||||
>(FIND_MANY_OBJECT_METADATA_ITEMS, {
|
>(FIND_MANY_OBJECT_METADATA_ITEMS, {
|
||||||
client: apolloMetadataClient ?? undefined,
|
skip,
|
||||||
skip: skip || !apolloMetadataClient,
|
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
logError('useFindManyObjectMetadataItems error : ' + error);
|
logError('useFindManyObjectMetadataItems error : ' + error);
|
||||||
enqueueSnackBar(`${error.message}`, {
|
enqueueSnackBar(`${error.message}`, {
|
||||||
|
|||||||
@ -1,10 +1,9 @@
|
|||||||
import { FIND_MANY_OBJECT_METADATA_ITEMS } from '@/object-metadata/graphql/queries';
|
import { FIND_MANY_OBJECT_METADATA_ITEMS } from '@/object-metadata/graphql/queries';
|
||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
|
||||||
import { isAppWaitingForFreshObjectMetadataState } from '@/object-metadata/states/isAppWaitingForFreshObjectMetadataState';
|
import { isAppWaitingForFreshObjectMetadataState } from '@/object-metadata/states/isAppWaitingForFreshObjectMetadataState';
|
||||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '@/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems';
|
import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '@/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems';
|
||||||
import { FetchPolicy } from '@apollo/client';
|
import { FetchPolicy, useApolloClient } from '@apollo/client';
|
||||||
import { useRecoilCallback } from 'recoil';
|
import { useRecoilCallback } from 'recoil';
|
||||||
import { ObjectMetadataItemsQuery } from '~/generated-metadata/graphql';
|
import { ObjectMetadataItemsQuery } from '~/generated-metadata/graphql';
|
||||||
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
||||||
@ -12,7 +11,7 @@ import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
|||||||
export const useRefreshObjectMetadataItems = (
|
export const useRefreshObjectMetadataItems = (
|
||||||
fetchPolicy: FetchPolicy = 'network-only',
|
fetchPolicy: FetchPolicy = 'network-only',
|
||||||
) => {
|
) => {
|
||||||
const client = useApolloMetadataClient();
|
const client = useApolloClient();
|
||||||
|
|
||||||
const refreshObjectMetadataItems = async () => {
|
const refreshObjectMetadataItems = async () => {
|
||||||
const result = await client.query<ObjectMetadataItemsQuery>({
|
const result = await client.query<ObjectMetadataItemsQuery>({
|
||||||
|
|||||||
@ -18,10 +18,8 @@ import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getR
|
|||||||
import { RecordGqlConnection } from '@/object-record/graphql/types/RecordGqlConnection';
|
import { RecordGqlConnection } from '@/object-record/graphql/types/RecordGqlConnection';
|
||||||
import { useSetRecordGroups } from '@/object-record/record-group/hooks/useSetRecordGroups';
|
import { useSetRecordGroups } from '@/object-record/record-group/hooks/useSetRecordGroups';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
|
||||||
|
|
||||||
export const useUpdateOneFieldMetadataItem = () => {
|
export const useUpdateOneFieldMetadataItem = () => {
|
||||||
const apolloMetadataClient = useApolloMetadataClient();
|
|
||||||
const apolloClient = useApolloClient();
|
const apolloClient = useApolloClient();
|
||||||
const { refreshObjectMetadataItems } =
|
const { refreshObjectMetadataItems } =
|
||||||
useRefreshObjectMetadataItems('network-only');
|
useRefreshObjectMetadataItems('network-only');
|
||||||
@ -48,9 +46,7 @@ export const useUpdateOneFieldMetadataItem = () => {
|
|||||||
const [mutate] = useMutation<
|
const [mutate] = useMutation<
|
||||||
UpdateOneFieldMetadataItemMutation,
|
UpdateOneFieldMetadataItemMutation,
|
||||||
UpdateOneFieldMetadataItemMutationVariables
|
UpdateOneFieldMetadataItemMutationVariables
|
||||||
>(UPDATE_ONE_FIELD_METADATA_ITEM, {
|
>(UPDATE_ONE_FIELD_METADATA_ITEM);
|
||||||
client: apolloMetadataClient ?? undefined,
|
|
||||||
});
|
|
||||||
|
|
||||||
const updateOneFieldMetadataItem = async ({
|
const updateOneFieldMetadataItem = async ({
|
||||||
objectMetadataId,
|
objectMetadataId,
|
||||||
|
|||||||
@ -9,18 +9,13 @@ import {
|
|||||||
import { UPDATE_ONE_OBJECT_METADATA_ITEM } from '../graphql/mutations';
|
import { UPDATE_ONE_OBJECT_METADATA_ITEM } from '../graphql/mutations';
|
||||||
|
|
||||||
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem';
|
import { useRefreshObjectMetadataItems } from '@/object-metadata/hooks/useRefreshObjectMetadataItem';
|
||||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
|
||||||
|
|
||||||
// TODO: Slice the Apollo store synchronously in the update function instead of subscribing, so we can use update after read in the same function call
|
// TODO: Slice the Apollo store synchronously in the update function instead of subscribing, so we can use update after read in the same function call
|
||||||
export const useUpdateOneObjectMetadataItem = () => {
|
export const useUpdateOneObjectMetadataItem = () => {
|
||||||
const apolloClientMetadata = useApolloMetadataClient();
|
|
||||||
|
|
||||||
const [mutate, { loading }] = useMutation<
|
const [mutate, { loading }] = useMutation<
|
||||||
UpdateOneObjectMetadataItemMutation,
|
UpdateOneObjectMetadataItemMutation,
|
||||||
UpdateOneObjectMetadataItemMutationVariables
|
UpdateOneObjectMetadataItemMutationVariables
|
||||||
>(UPDATE_ONE_OBJECT_METADATA_ITEM, {
|
>(UPDATE_ONE_OBJECT_METADATA_ITEM);
|
||||||
client: apolloClientMetadata ?? undefined,
|
|
||||||
});
|
|
||||||
|
|
||||||
const { refreshObjectMetadataItems } =
|
const { refreshObjectMetadataItems } =
|
||||||
useRefreshObjectMetadataItems('network-only');
|
useRefreshObjectMetadataItems('network-only');
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import gql from 'graphql-tag';
|
import gql from 'graphql-tag';
|
||||||
import { useRecoilValue } from 'recoil';
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
|
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
|
||||||
@ -24,7 +24,7 @@ export const useCreateOneRecordInCache = <T extends ObjectRecord>({
|
|||||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||||
|
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
return (record: ObjectRecord) => {
|
return (record: ObjectRecord) => {
|
||||||
const prefilledRecord = prefillRecord({
|
const prefilledRecord = prefillRecord({
|
||||||
@ -60,7 +60,7 @@ export const useCreateOneRecordInCache = <T extends ObjectRecord>({
|
|||||||
...recordToCreateWithNestedConnections,
|
...recordToCreateWithNestedConnections,
|
||||||
};
|
};
|
||||||
|
|
||||||
apolloClient.writeFragment({
|
apolloCoreClient.writeFragment({
|
||||||
id: `${capitalize(objectMetadataItem.nameSingular)}:${record.id}`,
|
id: `${capitalize(objectMetadataItem.nameSingular)}:${record.id}`,
|
||||||
fragment,
|
fragment,
|
||||||
data: cachedObjectRecord,
|
data: cachedObjectRecord,
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
|
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { deleteRecordFromCache } from '@/object-record/cache/utils/deleteRecordFromCache';
|
import { deleteRecordFromCache } from '@/object-record/cache/utils/deleteRecordFromCache';
|
||||||
@ -10,7 +9,7 @@ export const useDeleteRecordFromCache = ({
|
|||||||
}: {
|
}: {
|
||||||
objectNameSingular: string;
|
objectNameSingular: string;
|
||||||
}) => {
|
}) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
@ -23,7 +22,7 @@ export const useDeleteRecordFromCache = ({
|
|||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
recordToDestroy,
|
recordToDestroy,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
import { useRecoilValue } from 'recoil';
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache';
|
import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache';
|
||||||
@ -27,12 +27,12 @@ export const useGetRecordFromCache = ({
|
|||||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||||
|
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
return useCallback(
|
return useCallback(
|
||||||
<T extends ObjectRecord = ObjectRecord>(
|
<T extends ObjectRecord = ObjectRecord>(
|
||||||
recordId: string,
|
recordId: string,
|
||||||
cache = apolloClient.cache,
|
cache = apolloCoreClient.cache,
|
||||||
) => {
|
) => {
|
||||||
return getRecordFromCache<T>({
|
return getRecordFromCache<T>({
|
||||||
cache,
|
cache,
|
||||||
@ -44,7 +44,7 @@ export const useGetRecordFromCache = ({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
apolloClient.cache,
|
apolloCoreClient.cache,
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
appliedRecordGqlFields,
|
appliedRecordGqlFields,
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
|
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection';
|
import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection';
|
||||||
@ -15,7 +14,7 @@ export const useReadFindManyRecordsQueryInCache = ({
|
|||||||
}: {
|
}: {
|
||||||
objectMetadataItem: ObjectMetadataItem;
|
objectMetadataItem: ObjectMetadataItem;
|
||||||
}) => {
|
}) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItems } = useObjectMetadataItems();
|
const { objectMetadataItems } = useObjectMetadataItems();
|
||||||
|
|
||||||
@ -38,7 +37,7 @@ export const useReadFindManyRecordsQueryInCache = ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const existingRecordsQueryResult =
|
const existingRecordsQueryResult =
|
||||||
apolloClient.readQuery<RecordGqlOperationFindManyResult>({
|
apolloCoreClient.readQuery<RecordGqlOperationFindManyResult>({
|
||||||
query: findManyRecordsQueryForCacheRead,
|
query: findManyRecordsQueryForCacheRead,
|
||||||
variables: queryVariables,
|
variables: queryVariables,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { useRecoilValue } from 'recoil';
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { getRecordConnectionFromRecords } from '@/object-record/cache/utils/getRecordConnectionFromRecords';
|
import { getRecordConnectionFromRecords } from '@/object-record/cache/utils/getRecordConnectionFromRecords';
|
||||||
@ -14,7 +14,7 @@ export const useUpsertFindManyRecordsQueryInCache = ({
|
|||||||
}: {
|
}: {
|
||||||
objectMetadataItem: ObjectMetadataItem;
|
objectMetadataItem: ObjectMetadataItem;
|
||||||
}) => {
|
}) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||||
@ -48,7 +48,7 @@ export const useUpsertFindManyRecordsQueryInCache = ({
|
|||||||
computeReferences,
|
computeReferences,
|
||||||
});
|
});
|
||||||
|
|
||||||
apolloClient.writeQuery({
|
apolloCoreClient.writeQuery({
|
||||||
query: findManyRecordsQueryForCacheOverwrite,
|
query: findManyRecordsQueryForCacheOverwrite,
|
||||||
variables: queryVariables,
|
variables: queryVariables,
|
||||||
data: {
|
data: {
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
|
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { useFindOneRecordQuery } from '@/object-record/hooks/useFindOneRecordQuery';
|
import { useFindOneRecordQuery } from '@/object-record/hooks/useFindOneRecordQuery';
|
||||||
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
|
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||||
@ -13,7 +12,7 @@ export const useUpsertFindOneRecordQueryInCache = ({
|
|||||||
recordGqlFields: Record<string, any>;
|
recordGqlFields: Record<string, any>;
|
||||||
withSoftDeleted?: boolean;
|
withSoftDeleted?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { findOneRecordQuery } = useFindOneRecordQuery({
|
const { findOneRecordQuery } = useFindOneRecordQuery({
|
||||||
objectNameSingular: objectMetadataItem.nameSingular,
|
objectNameSingular: objectMetadataItem.nameSingular,
|
||||||
@ -30,7 +29,7 @@ export const useUpsertFindOneRecordQueryInCache = ({
|
|||||||
objectRecordId: string;
|
objectRecordId: string;
|
||||||
objectRecordToOverwrite: T;
|
objectRecordToOverwrite: T;
|
||||||
}) => {
|
}) => {
|
||||||
apolloClient.writeQuery({
|
apolloCoreClient.writeQuery({
|
||||||
query: findOneRecordQuery,
|
query: findOneRecordQuery,
|
||||||
variables: { objectRecordId },
|
variables: { objectRecordId },
|
||||||
data: {
|
data: {
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
type GenerateDepthOneWithoutRelationsRecordGqlFields = {
|
type GenerateDepthOneWithoutRelationsRecordGqlFields = {
|
||||||
objectMetadataItem: ObjectMetadataItem;
|
objectMetadataItem: ObjectMetadataItem;
|
||||||
|
|||||||
@ -5,7 +5,8 @@ import { useAggregateRecordsQuery } from '@/object-record/hooks/useAggregateReco
|
|||||||
import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations';
|
import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations';
|
||||||
import { generateAggregateQuery } from '@/object-record/utils/generateAggregateQuery';
|
import { generateAggregateQuery } from '@/object-record/utils/generateAggregateQuery';
|
||||||
import { renderHook } from '@testing-library/react';
|
import { renderHook } from '@testing-library/react';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper';
|
||||||
|
|
||||||
jest.mock('@/object-metadata/hooks/useObjectMetadataItem');
|
jest.mock('@/object-metadata/hooks/useObjectMetadataItem');
|
||||||
jest.mock('@/object-record/utils/generateAggregateQuery');
|
jest.mock('@/object-record/utils/generateAggregateQuery');
|
||||||
@ -50,6 +51,10 @@ const mockObjectMetadataItem: ObjectMetadataItem = {
|
|||||||
isSystem: false,
|
isSystem: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const Wrapper = getJestMetadataAndApolloMocksWrapper({
|
||||||
|
apolloMocks: [],
|
||||||
|
});
|
||||||
|
|
||||||
describe('useAggregateRecordsQuery', () => {
|
describe('useAggregateRecordsQuery', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jest.clearAllMocks();
|
jest.clearAllMocks();
|
||||||
@ -67,13 +72,15 @@ describe('useAggregateRecordsQuery', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle simple count operation', () => {
|
it('should handle simple count operation', () => {
|
||||||
const { result } = renderHook(() =>
|
const { result } = renderHook(
|
||||||
useAggregateRecordsQuery({
|
() =>
|
||||||
objectNameSingular: 'company',
|
useAggregateRecordsQuery({
|
||||||
recordGqlFieldsAggregate: {
|
objectNameSingular: 'company',
|
||||||
name: [AggregateOperations.COUNT],
|
recordGqlFieldsAggregate: {
|
||||||
},
|
name: [AggregateOperations.COUNT],
|
||||||
}),
|
},
|
||||||
|
}),
|
||||||
|
{ wrapper: Wrapper },
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(result.current.gqlFieldToFieldMap).toEqual({
|
expect(result.current.gqlFieldToFieldMap).toEqual({
|
||||||
@ -88,13 +95,15 @@ describe('useAggregateRecordsQuery', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle field aggregation', () => {
|
it('should handle field aggregation', () => {
|
||||||
const { result } = renderHook(() =>
|
const { result } = renderHook(
|
||||||
useAggregateRecordsQuery({
|
() =>
|
||||||
objectNameSingular: 'company',
|
useAggregateRecordsQuery({
|
||||||
recordGqlFieldsAggregate: {
|
objectNameSingular: 'company',
|
||||||
amount: [AggregateOperations.SUM],
|
recordGqlFieldsAggregate: {
|
||||||
},
|
amount: [AggregateOperations.SUM],
|
||||||
}),
|
},
|
||||||
|
}),
|
||||||
|
{ wrapper: Wrapper },
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(result.current.gqlFieldToFieldMap).toEqual({
|
expect(result.current.gqlFieldToFieldMap).toEqual({
|
||||||
@ -111,26 +120,30 @@ describe('useAggregateRecordsQuery', () => {
|
|||||||
|
|
||||||
it('should throw error for invalid aggregation operation', () => {
|
it('should throw error for invalid aggregation operation', () => {
|
||||||
expect(() =>
|
expect(() =>
|
||||||
renderHook(() =>
|
renderHook(
|
||||||
useAggregateRecordsQuery({
|
() =>
|
||||||
objectNameSingular: 'company',
|
useAggregateRecordsQuery({
|
||||||
recordGqlFieldsAggregate: {
|
objectNameSingular: 'company',
|
||||||
name: [AggregateOperations.SUM],
|
recordGqlFieldsAggregate: {
|
||||||
},
|
name: [AggregateOperations.SUM],
|
||||||
}),
|
},
|
||||||
|
}),
|
||||||
|
{ wrapper: Wrapper },
|
||||||
),
|
),
|
||||||
).toThrow();
|
).toThrow();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle multiple aggregations', () => {
|
it('should handle multiple aggregations', () => {
|
||||||
const { result } = renderHook(() =>
|
const { result } = renderHook(
|
||||||
useAggregateRecordsQuery({
|
() =>
|
||||||
objectNameSingular: 'company',
|
useAggregateRecordsQuery({
|
||||||
recordGqlFieldsAggregate: {
|
objectNameSingular: 'company',
|
||||||
amount: [AggregateOperations.SUM],
|
recordGqlFieldsAggregate: {
|
||||||
name: [AggregateOperations.COUNT],
|
amount: [AggregateOperations.SUM],
|
||||||
},
|
name: [AggregateOperations.COUNT],
|
||||||
}),
|
},
|
||||||
|
}),
|
||||||
|
{ wrapper: Wrapper },
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(result.current.gqlFieldToFieldMap).toHaveProperty('sumAmount');
|
expect(result.current.gqlFieldToFieldMap).toHaveProperty('sumAmount');
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useRefetchAggregateQueries } from '@/object-record/hooks/useRefetchAggregateQueries';
|
import { useRefetchAggregateQueries } from '@/object-record/hooks/useRefetchAggregateQueries';
|
||||||
import { getAggregateQueryName } from '@/object-record/utils/getAggregateQueryName';
|
import { getAggregateQueryName } from '@/object-record/utils/getAggregateQueryName';
|
||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { renderHook } from '@testing-library/react';
|
import { renderHook } from '@testing-library/react';
|
||||||
|
|
||||||
jest.mock('@apollo/client', () => ({
|
jest.mock('@/object-metadata/hooks/useApolloCoreClient', () => ({
|
||||||
useApolloClient: jest.fn(),
|
useApolloCoreClient: jest.fn(),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
describe('useRefetchAggregateQueries', () => {
|
describe('useRefetchAggregateQueries', () => {
|
||||||
@ -15,7 +15,7 @@ describe('useRefetchAggregateQueries', () => {
|
|||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jest.clearAllMocks();
|
jest.clearAllMocks();
|
||||||
(useApolloClient as jest.Mock).mockReturnValue(mockApolloClient);
|
(useApolloCoreClient as jest.Mock).mockReturnValue(mockApolloClient);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should refetch queries', async () => {
|
it('should refetch queries', async () => {
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { useQuery } from '@apollo/client';
|
import { useQuery } from '@apollo/client';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { RecordGqlFieldsAggregate } from '@/object-record/graphql/types/RecordGqlFieldsAggregate';
|
import { RecordGqlFieldsAggregate } from '@/object-record/graphql/types/RecordGqlFieldsAggregate';
|
||||||
import { RecordGqlOperationFilter } from '@/object-record/graphql/types/RecordGqlOperationFilter';
|
import { RecordGqlOperationFilter } from '@/object-record/graphql/types/RecordGqlOperationFilter';
|
||||||
@ -31,6 +32,8 @@ export const useAggregateRecords = <T extends AggregateRecordsData>({
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { aggregateQuery, gqlFieldToFieldMap } = useAggregateRecordsQuery({
|
const { aggregateQuery, gqlFieldToFieldMap } = useAggregateRecordsQuery({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
recordGqlFieldsAggregate,
|
recordGqlFieldsAggregate,
|
||||||
@ -49,6 +52,7 @@ export const useAggregateRecords = <T extends AggregateRecordsData>({
|
|||||||
variables: {
|
variables: {
|
||||||
filter,
|
filter,
|
||||||
},
|
},
|
||||||
|
client: apolloCoreClient,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { RecordGqlFields } from '@/object-record/graphql/types/RecordGqlFields';
|
import { RecordGqlFields } from '@/object-record/graphql/types/RecordGqlFields';
|
||||||
import { RecordGqlFieldsAggregate } from '@/object-record/graphql/types/RecordGqlFieldsAggregate';
|
import { RecordGqlFieldsAggregate } from '@/object-record/graphql/types/RecordGqlFieldsAggregate';
|
||||||
@ -25,6 +26,7 @@ export const useAggregateRecordsQuery = ({
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
const availableAggregations = useMemo(
|
const availableAggregations = useMemo(
|
||||||
() => getAvailableAggregationsFromObjectFields(objectMetadataItem.fields),
|
() => getAvailableAggregationsFromObjectFields(objectMetadataItem.fields),
|
||||||
[objectMetadataItem.fields],
|
[objectMetadataItem.fields],
|
||||||
@ -49,6 +51,9 @@ export const useAggregateRecordsQuery = ({
|
|||||||
recordGqlFields[fieldToQuery] = true;
|
recordGqlFields[fieldToQuery] = true;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
client: apolloCoreClient,
|
||||||
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const aggregateQuery = generateAggregateQuery({
|
const aggregateQuery = generateAggregateQuery({
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
|
|
||||||
import { CustomError } from '@/error-handler/CustomError';
|
import { CustomError } from '@/error-handler/CustomError';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
||||||
@ -20,7 +19,7 @@ export const useAttachRelatedRecordFromRecord = ({
|
|||||||
recordObjectNameSingular,
|
recordObjectNameSingular,
|
||||||
fieldNameOnRecordObject,
|
fieldNameOnRecordObject,
|
||||||
}: useAttachRelatedRecordFromRecordProps) => {
|
}: useAttachRelatedRecordFromRecordProps) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular: recordObjectNameSingular,
|
objectNameSingular: recordObjectNameSingular,
|
||||||
@ -98,7 +97,7 @@ export const useAttachRelatedRecordFromRecord = ({
|
|||||||
updateRecordFromCache({
|
updateRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem: relatedObjectMetadataItem,
|
objectMetadataItem: relatedObjectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
record: {
|
record: {
|
||||||
...cachedRelatedRecord,
|
...cachedRelatedRecord,
|
||||||
[fieldOnRelatedObject]: previousRecord,
|
[fieldOnRelatedObject]: previousRecord,
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { v4 } from 'uuid';
|
import { v4 } from 'uuid';
|
||||||
|
|
||||||
import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect';
|
import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect';
|
||||||
import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect';
|
import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect';
|
||||||
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { hasObjectMetadataItemFieldCreatedBy } from '@/object-metadata/utils/hasObjectMetadataItemFieldCreatedBy';
|
import { hasObjectMetadataItemFieldCreatedBy } from '@/object-metadata/utils/hasObjectMetadataItemFieldCreatedBy';
|
||||||
@ -49,7 +49,7 @@ export const useCreateManyRecords = <
|
|||||||
shouldMatchRootQueryFilter,
|
shouldMatchRootQueryFilter,
|
||||||
shouldRefetchAggregateQueries = true,
|
shouldRefetchAggregateQueries = true,
|
||||||
}: useCreateManyRecordsProps) => {
|
}: useCreateManyRecordsProps) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
@ -120,7 +120,7 @@ export const useCreateManyRecords = <
|
|||||||
if (shouldDoOptimisticEffect) {
|
if (shouldDoOptimisticEffect) {
|
||||||
const optimisticRecordInput = {
|
const optimisticRecordInput = {
|
||||||
...computeOptimisticRecordFromInput({
|
...computeOptimisticRecordFromInput({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
currentWorkspaceMember: currentWorkspaceMember,
|
currentWorkspaceMember: currentWorkspaceMember,
|
||||||
@ -158,7 +158,7 @@ export const useCreateManyRecords = <
|
|||||||
.filter(isDefined);
|
.filter(isDefined);
|
||||||
|
|
||||||
triggerCreateRecordsOptimisticEffect({
|
triggerCreateRecordsOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
recordsToCreate: recordNodeCreatedInCache,
|
recordsToCreate: recordNodeCreatedInCache,
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
@ -171,7 +171,7 @@ export const useCreateManyRecords = <
|
|||||||
objectMetadataItem.namePlural,
|
objectMetadataItem.namePlural,
|
||||||
);
|
);
|
||||||
|
|
||||||
const createdObjects = await apolloClient
|
const createdObjects = await apolloCoreClient
|
||||||
.mutate({
|
.mutate({
|
||||||
mutation: createManyRecordsMutation,
|
mutation: createManyRecordsMutation,
|
||||||
variables: {
|
variables: {
|
||||||
@ -204,13 +204,13 @@ export const useCreateManyRecords = <
|
|||||||
deleteRecordFromCache({
|
deleteRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
recordToDestroy,
|
recordToDestroy,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
triggerDestroyRecordsOptimisticEffect({
|
triggerDestroyRecordsOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
recordsToDestroy: recordsCreatedInCache,
|
recordsToDestroy: recordsCreatedInCache,
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { v4 } from 'uuid';
|
import { v4 } from 'uuid';
|
||||||
|
|
||||||
import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect';
|
import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect';
|
||||||
import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect';
|
import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect';
|
||||||
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { useCreateOneRecordInCache } from '@/object-record/cache/hooks/useCreateOneRecordInCache';
|
import { useCreateOneRecordInCache } from '@/object-record/cache/hooks/useCreateOneRecordInCache';
|
||||||
@ -39,7 +39,7 @@ export const useCreateOneRecord = <
|
|||||||
skipPostOptimisticEffect = false,
|
skipPostOptimisticEffect = false,
|
||||||
shouldMatchRootQueryFilter,
|
shouldMatchRootQueryFilter,
|
||||||
}: useCreateOneRecordProps) => {
|
}: useCreateOneRecordProps) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
@ -83,7 +83,7 @@ export const useCreateOneRecord = <
|
|||||||
};
|
};
|
||||||
|
|
||||||
const optimisticRecordInput = computeOptimisticRecordFromInput({
|
const optimisticRecordInput = computeOptimisticRecordFromInput({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
currentWorkspaceMember: currentWorkspaceMember,
|
currentWorkspaceMember: currentWorkspaceMember,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
@ -111,7 +111,7 @@ export const useCreateOneRecord = <
|
|||||||
|
|
||||||
if (skipPostOptimisticEffect === false && optimisticRecordNode !== null) {
|
if (skipPostOptimisticEffect === false && optimisticRecordNode !== null) {
|
||||||
triggerCreateRecordsOptimisticEffect({
|
triggerCreateRecordsOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
recordsToCreate: [optimisticRecordNode],
|
recordsToCreate: [optimisticRecordNode],
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
@ -124,7 +124,7 @@ export const useCreateOneRecord = <
|
|||||||
const mutationResponseField =
|
const mutationResponseField =
|
||||||
getCreateOneRecordMutationResponseField(objectNameSingular);
|
getCreateOneRecordMutationResponseField(objectNameSingular);
|
||||||
|
|
||||||
const createdObject = await apolloClient
|
const createdObject = await apolloCoreClient
|
||||||
.mutate({
|
.mutate({
|
||||||
mutation: createOneRecordMutation,
|
mutation: createOneRecordMutation,
|
||||||
variables: {
|
variables: {
|
||||||
@ -155,12 +155,12 @@ export const useCreateOneRecord = <
|
|||||||
deleteRecordFromCache({
|
deleteRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
recordToDestroy: recordCreatedInCache,
|
recordToDestroy: recordCreatedInCache,
|
||||||
});
|
});
|
||||||
|
|
||||||
triggerDestroyRecordsOptimisticEffect({
|
triggerDestroyRecordsOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
recordsToDestroy: [recordCreatedInCache],
|
recordsToDestroy: [recordCreatedInCache],
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
|
|
||||||
import { triggerUpdateRecordOptimisticEffectByBatch } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch';
|
import { triggerUpdateRecordOptimisticEffectByBatch } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffectByBatch';
|
||||||
import { apiConfigState } from '@/client-config/states/apiConfigState';
|
import { apiConfigState } from '@/client-config/states/apiConfigState';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
||||||
@ -38,7 +37,7 @@ export const useDeleteManyRecords = ({
|
|||||||
const mutationPageSize =
|
const mutationPageSize =
|
||||||
apiConfig?.mutationMaximumAffectedRecords ?? DEFAULT_MUTATION_BATCH_SIZE;
|
apiConfig?.mutationMaximumAffectedRecords ?? DEFAULT_MUTATION_BATCH_SIZE;
|
||||||
|
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
@ -79,7 +78,9 @@ export const useDeleteManyRecords = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const cachedRecords = batchedIdsToDelete
|
const cachedRecords = batchedIdsToDelete
|
||||||
.map((idToDelete) => getRecordFromCache(idToDelete, apolloClient.cache))
|
.map((idToDelete) =>
|
||||||
|
getRecordFromCache(idToDelete, apolloCoreClient.cache),
|
||||||
|
)
|
||||||
.filter(isDefined);
|
.filter(isDefined);
|
||||||
const currentTimestamp = new Date().toISOString();
|
const currentTimestamp = new Date().toISOString();
|
||||||
if (!skipOptimisticEffect) {
|
if (!skipOptimisticEffect) {
|
||||||
@ -113,7 +114,7 @@ export const useDeleteManyRecords = ({
|
|||||||
updateRecordFromCache({
|
updateRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
record: computedOptimisticRecord,
|
record: computedOptimisticRecord,
|
||||||
recordGqlFields,
|
recordGqlFields,
|
||||||
objectPermissionsByObjectMetadataId,
|
objectPermissionsByObjectMetadataId,
|
||||||
@ -125,7 +126,7 @@ export const useDeleteManyRecords = ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
triggerUpdateRecordOptimisticEffectByBatch({
|
triggerUpdateRecordOptimisticEffectByBatch({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
currentRecords: cachedRecordsNode,
|
currentRecords: cachedRecordsNode,
|
||||||
updatedRecords: computedOptimisticRecordsNode,
|
updatedRecords: computedOptimisticRecordsNode,
|
||||||
@ -133,7 +134,7 @@ export const useDeleteManyRecords = ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const deletedRecordsResponse = await apolloClient
|
const deletedRecordsResponse = await apolloCoreClient
|
||||||
.mutate<Record<string, ObjectRecord[]>>({
|
.mutate<Record<string, ObjectRecord[]>>({
|
||||||
mutation: deleteManyRecordsMutation,
|
mutation: deleteManyRecordsMutation,
|
||||||
variables: {
|
variables: {
|
||||||
@ -155,7 +156,7 @@ export const useDeleteManyRecords = ({
|
|||||||
updateRecordFromCache({
|
updateRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
record: { ...cachedRecord, deletedAt: null },
|
record: { ...cachedRecord, deletedAt: null },
|
||||||
recordGqlFields,
|
recordGqlFields,
|
||||||
objectPermissionsByObjectMetadataId,
|
objectPermissionsByObjectMetadataId,
|
||||||
@ -195,7 +196,7 @@ export const useDeleteManyRecords = ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
triggerUpdateRecordOptimisticEffectByBatch({
|
triggerUpdateRecordOptimisticEffectByBatch({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
currentRecords: computedOptimisticRecordsNode,
|
currentRecords: computedOptimisticRecordsNode,
|
||||||
updatedRecords: cachedRecordsNode,
|
updatedRecords: cachedRecordsNode,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
import { triggerUpdateRecordOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect';
|
import { triggerUpdateRecordOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
||||||
@ -23,7 +23,7 @@ type useDeleteOneRecordProps = {
|
|||||||
export const useDeleteOneRecord = ({
|
export const useDeleteOneRecord = ({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
}: useDeleteOneRecordProps) => {
|
}: useDeleteOneRecordProps) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
@ -48,7 +48,10 @@ export const useDeleteOneRecord = ({
|
|||||||
|
|
||||||
const deleteOneRecord = useCallback(
|
const deleteOneRecord = useCallback(
|
||||||
async (idToDelete: string) => {
|
async (idToDelete: string) => {
|
||||||
const cachedRecord = getRecordFromCache(idToDelete, apolloClient.cache);
|
const cachedRecord = getRecordFromCache(
|
||||||
|
idToDelete,
|
||||||
|
apolloCoreClient.cache,
|
||||||
|
);
|
||||||
const cachedRecordNode = getRecordNodeFromRecord<ObjectRecord>({
|
const cachedRecordNode = getRecordNodeFromRecord<ObjectRecord>({
|
||||||
record: cachedRecord,
|
record: cachedRecord,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
@ -82,14 +85,14 @@ export const useDeleteOneRecord = ({
|
|||||||
updateRecordFromCache({
|
updateRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
record: computedOptimisticRecord,
|
record: computedOptimisticRecord,
|
||||||
recordGqlFields,
|
recordGqlFields,
|
||||||
objectPermissionsByObjectMetadataId,
|
objectPermissionsByObjectMetadataId,
|
||||||
});
|
});
|
||||||
|
|
||||||
triggerUpdateRecordOptimisticEffect({
|
triggerUpdateRecordOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
currentRecord: cachedRecordNode,
|
currentRecord: cachedRecordNode,
|
||||||
updatedRecord: optimisticRecordNode,
|
updatedRecord: optimisticRecordNode,
|
||||||
@ -97,7 +100,7 @@ export const useDeleteOneRecord = ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const deletedRecord = await apolloClient
|
const deletedRecord = await apolloCoreClient
|
||||||
.mutate({
|
.mutate({
|
||||||
mutation: deleteOneRecordMutation,
|
mutation: deleteOneRecordMutation,
|
||||||
variables: {
|
variables: {
|
||||||
@ -129,7 +132,7 @@ export const useDeleteOneRecord = ({
|
|||||||
updateRecordFromCache({
|
updateRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
record: {
|
record: {
|
||||||
...cachedRecord,
|
...cachedRecord,
|
||||||
deletedAt: null,
|
deletedAt: null,
|
||||||
@ -139,7 +142,7 @@ export const useDeleteOneRecord = ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
triggerUpdateRecordOptimisticEffect({
|
triggerUpdateRecordOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
currentRecord: optimisticRecordNode,
|
currentRecord: optimisticRecordNode,
|
||||||
updatedRecord: cachedRecordNode,
|
updatedRecord: cachedRecordNode,
|
||||||
@ -153,7 +156,7 @@ export const useDeleteOneRecord = ({
|
|||||||
return deletedRecord.data?.[mutationResponseField] ?? null;
|
return deletedRecord.data?.[mutationResponseField] ?? null;
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
apolloClient,
|
apolloCoreClient,
|
||||||
deleteOneRecordMutation,
|
deleteOneRecordMutation,
|
||||||
getRecordFromCache,
|
getRecordFromCache,
|
||||||
mutationResponseField,
|
mutationResponseField,
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
|
|
||||||
import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect';
|
import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect';
|
||||||
import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect';
|
import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect';
|
||||||
import { apiConfigState } from '@/client-config/states/apiConfigState';
|
import { apiConfigState } from '@/client-config/states/apiConfigState';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
||||||
@ -35,7 +34,7 @@ export const useDestroyManyRecords = ({
|
|||||||
const mutationPageSize =
|
const mutationPageSize =
|
||||||
apiConfig?.mutationMaximumAffectedRecords ?? DEFAULT_MUTATION_BATCH_SIZE;
|
apiConfig?.mutationMaximumAffectedRecords ?? DEFAULT_MUTATION_BATCH_SIZE;
|
||||||
|
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
@ -75,10 +74,10 @@ export const useDestroyManyRecords = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const cachedRecords = batchedIdToDestroy
|
const cachedRecords = batchedIdToDestroy
|
||||||
.map((recordId) => getRecordFromCache(recordId, apolloClient.cache))
|
.map((recordId) => getRecordFromCache(recordId, apolloCoreClient.cache))
|
||||||
.filter(isDefined);
|
.filter(isDefined);
|
||||||
|
|
||||||
const destroyedRecordsResponse = await apolloClient
|
const destroyedRecordsResponse = await apolloCoreClient
|
||||||
.mutate<Record<string, ObjectRecord[]>>({
|
.mutate<Record<string, ObjectRecord[]>>({
|
||||||
mutation: destroyManyRecordsMutation,
|
mutation: destroyManyRecordsMutation,
|
||||||
variables: {
|
variables: {
|
||||||
@ -117,7 +116,7 @@ export const useDestroyManyRecords = ({
|
|||||||
.catch((error: Error) => {
|
.catch((error: Error) => {
|
||||||
if (cachedRecords.length > 0 && !skipOptimisticEffect) {
|
if (cachedRecords.length > 0 && !skipOptimisticEffect) {
|
||||||
triggerCreateRecordsOptimisticEffect({
|
triggerCreateRecordsOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
recordsToCreate: cachedRecords,
|
recordsToCreate: cachedRecords,
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect';
|
import { triggerCreateRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerCreateRecordsOptimisticEffect';
|
||||||
import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect';
|
import { triggerDestroyRecordsOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerDestroyRecordsOptimisticEffect';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
||||||
@ -19,7 +19,7 @@ type useDestroyOneRecordProps = {
|
|||||||
export const useDestroyOneRecord = ({
|
export const useDestroyOneRecord = ({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
}: useDestroyOneRecordProps) => {
|
}: useDestroyOneRecordProps) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
@ -40,10 +40,10 @@ export const useDestroyOneRecord = ({
|
|||||||
async (idToDestroy: string) => {
|
async (idToDestroy: string) => {
|
||||||
const originalRecord = getRecordFromCache(
|
const originalRecord = getRecordFromCache(
|
||||||
idToDestroy,
|
idToDestroy,
|
||||||
apolloClient.cache,
|
apolloCoreClient.cache,
|
||||||
);
|
);
|
||||||
|
|
||||||
const deletedRecord = await apolloClient
|
const deletedRecord = await apolloCoreClient
|
||||||
.mutate({
|
.mutate({
|
||||||
mutation: destroyOneRecordMutation,
|
mutation: destroyOneRecordMutation,
|
||||||
variables: { idToDestroy },
|
variables: { idToDestroy },
|
||||||
@ -70,7 +70,7 @@ export const useDestroyOneRecord = ({
|
|||||||
.catch((error: Error) => {
|
.catch((error: Error) => {
|
||||||
if (isDefined(originalRecord)) {
|
if (isDefined(originalRecord)) {
|
||||||
triggerCreateRecordsOptimisticEffect({
|
triggerCreateRecordsOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
recordsToCreate: [originalRecord],
|
recordsToCreate: [originalRecord],
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
@ -84,7 +84,7 @@ export const useDestroyOneRecord = ({
|
|||||||
return deletedRecord.data?.[mutationResponseField] ?? null;
|
return deletedRecord.data?.[mutationResponseField] ?? null;
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
apolloClient,
|
apolloCoreClient,
|
||||||
destroyOneRecordMutation,
|
destroyOneRecordMutation,
|
||||||
getRecordFromCache,
|
getRecordFromCache,
|
||||||
mutationResponseField,
|
mutationResponseField,
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { Reference, useApolloClient } from '@apollo/client';
|
import { Reference } from '@apollo/client';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { getRefName } from '@/object-record/cache/utils/getRefName';
|
import { getRefName } from '@/object-record/cache/utils/getRefName';
|
||||||
import { modifyRecordFromCache } from '@/object-record/cache/utils/modifyRecordFromCache';
|
import { modifyRecordFromCache } from '@/object-record/cache/utils/modifyRecordFromCache';
|
||||||
@ -14,7 +15,7 @@ export const useDetachRelatedRecordFromRecord = ({
|
|||||||
recordObjectNameSingular,
|
recordObjectNameSingular,
|
||||||
fieldNameOnRecordObject,
|
fieldNameOnRecordObject,
|
||||||
}: useDetachRelatedRecordFromRecordProps) => {
|
}: useDetachRelatedRecordFromRecordProps) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular: recordObjectNameSingular,
|
objectNameSingular: recordObjectNameSingular,
|
||||||
@ -49,7 +50,7 @@ export const useDetachRelatedRecordFromRecord = ({
|
|||||||
}) => {
|
}) => {
|
||||||
modifyRecordFromCache({
|
modifyRecordFromCache({
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
fieldModifiers: {
|
fieldModifiers: {
|
||||||
[fieldNameOnRecordObject]: (
|
[fieldNameOnRecordObject]: (
|
||||||
fieldNameOnRecordObjectConnection,
|
fieldNameOnRecordObjectConnection,
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import { OnFindManyRecordsCompleted } from '@/object-record/types/OnFindManyReco
|
|||||||
import { filterUniqueRecordEdgesByCursor } from '@/object-record/utils/filterUniqueRecordEdgesByCursor';
|
import { filterUniqueRecordEdgesByCursor } from '@/object-record/utils/filterUniqueRecordEdgesByCursor';
|
||||||
import { getQueryIdentifier } from '@/object-record/utils/getQueryIdentifier';
|
import { getQueryIdentifier } from '@/object-record/utils/getQueryIdentifier';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { capitalize, isDefined } from 'twenty-shared/utils';
|
import { capitalize, isDefined } from 'twenty-shared/utils';
|
||||||
import { cursorFamilyState } from '../states/cursorFamilyState';
|
import { cursorFamilyState } from '../states/cursorFamilyState';
|
||||||
import { hasNextPageFamilyState } from '../states/hasNextPageFamilyState';
|
import { hasNextPageFamilyState } from '../states/hasNextPageFamilyState';
|
||||||
@ -76,6 +77,8 @@ export const useFetchMoreRecordsWithPagination = <
|
|||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
onCompleted,
|
onCompleted,
|
||||||
}: UseFindManyRecordsStateParams<T>) => {
|
}: UseFindManyRecordsStateParams<T>) => {
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const queryIdentifier = getQueryIdentifier({
|
const queryIdentifier = getQueryIdentifier({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
filter,
|
filter,
|
||||||
@ -121,6 +124,7 @@ export const useFetchMoreRecordsWithPagination = <
|
|||||||
lastCursor: isNonEmptyString(lastCursorLocal)
|
lastCursor: isNonEmptyString(lastCursorLocal)
|
||||||
? lastCursorLocal
|
? lastCursorLocal
|
||||||
: undefined,
|
: undefined,
|
||||||
|
client: apolloCoreClient,
|
||||||
},
|
},
|
||||||
updateQuery: (prev, { fetchMoreResult }) => {
|
updateQuery: (prev, { fetchMoreResult }) => {
|
||||||
const previousEdges =
|
const previousEdges =
|
||||||
@ -203,6 +207,7 @@ export const useFetchMoreRecordsWithPagination = <
|
|||||||
onCompleted,
|
onCompleted,
|
||||||
handleFindManyRecordsError,
|
handleFindManyRecordsError,
|
||||||
queryIdentifier,
|
queryIdentifier,
|
||||||
|
apolloCoreClient,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { useQuery } from '@apollo/client';
|
import { useQuery } from '@apollo/client';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection';
|
import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection';
|
||||||
@ -25,6 +26,8 @@ export const useFindDuplicateRecords = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
}) => {
|
}) => {
|
||||||
const findDuplicateQueryStateIdentifier = objectNameSingular;
|
const findDuplicateQueryStateIdentifier = objectNameSingular;
|
||||||
|
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
@ -47,6 +50,7 @@ export const useFindDuplicateRecords = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
variables: {
|
variables: {
|
||||||
ids: objectRecordIds,
|
ids: objectRecordIds,
|
||||||
},
|
},
|
||||||
|
client: apolloCoreClient,
|
||||||
onCompleted: (data) => {
|
onCompleted: (data) => {
|
||||||
onCompleted?.(data[queryResponseField]);
|
onCompleted?.(data[queryResponseField]);
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { useQuery, WatchQueryFetchPolicy } from '@apollo/client';
|
import { useQuery, WatchQueryFetchPolicy } from '@apollo/client';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { RecordGqlOperationFindManyResult } from '@/object-record/graphql/types/RecordGqlOperationFindManyResult';
|
import { RecordGqlOperationFindManyResult } from '@/object-record/graphql/types/RecordGqlOperationFindManyResult';
|
||||||
@ -40,7 +41,7 @@ export const useFindManyRecords = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
const { findManyRecordsQuery } = useFindManyRecordsQuery({
|
const { findManyRecordsQuery } = useFindManyRecordsQuery({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
recordGqlFields,
|
recordGqlFields,
|
||||||
@ -94,6 +95,7 @@ export const useFindManyRecords = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
fetchPolicy: fetchPolicy,
|
fetchPolicy: fetchPolicy,
|
||||||
onCompleted: handleFindManyRecordsCompleted,
|
onCompleted: handleFindManyRecordsCompleted,
|
||||||
onError: handleFindManyRecordsError,
|
onError: handleFindManyRecordsError,
|
||||||
|
client: apolloCoreClient,
|
||||||
});
|
});
|
||||||
|
|
||||||
const { fetchMoreRecords, records, hasNextPage } =
|
const { fetchMoreRecords, records, hasNextPage } =
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { useQuery } from '@apollo/client';
|
import { useQuery } from '@apollo/client';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode';
|
import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode';
|
||||||
@ -30,6 +31,8 @@ export const useFindOneRecord = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const computedRecordGqlFields =
|
const computedRecordGqlFields =
|
||||||
recordGqlFields ?? generateDepthOneRecordGqlFields({ objectMetadataItem });
|
recordGqlFields ?? generateDepthOneRecordGqlFields({ objectMetadataItem });
|
||||||
|
|
||||||
@ -50,6 +53,7 @@ export const useFindOneRecord = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
}>(findOneRecordQuery, {
|
}>(findOneRecordQuery, {
|
||||||
skip: !objectMetadataItem || !objectRecordId || skip || !hasReadPermission,
|
skip: !objectMetadataItem || !objectRecordId || skip || !hasReadPermission,
|
||||||
variables: { objectRecordId },
|
variables: { objectRecordId },
|
||||||
|
client: apolloCoreClient,
|
||||||
onCompleted: (data) => {
|
onCompleted: (data) => {
|
||||||
const recordWithoutConnection = getRecordFromRecordNode<T>({
|
const recordWithoutConnection = getRecordFromRecordNode<T>({
|
||||||
recordNode: { ...data[objectNameSingular] },
|
recordNode: { ...data[objectNameSingular] },
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { useLazyQuery } from '@apollo/client';
|
import { useLazyQuery } from '@apollo/client';
|
||||||
import { useRecoilCallback } from 'recoil';
|
import { useRecoilCallback } from 'recoil';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection';
|
import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection';
|
||||||
import { RecordGqlOperationFindManyResult } from '@/object-record/graphql/types/RecordGqlOperationFindManyResult';
|
import { RecordGqlOperationFindManyResult } from '@/object-record/graphql/types/RecordGqlOperationFindManyResult';
|
||||||
@ -31,6 +32,8 @@ export const useLazyFindManyRecords = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { findManyRecordsQuery } = useFindManyRecordsQuery({
|
const { findManyRecordsQuery } = useFindManyRecordsQuery({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
recordGqlFields,
|
recordGqlFields,
|
||||||
@ -68,6 +71,7 @@ export const useLazyFindManyRecords = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
fetchPolicy: 'cache-first',
|
fetchPolicy: 'cache-first',
|
||||||
onCompleted: handleFindManyRecordsCompleted,
|
onCompleted: handleFindManyRecordsCompleted,
|
||||||
onError: handleFindManyRecordsError,
|
onError: handleFindManyRecordsError,
|
||||||
|
client: apolloCoreClient,
|
||||||
});
|
});
|
||||||
|
|
||||||
const { fetchMoreRecordsLazy } = useLazyFetchMoreRecordsWithPagination<T>({
|
const { fetchMoreRecordsLazy } = useLazyFetchMoreRecordsWithPagination<T>({
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { useLazyQuery, WatchQueryFetchPolicy } from '@apollo/client';
|
import { useLazyQuery, WatchQueryFetchPolicy } from '@apollo/client';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode';
|
import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode';
|
||||||
@ -29,6 +30,8 @@ export const useLazyFindOneRecord = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { findOneRecordQuery } = useFindOneRecordQuery({
|
const { findOneRecordQuery } = useFindOneRecordQuery({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
recordGqlFields:
|
recordGqlFields:
|
||||||
@ -48,6 +51,7 @@ export const useLazyFindOneRecord = <T extends ObjectRecord = ObjectRecord>({
|
|||||||
await findOneRecord({
|
await findOneRecord({
|
||||||
variables: { objectRecordId },
|
variables: { objectRecordId },
|
||||||
fetchPolicy,
|
fetchPolicy,
|
||||||
|
client: apolloCoreClient,
|
||||||
onCompleted: (data) => {
|
onCompleted: (data) => {
|
||||||
const record = getRecordFromRecordNode<T>({
|
const record = getRecordFromRecordNode<T>({
|
||||||
recordNode: data[objectNameSingular],
|
recordNode: data[objectNameSingular],
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||||
import { MAX_SEARCH_RESULTS } from '@/command-menu/constants/MaxSearchResults';
|
import { MAX_SEARCH_RESULTS } from '@/command-menu/constants/MaxSearchResults';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
import { ObjectMetadataItemIdentifier } from '@/object-metadata/types/ObjectMetadataItemIdentifier';
|
||||||
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
import { SnackBarVariant } from '@/ui/feedback/snack-bar-manager/components/SnackBar';
|
||||||
@ -33,6 +34,8 @@ export const useObjectRecordSearchRecords = ({
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { enqueueSnackBar } = useSnackBar();
|
const { enqueueSnackBar } = useSnackBar();
|
||||||
|
|
||||||
const { data, loading, error, previousData } = useSearchQuery({
|
const { data, loading, error, previousData } = useSearchQuery({
|
||||||
@ -48,6 +51,7 @@ export const useObjectRecordSearchRecords = ({
|
|||||||
includedObjectNameSingulars: [objectNameSingular],
|
includedObjectNameSingulars: [objectNameSingular],
|
||||||
},
|
},
|
||||||
fetchPolicy: fetchPolicy,
|
fetchPolicy: fetchPolicy,
|
||||||
|
client: apolloCoreClient,
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
logError(
|
logError(
|
||||||
`useSearchRecords for "${objectMetadataItem.namePlural}" error : ` +
|
`useSearchRecords for "${objectMetadataItem.namePlural}" error : ` +
|
||||||
|
|||||||
@ -1,17 +1,17 @@
|
|||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { getAggregateQueryName } from '@/object-record/utils/getAggregateQueryName';
|
import { getAggregateQueryName } from '@/object-record/utils/getAggregateQueryName';
|
||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
|
|
||||||
export const useRefetchAggregateQueries = ({
|
export const useRefetchAggregateQueries = ({
|
||||||
objectMetadataNamePlural,
|
objectMetadataNamePlural,
|
||||||
}: {
|
}: {
|
||||||
objectMetadataNamePlural: string;
|
objectMetadataNamePlural: string;
|
||||||
}) => {
|
}) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const refetchAggregateQueries = async () => {
|
const refetchAggregateQueries = async () => {
|
||||||
const queryName = getAggregateQueryName(objectMetadataNamePlural);
|
const queryName = getAggregateQueryName(objectMetadataNamePlural);
|
||||||
|
|
||||||
await apolloClient.refetchQueries({
|
await apolloCoreClient.refetchQueries({
|
||||||
include: [queryName],
|
include: [queryName],
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
|
|
||||||
import { triggerUpdateRecordOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect';
|
import { triggerUpdateRecordOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect';
|
||||||
import { apiConfigState } from '@/client-config/states/apiConfigState';
|
import { apiConfigState } from '@/client-config/states/apiConfigState';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
||||||
@ -36,7 +35,7 @@ export const useRestoreManyRecords = ({
|
|||||||
const mutationPageSize =
|
const mutationPageSize =
|
||||||
apiConfig?.mutationMaximumAffectedRecords ?? DEFAULT_MUTATION_BATCH_SIZE;
|
apiConfig?.mutationMaximumAffectedRecords ?? DEFAULT_MUTATION_BATCH_SIZE;
|
||||||
|
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
@ -73,7 +72,7 @@ export const useRestoreManyRecords = ({
|
|||||||
|
|
||||||
const cachedRecords = batchedIdsToRestore
|
const cachedRecords = batchedIdsToRestore
|
||||||
.map((idToRestore) =>
|
.map((idToRestore) =>
|
||||||
getRecordFromCache(idToRestore, apolloClient.cache),
|
getRecordFromCache(idToRestore, apolloCoreClient.cache),
|
||||||
)
|
)
|
||||||
.filter(isDefined);
|
.filter(isDefined);
|
||||||
|
|
||||||
@ -109,13 +108,13 @@ export const useRestoreManyRecords = ({
|
|||||||
updateRecordFromCache({
|
updateRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
record: computedOptimisticRecord,
|
record: computedOptimisticRecord,
|
||||||
recordGqlFields,
|
recordGqlFields,
|
||||||
objectPermissionsByObjectMetadataId,
|
objectPermissionsByObjectMetadataId,
|
||||||
});
|
});
|
||||||
triggerUpdateRecordOptimisticEffect({
|
triggerUpdateRecordOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
currentRecord: cachedRecordWithConnection,
|
currentRecord: cachedRecordWithConnection,
|
||||||
updatedRecord: optimisticRecordWithConnection,
|
updatedRecord: optimisticRecordWithConnection,
|
||||||
@ -125,7 +124,7 @@ export const useRestoreManyRecords = ({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const restoredRecordsResponse = await apolloClient
|
const restoredRecordsResponse = await apolloCoreClient
|
||||||
.mutate({
|
.mutate({
|
||||||
mutation: restoreManyRecordsMutation,
|
mutation: restoreManyRecordsMutation,
|
||||||
variables: {
|
variables: {
|
||||||
@ -168,14 +167,14 @@ export const useRestoreManyRecords = ({
|
|||||||
updateRecordFromCache({
|
updateRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
record: cachedRecord,
|
record: cachedRecord,
|
||||||
recordGqlFields,
|
recordGqlFields,
|
||||||
objectPermissionsByObjectMetadataId,
|
objectPermissionsByObjectMetadataId,
|
||||||
});
|
});
|
||||||
|
|
||||||
triggerUpdateRecordOptimisticEffect({
|
triggerUpdateRecordOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
currentRecord: optimisticRecordWithConnection,
|
currentRecord: optimisticRecordWithConnection,
|
||||||
updatedRecord: cachedRecordWithConnection,
|
updatedRecord: cachedRecordWithConnection,
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
|
|
||||||
import { triggerUpdateRecordOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect';
|
import { triggerUpdateRecordOptimisticEffect } from '@/apollo/optimistic-effect/utils/triggerUpdateRecordOptimisticEffect';
|
||||||
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems';
|
||||||
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache';
|
||||||
@ -37,7 +36,7 @@ export const useUpdateOneRecord = <
|
|||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
recordGqlFields,
|
recordGqlFields,
|
||||||
}: useUpdateOneRecordProps) => {
|
}: useUpdateOneRecordProps) => {
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const { objectMetadataItem } = useObjectMetadataItem({
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
objectNameSingular,
|
objectNameSingular,
|
||||||
@ -75,7 +74,7 @@ export const useUpdateOneRecord = <
|
|||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
currentWorkspaceMember: currentWorkspaceMember,
|
currentWorkspaceMember: currentWorkspaceMember,
|
||||||
recordInput: updateOneRecordInput,
|
recordInput: updateOneRecordInput,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectPermissionsByObjectMetadataId,
|
objectPermissionsByObjectMetadataId,
|
||||||
});
|
});
|
||||||
@ -118,14 +117,14 @@ export const useUpdateOneRecord = <
|
|||||||
updateRecordFromCache({
|
updateRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
record: computedOptimisticRecord,
|
record: computedOptimisticRecord,
|
||||||
recordGqlFields,
|
recordGqlFields,
|
||||||
objectPermissionsByObjectMetadataId,
|
objectPermissionsByObjectMetadataId,
|
||||||
});
|
});
|
||||||
|
|
||||||
triggerUpdateRecordOptimisticEffect({
|
triggerUpdateRecordOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
currentRecord: cachedRecordWithConnection,
|
currentRecord: cachedRecordWithConnection,
|
||||||
updatedRecord: optimisticRecordWithConnection,
|
updatedRecord: optimisticRecordWithConnection,
|
||||||
@ -142,7 +141,7 @@ export const useUpdateOneRecord = <
|
|||||||
recordInput: updateOneRecordInput,
|
recordInput: updateOneRecordInput,
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
const updatedRecord = await apolloClient
|
const updatedRecord = await apolloCoreClient
|
||||||
.mutate({
|
.mutate({
|
||||||
mutation: updateOneRecordMutation,
|
mutation: updateOneRecordMutation,
|
||||||
variables: {
|
variables: {
|
||||||
@ -185,7 +184,7 @@ export const useUpdateOneRecord = <
|
|||||||
updateRecordFromCache({
|
updateRecordFromCache({
|
||||||
objectMetadataItems,
|
objectMetadataItems,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
record: {
|
record: {
|
||||||
...cachedRecord,
|
...cachedRecord,
|
||||||
...buildRecordFromKeysWithSameValue(
|
...buildRecordFromKeysWithSameValue(
|
||||||
@ -198,7 +197,7 @@ export const useUpdateOneRecord = <
|
|||||||
});
|
});
|
||||||
|
|
||||||
triggerUpdateRecordOptimisticEffect({
|
triggerUpdateRecordOptimisticEffect({
|
||||||
cache: apolloClient.cache,
|
cache: apolloCoreClient.cache,
|
||||||
objectMetadataItem,
|
objectMetadataItem,
|
||||||
currentRecord: optimisticRecordWithConnection,
|
currentRecord: optimisticRecordWithConnection,
|
||||||
updatedRecord: cachedRecordWithConnection,
|
updatedRecord: cachedRecordWithConnection,
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { useQuery } from '@apollo/client';
|
import { useQuery } from '@apollo/client';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection';
|
import { getRecordsFromRecordConnection } from '@/object-record/cache/utils/getRecordsFromRecordConnection';
|
||||||
import { EMPTY_QUERY } from '@/object-record/constants/EmptyQuery';
|
import { EMPTY_QUERY } from '@/object-record/constants/EmptyQuery';
|
||||||
import { RecordGqlOperationSignature } from '@/object-record/graphql/types/RecordGqlOperationSignature';
|
import { RecordGqlOperationSignature } from '@/object-record/graphql/types/RecordGqlOperationSignature';
|
||||||
@ -18,6 +19,8 @@ export const useCombinedFindManyRecords = ({
|
|||||||
operationSignatures,
|
operationSignatures,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
const queryVariables = generateCombinedFindManyRecordsQueryVariables({
|
const queryVariables = generateCombinedFindManyRecordsQueryVariables({
|
||||||
operationSignatures,
|
operationSignatures,
|
||||||
});
|
});
|
||||||
@ -27,6 +30,7 @@ export const useCombinedFindManyRecords = ({
|
|||||||
{
|
{
|
||||||
skip,
|
skip,
|
||||||
variables: queryVariables,
|
variables: queryVariables,
|
||||||
|
client: apolloCoreClient,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { useQuery } from '@apollo/client';
|
import { useQuery } from '@apollo/client';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { EMPTY_QUERY } from '@/object-record/constants/EmptyQuery';
|
import { EMPTY_QUERY } from '@/object-record/constants/EmptyQuery';
|
||||||
import { RecordGqlOperationSignature } from '@/object-record/graphql/types/RecordGqlOperationSignature';
|
import { RecordGqlOperationSignature } from '@/object-record/graphql/types/RecordGqlOperationSignature';
|
||||||
@ -24,6 +25,7 @@ export const useCombinedGetTotalCount = ({
|
|||||||
}) satisfies RecordGqlOperationSignature,
|
}) satisfies RecordGqlOperationSignature,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
const findManyQuery = useGenerateCombinedFindManyRecordsQuery({
|
const findManyQuery = useGenerateCombinedFindManyRecordsQuery({
|
||||||
operationSignatures,
|
operationSignatures,
|
||||||
});
|
});
|
||||||
@ -32,6 +34,7 @@ export const useCombinedGetTotalCount = ({
|
|||||||
findManyQuery ?? EMPTY_QUERY,
|
findManyQuery ?? EMPTY_QUERY,
|
||||||
{
|
{
|
||||||
skip,
|
skip,
|
||||||
|
client: apolloCoreClient,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { ApolloClient, gql, useApolloClient } from '@apollo/client';
|
import { ApolloClient, gql } from '@apollo/client';
|
||||||
import { isUndefined } from '@sniptt/guards';
|
import { isUndefined } from '@sniptt/guards';
|
||||||
|
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
|
import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery';
|
||||||
@ -16,7 +17,7 @@ import { useRecoilValue } from 'recoil';
|
|||||||
import { capitalize } from 'twenty-shared/utils';
|
import { capitalize } from 'twenty-shared/utils';
|
||||||
|
|
||||||
export const usePerformCombinedFindManyRecords = () => {
|
export const usePerformCombinedFindManyRecords = () => {
|
||||||
const client = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
|
||||||
|
|
||||||
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
const { objectPermissionsByObjectMetadataId } = useObjectPermissions();
|
||||||
@ -121,7 +122,7 @@ export const usePerformCombinedFindManyRecords = () => {
|
|||||||
operationSignatures: RecordGqlOperationSignature[];
|
operationSignatures: RecordGqlOperationSignature[];
|
||||||
client?: ApolloClient<object>;
|
client?: ApolloClient<object>;
|
||||||
}) => {
|
}) => {
|
||||||
const apolloClient = customClient || client;
|
const apolloClient = customClient || apolloCoreClient;
|
||||||
|
|
||||||
const findManyQuery = generateCombinedFindManyRecordsQuery(
|
const findManyQuery = generateCombinedFindManyRecordsQuery(
|
||||||
operationSignatures,
|
operationSignatures,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { useExportProcessRecordsForCSV } from '@/object-record/object-options-dropdown/hooks/useExportProcessRecordsForCSV';
|
import { useExportProcessRecordsForCSV } from '@/object-record/object-options-dropdown/hooks/useExportProcessRecordsForCSV';
|
||||||
import { renderHook } from '@testing-library/react';
|
import { renderHook } from '@testing-library/react';
|
||||||
import { act } from 'react';
|
import { act } from 'react';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
jest.mock('@/object-metadata/hooks/useObjectMetadataItem', () => ({
|
jest.mock('@/object-metadata/hooks/useObjectMetadataItem', () => ({
|
||||||
useObjectMetadataItem: jest.fn(() => ({
|
useObjectMetadataItem: jest.fn(() => ({
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { ViewComponentInstanceContext } from '@/views/states/contexts/ViewCompon
|
|||||||
import { renderHook } from '@testing-library/react';
|
import { renderHook } from '@testing-library/react';
|
||||||
import { act } from 'react';
|
import { act } from 'react';
|
||||||
import { RecoilRoot } from 'recoil';
|
import { RecoilRoot } from 'recoil';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
describe('useSearchRecordGroupField', () => {
|
describe('useSearchRecordGroupField', () => {
|
||||||
const renderWithContext = (contextValue: any) =>
|
const renderWithContext = (contextValue: any) =>
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { computeAggregateValueAndLabel } from '@/object-record/record-board/reco
|
|||||||
import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations';
|
import { AggregateOperations } from '@/object-record/record-table/constants/AggregateOperations';
|
||||||
import { DateAggregateOperations } from '@/object-record/record-table/constants/DateAggregateOperations';
|
import { DateAggregateOperations } from '@/object-record/record-table/constants/DateAggregateOperations';
|
||||||
import { enUS } from 'date-fns/locale';
|
import { enUS } from 'date-fns/locale';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
const MOCK_FIELD_ID = '7d2d7b5e-7b3e-4b4a-8b0a-7b3e4b4a8b0a';
|
const MOCK_FIELD_ID = '7d2d7b5e-7b3e-4b4a-8b0a-7b3e4b4a8b0a';
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import { assertFieldMetadata } from '@/object-record/record-field/types/guards/a
|
|||||||
import { isFieldMultiSelect } from '@/object-record/record-field/types/guards/isFieldMultiSelect';
|
import { isFieldMultiSelect } from '@/object-record/record-field/types/guards/isFieldMultiSelect';
|
||||||
import { isFieldMultiSelectValue } from '@/object-record/record-field/types/guards/isFieldMultiSelectValue';
|
import { isFieldMultiSelectValue } from '@/object-record/record-field/types/guards/isFieldMultiSelectValue';
|
||||||
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
|
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
export const useMultiSelectField = () => {
|
export const useMultiSelectField = () => {
|
||||||
const { recordId, fieldDefinition } = useContext(FieldContext);
|
const { recordId, fieldDefinition } = useContext(FieldContext);
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { useRecoilState, useRecoilValue } from 'recoil';
|
|||||||
import { usePersistField } from '@/object-record/record-field/hooks/usePersistField';
|
import { usePersistField } from '@/object-record/record-field/hooks/usePersistField';
|
||||||
import { useRecordFieldInput } from '@/object-record/record-field/hooks/useRecordFieldInput';
|
import { useRecordFieldInput } from '@/object-record/record-field/hooks/useRecordFieldInput';
|
||||||
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
|
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
import { FieldContext } from '../../contexts/FieldContext';
|
import { FieldContext } from '../../contexts/FieldContext';
|
||||||
import { FieldSelectValue } from '../../types/FieldMetadata';
|
import { FieldSelectValue } from '../../types/FieldMetadata';
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { useEffect } from 'react';
|
|||||||
import { useSetRecoilState } from 'recoil';
|
import { useSetRecoilState } from 'recoil';
|
||||||
|
|
||||||
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
import { FieldContext } from '@/object-record/record-field/contexts/FieldContext';
|
import { FieldContext } from '@/object-record/record-field/contexts/FieldContext';
|
||||||
import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext';
|
import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { expect, fn, userEvent, within } from '@storybook/test';
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
|
||||||
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
|
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
import { FieldContext } from '@/object-record/record-field/contexts/FieldContext';
|
import { FieldContext } from '@/object-record/record-field/contexts/FieldContext';
|
||||||
import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext';
|
import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext';
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { expect, fn, userEvent, waitFor, within } from '@storybook/test';
|
|||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
|
|
||||||
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
|
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
|
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
|
||||||
|
|
||||||
import { FieldContext } from '@/object-record/record-field/contexts/FieldContext';
|
import { FieldContext } from '@/object-record/record-field/contexts/FieldContext';
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { RecordFieldComponentInstanceContext } from '@/object-record/record-fiel
|
|||||||
import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2';
|
import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2';
|
||||||
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
|
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
|
||||||
import { Decorator, Meta, StoryObj } from '@storybook/react';
|
import { Decorator, Meta, StoryObj } from '@storybook/react';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator';
|
import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator';
|
||||||
import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator';
|
import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator';
|
||||||
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
|
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import { FieldContext } from '@/object-record/record-field/contexts/FieldContext
|
|||||||
import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext';
|
import { RecordFieldComponentInstanceContext } from '@/object-record/record-field/states/contexts/RecordFieldComponentInstanceContext';
|
||||||
import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2';
|
import { DEFAULT_CELL_SCOPE } from '@/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellV2';
|
||||||
import { Decorator, Meta, StoryObj } from '@storybook/react';
|
import { Decorator, Meta, StoryObj } from '@storybook/react';
|
||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator';
|
import { I18nFrontDecorator } from '~/testing/decorators/I18nFrontDecorator';
|
||||||
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
|
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
|
||||||
import { useTextField } from '../../../hooks/useTextField';
|
import { useTextField } from '../../../hooks/useTextField';
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { v4 } from 'uuid';
|
|||||||
|
|
||||||
import { SEARCH_QUERY } from '@/command-menu/graphql/queries/search';
|
import { SEARCH_QUERY } from '@/command-menu/graphql/queries/search';
|
||||||
import { useOpenRecordInCommandMenu } from '@/command-menu/hooks/useOpenRecordInCommandMenu';
|
import { useOpenRecordInCommandMenu } from '@/command-menu/hooks/useOpenRecordInCommandMenu';
|
||||||
|
import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient';
|
||||||
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem';
|
import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem';
|
||||||
@ -10,7 +11,6 @@ import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
|
|||||||
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
|
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
|
||||||
import { viewableRecordIdState } from '@/object-record/record-right-drawer/states/viewableRecordIdState';
|
import { viewableRecordIdState } from '@/object-record/record-right-drawer/states/viewableRecordIdState';
|
||||||
import { viewableRecordNameSingularState } from '@/object-record/record-right-drawer/states/viewableRecordNameSingularState';
|
import { viewableRecordNameSingularState } from '@/object-record/record-right-drawer/states/viewableRecordNameSingularState';
|
||||||
import { useApolloClient } from '@apollo/client';
|
|
||||||
import { getOperationName } from '@apollo/client/utilities';
|
import { getOperationName } from '@apollo/client/utilities';
|
||||||
import { isDefined } from 'twenty-shared/utils';
|
import { isDefined } from 'twenty-shared/utils';
|
||||||
import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql';
|
import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql';
|
||||||
@ -45,7 +45,7 @@ export const useAddNewRecordAndOpenRightDrawer = ({
|
|||||||
|
|
||||||
const { openRecordInCommandMenu } = useOpenRecordInCommandMenu();
|
const { openRecordInCommandMenu } = useOpenRecordInCommandMenu();
|
||||||
|
|
||||||
const apolloClient = useApolloClient();
|
const apolloCoreClient = useApolloCoreClient();
|
||||||
|
|
||||||
if (
|
if (
|
||||||
relationObjectMetadataNameSingular === 'workspaceMember' ||
|
relationObjectMetadataNameSingular === 'workspaceMember' ||
|
||||||
@ -109,7 +109,7 @@ export const useAddNewRecordAndOpenRightDrawer = ({
|
|||||||
setViewableRecordId(newRecordId);
|
setViewableRecordId(newRecordId);
|
||||||
setViewableRecordNameSingular(relationObjectMetadataNameSingular);
|
setViewableRecordNameSingular(relationObjectMetadataNameSingular);
|
||||||
|
|
||||||
apolloClient.refetchQueries({
|
apolloCoreClient.refetchQueries({
|
||||||
include: [getOperationName(SEARCH_QUERY) ?? ''],
|
include: [getOperationName(SEARCH_QUERY) ?? ''],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { FieldMetadataType } from '~/generated/graphql';
|
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||||
|
|
||||||
import { FieldDefinition } from '../FieldDefinition';
|
import { FieldDefinition } from '../FieldDefinition';
|
||||||
import { FieldMetadata, FieldSelectMetadata } from '../FieldMetadata';
|
import { FieldMetadata, FieldSelectMetadata } from '../FieldMetadata';
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user