30 lines
770 B
JavaScript
30 lines
770 B
JavaScript
|
import Watchable from './watchable';
|
||
|
|
||
|
export default Watchable.extend({
|
||
|
promote(deployment) {
|
||
|
const id = deployment.get('id');
|
||
|
const url = urlForAction(this.urlForFindRecord(id, 'deployment'), '/promote');
|
||
|
return this.ajax(url, 'POST', {
|
||
|
data: {
|
||
|
DeploymentId: id,
|
||
|
All: true,
|
||
|
},
|
||
|
});
|
||
|
},
|
||
|
});
|
||
|
|
||
|
// The deployment action API endpoints all end with the ID
|
||
|
// /deployment/:action/:deployment_id instead of /deployment/:deployment_id/:action
|
||
|
function urlForAction(url, extension = '') {
|
||
|
const [path, params] = url.split('?');
|
||
|
const pathParts = path.split('/');
|
||
|
const idPart = pathParts.pop();
|
||
|
let newUrl = `${pathParts.join('/')}${extension}/${idPart}`;
|
||
|
|
||
|
if (params) {
|
||
|
newUrl += `?${params}`;
|
||
|
}
|
||
|
|
||
|
return newUrl;
|
||
|
}
|