mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-12 03:28:53 +00:00
211 lines
5.5 KiB
JavaScript
211 lines
5.5 KiB
JavaScript
import config from 'config';
|
|
import { authHeader, handleResponse } from '@/_helpers';
|
|
|
|
export const appVersionService = {
|
|
getAll,
|
|
getOne,
|
|
getAppVersionData,
|
|
create,
|
|
del,
|
|
save,
|
|
promoteEnvironment,
|
|
autoSaveApp,
|
|
saveAppVersionEventHandlers,
|
|
createAppVersionEventHandler,
|
|
deleteAppVersionEventHandler,
|
|
clonePage,
|
|
findAllEventsWithSourceId,
|
|
};
|
|
|
|
function getAll(appId) {
|
|
const requestOptions = { method: 'GET', headers: authHeader(), credentials: 'include' };
|
|
return fetch(`${config.apiUrl}/apps/${appId}/versions`, requestOptions).then(handleResponse);
|
|
}
|
|
|
|
function getOne(appId, versionId) {
|
|
const requestOptions = { method: 'GET', headers: authHeader(), credentials: 'include' };
|
|
return fetch(`${config.apiUrl}/apps/${appId}/versions/${versionId}`, requestOptions).then(handleResponse);
|
|
}
|
|
|
|
function promoteEnvironment(appId, versionId, currentEnvironmentId) {
|
|
const requestOptions = {
|
|
method: 'PUT',
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
body: JSON.stringify({ currentEnvironmentId }),
|
|
};
|
|
return fetch(`${config.apiUrl}/v2/apps/${appId}/versions/${versionId}/promote`, requestOptions).then(handleResponse);
|
|
}
|
|
function getAppVersionData(appId, versionId) {
|
|
const requestOptions = { method: 'GET', headers: authHeader(), credentials: 'include' };
|
|
return fetch(`${config.apiUrl}/v2/apps/${appId}/versions/${versionId}`, requestOptions).then(handleResponse);
|
|
}
|
|
|
|
function create(appId, versionName, versionFromId, currentEnvironmentId) {
|
|
const body = {
|
|
versionName,
|
|
versionFromId,
|
|
environmentId: currentEnvironmentId,
|
|
};
|
|
|
|
const requestOptions = {
|
|
method: 'POST',
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
body: JSON.stringify(body),
|
|
};
|
|
return fetch(`${config.apiUrl}/apps/${appId}/versions`, requestOptions).then(handleResponse);
|
|
}
|
|
|
|
function del(appId, versionId) {
|
|
const requestOptions = {
|
|
method: 'DELETE',
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
};
|
|
return fetch(`${config.apiUrl}/apps/${appId}/versions/${versionId}`, requestOptions).then(handleResponse);
|
|
}
|
|
|
|
function save(appId, versionId, values, isUserSwitchedVersion = false) {
|
|
const body = { is_user_switched_version: isUserSwitchedVersion };
|
|
if (values.definition) body['definition'] = values.definition;
|
|
if (values.name) body['name'] = values.name;
|
|
if (values.diff) body['app_diff'] = values.diff;
|
|
|
|
const requestOptions = {
|
|
method: 'PUT',
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
body: JSON.stringify(body),
|
|
};
|
|
return fetch(`${config.apiUrl}/v2/apps/${appId}/versions/${versionId}`, requestOptions).then(handleResponse);
|
|
}
|
|
|
|
function autoSaveApp(
|
|
appId,
|
|
versionId,
|
|
diff,
|
|
type,
|
|
pageId,
|
|
operation,
|
|
isUserSwitchedVersion = false,
|
|
isComponentCutProcess = false
|
|
) {
|
|
// console.log('autoSaveApp-->', {
|
|
// appId,
|
|
// versionId,
|
|
// diff,
|
|
// type,
|
|
// pageId,
|
|
// operation,
|
|
// isUserSwitchedVersion,
|
|
// isComponentCutProcess,
|
|
// });
|
|
|
|
const OPERATION = {
|
|
create: 'POST',
|
|
update: 'PUT',
|
|
delete: 'DELETE',
|
|
};
|
|
|
|
const bodyMappings = {
|
|
pages: {
|
|
create: { ...diff },
|
|
delete: { ...diff },
|
|
},
|
|
global_settings: {
|
|
update: { ...diff },
|
|
},
|
|
page_settings: {
|
|
update: { ...diff },
|
|
},
|
|
};
|
|
|
|
const body = !type
|
|
? { ...diff }
|
|
: bodyMappings[type]?.[operation] || {
|
|
is_user_switched_version: isUserSwitchedVersion,
|
|
pageId,
|
|
diff,
|
|
};
|
|
|
|
if (type === 'components' && operation === 'delete' && isComponentCutProcess) {
|
|
body['is_component_cut'] = true;
|
|
}
|
|
|
|
const requestOptions = {
|
|
method: OPERATION[operation],
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
body: JSON.stringify(body),
|
|
};
|
|
|
|
const url = `${config.apiUrl}/v2/apps/${appId}/versions/${versionId}/${type ?? ''}`;
|
|
|
|
return fetch(url, requestOptions).then(handleResponse);
|
|
}
|
|
|
|
function saveAppVersionEventHandlers(appId, versionId, events, updateType = 'update') {
|
|
const body = {
|
|
events,
|
|
updateType,
|
|
};
|
|
|
|
const requestOptions = {
|
|
method: 'PUT',
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
body: JSON.stringify(body),
|
|
};
|
|
return fetch(`${config.apiUrl}/v2/apps/${appId}/versions/${versionId}/events`, requestOptions).then(handleResponse);
|
|
}
|
|
|
|
function createAppVersionEventHandler(appId, versionId, event) {
|
|
const body = {
|
|
...event,
|
|
};
|
|
|
|
const requestOptions = {
|
|
method: 'POST',
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
body: JSON.stringify(body),
|
|
};
|
|
return fetch(`${config.apiUrl}/v2/apps/${appId}/versions/${versionId}/events`, requestOptions).then(handleResponse);
|
|
}
|
|
|
|
function deleteAppVersionEventHandler(appId, versionId, eventId) {
|
|
const requestOptions = {
|
|
method: 'DELETE',
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
};
|
|
return fetch(`${config.apiUrl}/v2/apps/${appId}/versions/${versionId}/events/${eventId}`, requestOptions).then(
|
|
handleResponse
|
|
);
|
|
}
|
|
|
|
function clonePage(appId, versionId, pageId) {
|
|
const requestOptions = {
|
|
method: 'POST',
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
};
|
|
return fetch(`${config.apiUrl}/v2/apps/${appId}/versions/${versionId}/pages/${pageId}/clone`, requestOptions).then(
|
|
handleResponse
|
|
);
|
|
}
|
|
|
|
function findAllEventsWithSourceId(appId, versionId, sourceId = undefined) {
|
|
const requestOptions = {
|
|
method: 'GET',
|
|
headers: authHeader(),
|
|
credentials: 'include',
|
|
};
|
|
|
|
return fetch(
|
|
`${config.apiUrl}/v2/apps/${appId}/versions/${versionId}/events${sourceId ? `?sourceId=${sourceId}` : ''}
|
|
`,
|
|
requestOptions
|
|
).then(handleResponse);
|
|
}
|