diff --git a/packages/backend/src/graphql/mutations/create-flow.ts b/packages/backend/src/graphql/mutations/create-flow.ts
index 1920c7b3..fd587260 100644
--- a/packages/backend/src/graphql/mutations/create-flow.ts
+++ b/packages/backend/src/graphql/mutations/create-flow.ts
@@ -1,14 +1,23 @@
import Step from '../../models/step';
-import flowType from '../types/flow';
+import flowType, { flowInputType} from '../types/flow';
import RequestWithCurrentUser from '../../types/express/request-with-current-user';
-const createFlowResolver = async (req: RequestWithCurrentUser) => {
+type Params = {
+ input: {
+ triggerAppKey: string;
+ };
+};
+
+const createFlowResolver = async (params: Params, req: RequestWithCurrentUser) => {
+ const appKey = params?.input?.triggerAppKey;
+
const flow = await req.currentUser.$relatedQuery('flows').insert({});
await Step.query().insert({
flowId: flow.id,
type: 'trigger',
position: 1,
+ appKey,
});
return flow;
@@ -16,8 +25,11 @@ const createFlowResolver = async (req: RequestWithCurrentUser) => {
const createFlow = {
type: flowType,
- resolve: (_: any, _params: any, req: RequestWithCurrentUser) =>
- createFlowResolver(req),
+ args: {
+ input: { type: flowInputType },
+ },
+ resolve: (_: any, params: Params, req: RequestWithCurrentUser) =>
+ createFlowResolver(params, req),
};
export default createFlow;
diff --git a/packages/backend/src/graphql/types/flow.ts b/packages/backend/src/graphql/types/flow.ts
index 627f4f21..4665b111 100644
--- a/packages/backend/src/graphql/types/flow.ts
+++ b/packages/backend/src/graphql/types/flow.ts
@@ -1,6 +1,7 @@
import {
GraphQLList,
GraphQLObjectType,
+ GraphQLInputObjectType,
GraphQLString,
GraphQLBoolean,
} from 'graphql';
@@ -18,4 +19,11 @@ const flowType = new GraphQLObjectType({
},
});
+export const flowInputType = new GraphQLInputObjectType({
+ name: 'FlowInput',
+ fields: {
+ triggerAppKey: { type: GraphQLString },
+ },
+});
+
export default flowType;
diff --git a/packages/web/public/favicon.ico b/packages/web/public/favicon.ico
index a11777cc..59ab8480 100644
Binary files a/packages/web/public/favicon.ico and b/packages/web/public/favicon.ico differ
diff --git a/packages/web/src/config/urls.ts b/packages/web/src/config/urls.ts
index 014bb74d..d6ee38f7 100644
--- a/packages/web/src/config/urls.ts
+++ b/packages/web/src/config/urls.ts
@@ -16,7 +16,8 @@ export const APP_FLOWS = (appKey: string): string => `/app/${appKey}/flows`;
export const APP_FLOWS_PATTERN = '/app/:appKey/flows';
export const EDITOR = '/editor';
-export const CREATE_FLOW = '/editor/create';
+export const CREATE_FLOW ='/editor/create';
+export const CREATE_FLOW_WITH_APP = (appKey: string) => `/editor/create?appKey=${appKey}`;
export const FLOW_EDITOR = (flowId: string): string => `/editor/${flowId}`;
export const FLOWS = '/flows';
diff --git a/packages/web/src/graphql/mutations/create-flow.ts b/packages/web/src/graphql/mutations/create-flow.ts
index 93b07d9e..317fc591 100644
--- a/packages/web/src/graphql/mutations/create-flow.ts
+++ b/packages/web/src/graphql/mutations/create-flow.ts
@@ -1,8 +1,8 @@
import { gql } from '@apollo/client';
export const CREATE_FLOW = gql`
- mutation createFlow {
- createFlow {
+ mutation createFlow($input: FlowInput) {
+ createFlow(input: $input) {
id
name
}
diff --git a/packages/web/src/pages/Application/index.tsx b/packages/web/src/pages/Application/index.tsx
index 815ee198..3c0e5b11 100644
--- a/packages/web/src/pages/Application/index.tsx
+++ b/packages/web/src/pages/Application/index.tsx
@@ -70,9 +70,9 @@ export default function Application(): React.ReactElement {
linkProps,
ref,
) {
- return ;
+ return ;
}),
- [],
+ [appKey],
);
return (
diff --git a/packages/web/src/pages/Editor/create.tsx b/packages/web/src/pages/Editor/create.tsx
index 1b8af63d..57555d02 100644
--- a/packages/web/src/pages/Editor/create.tsx
+++ b/packages/web/src/pages/Editor/create.tsx
@@ -1,5 +1,5 @@
import * as React from 'react';
-import { useNavigate } from 'react-router-dom';
+import { useNavigate, useSearchParams } from 'react-router-dom';
import { useMutation } from '@apollo/client';
import CircularProgress from '@mui/material/CircularProgress';
import Typography from '@mui/material/Typography';
@@ -11,22 +11,29 @@ import { CREATE_FLOW } from 'graphql/mutations/create-flow';
import Box from '@mui/material/Box';
export default function CreateFlow(): React.ReactElement {
+ const [searchParams] = useSearchParams();
const navigate = useNavigate();
const formatMessage = useFormatMessage();
const [createFlow] = useMutation(CREATE_FLOW);
+ const appKey = searchParams.get('appKey');
+
React.useEffect(() => {
async function initiate() {
- const response = await createFlow();
+ const response = await createFlow({
+ variables: {
+ input: {
+ triggerAppKey: appKey,
+ }
+ }
+ });
const flowId = response.data?.createFlow?.id;
- setTimeout(() => {
- navigate(URLS.FLOW_EDITOR(flowId));
- }, 1234);
+ navigate(URLS.FLOW_EDITOR(flowId));
}
initiate();
- }, [createFlow, navigate]);
+ }, [createFlow, navigate, appKey]);
return (