///
///
///
///
class EditController {
private loadingCallback:JQueryPromise = null;
constructor(private dataService:DataService, private loader:EditorLoader, private uploadLoader:UploadLoader,
private preparer:EditorPreparer, private contentBlockDrawer:ContentBlockDrawer) {
}
prepareEdit(domOuter:DomContentBlock):void {
this.loadDependencies();
this.loadingCallback.done(() =>
this.preparer.prepare(domOuter, (dom:DomContentBlock, newContent:string) => this.editContent(dom, newContent)));
}
editContent(dom:DomContentBlock, newContent:string) {
const cb = dom.contentBlock;
const newContentBlock = new ContentBlock(newContent, cb.contentPath, cb.apiKey, cb.apiHost, cb.createdAt,
cb.updatedAt, cb.defaultContent, cb.version);
return this.dataService.storeContent(newContentBlock, dom.privateApiKey)
.done((response) => {
newContentBlock.version = response.content_block.version;
dom.contentBlock = newContentBlock;
this.contentBlockDrawer.draw(dom);
this.preparer.notifySave(dom, true, response);
})
.fail((response) => this.preparer.notifySave(dom, false, response));
}
private loadDependencies() {
if (this.loadingCallback !== null) return;
this.loadingCallback = jQuery.when(this.loader.loadEditor(), this.uploadLoader.loadUpload());
};
}