Skip to content

Commit 959361e

Browse files
fix: only set default src when creating app def if a frontend location is specified [EXT-5935] (#2279)
1 parent 8d5679e commit 959361e

File tree

2 files changed

+57
-27
lines changed

2 files changed

+57
-27
lines changed

packages/contentful--app-scripts/src/create-app-definition/create-app-definition.test.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,32 @@ describe('createAppDefinition', () => {
9292
assert(loggedMessage.includes(tutorialLink));
9393
assert.deepStrictEqual(cachedEnvVarsMock.args[0][0], { [APP_DEF_ENV_KEY]: 'appId' });
9494
});
95+
96+
it('sets default src if any frontend location is specified', async () => {
97+
const createAppDefinitionStub = stub().resolves({ sys: { id: 'testId' } });
98+
clientMock.getOrganization = stub().resolves({
99+
createAppDefinition: createAppDefinitionStub,
100+
});
101+
clientMock.getOrganizations = stub().resolves({
102+
items: [{ name: 'name', sys: { id: organizationId } }],
103+
});
104+
selectFromListMock.returns({ name: 'name', value: organizationId });
105+
106+
await subject(token, { locations: ['entry-field', 'dialog'] });
107+
assert(createAppDefinitionStub.calledWithMatch({ src: 'http://localhost:3000' }));
108+
});
109+
110+
it('does not set default src if only location is dialog', async () => {
111+
const createAppDefinitionStub = stub().resolves({ sys: { id: 'testId' } });
112+
clientMock.getOrganization = stub().resolves({
113+
createAppDefinition: createAppDefinitionStub,
114+
});
115+
clientMock.getOrganizations = stub().resolves({
116+
items: [{ name: 'name', sys: { id: organizationId } }],
117+
});
118+
selectFromListMock.returns({ name: 'name', value: organizationId });
119+
120+
await subject(token, { locations: ['dialog'] });
121+
assert(createAppDefinitionStub.calledWithMatch({ src: undefined }));
122+
});
95123
});

packages/contentful--app-scripts/src/create-app-definition/create-app-definition.ts

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -73,37 +73,39 @@ export async function createAppDefinition(
7373
const organizationId = selectedOrg.value;
7474

7575
const appName = appDefinitionSettings.name || path.basename(process.cwd());
76-
const body = {
77-
name: appName,
78-
src: 'http://localhost:3000',
79-
locations: appDefinitionSettings.locations.map((location) => {
80-
if (location === 'entry-field') {
81-
return {
82-
location,
83-
fieldTypes: appDefinitionSettings.fields || [],
84-
};
85-
}
86-
87-
if (location === 'page') {
88-
const { pageNav, pageNavLinkName, pageNavLinkPath } = appDefinitionSettings;
89-
90-
return {
91-
location,
92-
...(pageNav
93-
? {
94-
navigationItem: {
95-
name: pageNavLinkName,
96-
path: pageNavLinkPath,
97-
},
98-
}
99-
: {}),
100-
};
101-
}
76+
const locations = appDefinitionSettings.locations.map((location) => {
77+
if (location === 'entry-field') {
78+
return {
79+
location,
80+
fieldTypes: appDefinitionSettings.fields || [],
81+
};
82+
}
83+
84+
if (location === 'page') {
85+
const { pageNav, pageNavLinkName, pageNavLinkPath } = appDefinitionSettings;
10286

10387
return {
10488
location,
89+
...(pageNav
90+
? {
91+
navigationItem: {
92+
name: pageNavLinkName,
93+
path: pageNavLinkPath,
94+
},
95+
}
96+
: {}),
10597
};
106-
}),
98+
}
99+
100+
return {
101+
location,
102+
};
103+
})
104+
const hasFrontendLocation = locations.some(({ location }) => location !== 'dialog');
105+
const body = {
106+
name: appName,
107+
src: hasFrontendLocation ? 'http://localhost:3000' : undefined,
108+
locations,
107109
parameters: {
108110
...(appDefinitionSettings.parameters?.instance && {
109111
instance: appDefinitionSettings.parameters.instance,

0 commit comments

Comments
 (0)