diff --git a/packages/backend/src/graphql/queries/get-app.js b/packages/backend/src/graphql/queries/get-app.js deleted file mode 100644 index 0f9dd4b5..00000000 --- a/packages/backend/src/graphql/queries/get-app.js +++ /dev/null @@ -1,41 +0,0 @@ -import App from '../../models/app.js'; -import Connection from '../../models/connection.js'; - -const getApp = async (_parent, params, context) => { - const conditions = context.currentUser.can('read', 'Connection'); - - const userConnections = context.currentUser.$relatedQuery('connections'); - const allConnections = Connection.query(); - const connectionBaseQuery = conditions.isCreator - ? userConnections - : allConnections; - - const app = await App.findOneByKey(params.key); - - if (context.currentUser) { - const connections = await connectionBaseQuery - .clone() - .select('connections.*') - .withGraphFetched({ - appConfig: true, - appAuthClient: true, - }) - .fullOuterJoinRelated('steps') - .where({ - 'connections.key': params.key, - 'connections.draft': false, - }) - .countDistinct('steps.flow_id as flowCount') - .groupBy('connections.id') - .orderBy('created_at', 'desc'); - - return { - ...app, - connections, - }; - } - - return app; -}; - -export default getApp; diff --git a/packages/backend/src/graphql/query-resolvers.js b/packages/backend/src/graphql/query-resolvers.js index 1fb2619c..abde6d6b 100644 --- a/packages/backend/src/graphql/query-resolvers.js +++ b/packages/backend/src/graphql/query-resolvers.js @@ -1,4 +1,3 @@ -import getApp from './queries/get-app.js'; import getAppAuthClient from './queries/get-app-auth-client.ee.js'; import getBillingAndUsage from './queries/get-billing-and-usage.ee.js'; import getConnectedApps from './queries/get-connected-apps.js'; @@ -7,7 +6,6 @@ import getStepWithTestExecutions from './queries/get-step-with-test-executions.j import testConnection from './queries/test-connection.js'; const queryResolvers = { - getApp, getAppAuthClient, getBillingAndUsage, getConnectedApps, diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index fe1b44b5..9714bde8 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -1,5 +1,4 @@ type Query { - getApp(key: String!): App getAppAuthClient(id: String!): AppAuthClient getConnectedApps(name: String): [App] testConnection(id: String!): Connection diff --git a/packages/web/src/components/AppConnections/index.jsx b/packages/web/src/components/AppConnections/index.jsx index 3606b6ea..da1e1280 100644 --- a/packages/web/src/components/AppConnections/index.jsx +++ b/packages/web/src/components/AppConnections/index.jsx @@ -1,20 +1,19 @@ import * as React from 'react'; import PropTypes from 'prop-types'; -import { useQuery } from '@apollo/client'; -import { GET_APP_CONNECTIONS } from 'graphql/queries/get-app-connections'; + import AppConnectionRow from 'components/AppConnectionRow'; import NoResultFound from 'components/NoResultFound'; import useFormatMessage from 'hooks/useFormatMessage'; import * as URLS from 'config/urls'; +import useAppConnections from 'hooks/useAppConnections'; function AppConnections(props) { const { appKey } = props; const formatMessage = useFormatMessage(); - const { data } = useQuery(GET_APP_CONNECTIONS, { - variables: { key: appKey }, - }); - const appConnections = data?.getApp?.connections || []; + const { data } = useAppConnections(appKey); + const appConnections = data?.data || []; const hasConnections = appConnections?.length; + if (!hasConnections) { return ( { - const appWithConnections = data?.getApp; + const appWithConnections = data?.data; const options = - appWithConnections?.connections?.map((connection) => - optionGenerator(connection), - ) || []; + appWithConnections?.map((connection) => optionGenerator(connection)) || + []; if (!appConfig?.data || appConfig?.data?.canCustomConnect) { options.push({ @@ -242,7 +243,7 @@ function ChooseConnectionSubstep(props) { )} value={getOption(connectionOptions, stepConnection?.id)} onChange={handleChange} - loading={loading} + loading={isAppConnectionsLoading} data-test="choose-connection-autocomplete" /> diff --git a/packages/web/src/graphql/queries/get-app-connections.js b/packages/web/src/graphql/queries/get-app-connections.js deleted file mode 100644 index 70863b37..00000000 --- a/packages/web/src/graphql/queries/get-app-connections.js +++ /dev/null @@ -1,20 +0,0 @@ -import { gql } from '@apollo/client'; -export const GET_APP_CONNECTIONS = gql` - query GetAppConnections($key: String!) { - getApp(key: $key) { - key - connections { - id - key - reconnectable - appAuthClientId - verified - flowCount - formattedData { - screenName - } - createdAt - } - } - } -`; diff --git a/packages/web/src/hooks/useAppConnections.js b/packages/web/src/hooks/useAppConnections.js new file mode 100644 index 00000000..cea0a23a --- /dev/null +++ b/packages/web/src/hooks/useAppConnections.js @@ -0,0 +1,19 @@ +import { useQuery } from '@tanstack/react-query'; + +import api from 'helpers/api'; + +export default function useAppConnections(appKey) { + const query = useQuery({ + queryKey: ['appConnections', appKey], + queryFn: async ({ signal }) => { + const { data } = await api.get(`/v1/apps/${appKey}/connections`, { + signal, + }); + + return data; + }, + enabled: !!appKey, + }); + + return query; +} diff --git a/packages/web/src/propTypes/propTypes.js b/packages/web/src/propTypes/propTypes.js index b15bf0bc..96aa0cf2 100644 --- a/packages/web/src/propTypes/propTypes.js +++ b/packages/web/src/propTypes/propTypes.js @@ -210,7 +210,7 @@ export const ConnectionPropType = PropTypes.shape({ count: PropTypes.number, flowCount: PropTypes.number, appData: AppPropType, - createdAt: PropTypes.string, + createdAt: PropTypes.number, reconnectable: PropTypes.bool, appAuthClientId: PropTypes.string, }); @@ -236,6 +236,7 @@ export const FlowPropType = PropTypes.shape({ active: PropTypes.bool, status: PropTypes.oneOf(['paused', 'published', 'draft']), createdAt: PropTypes.oneOfType([ + PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date), ]),