acquia_dam-1.0.0-rc1/js/ckeditor5_plugins/mediaRevisions/src/repository.js
js/ckeditor5_plugins/mediaRevisions/src/repository.js
import { Plugin } from 'ckeditor5/src/core';
export default class MediaRevisionsRepository extends Plugin {
/**
* @inheritdoc
*/
static get pluginName() {
return 'MediaRevisionsRepository';
}
/**
* @inheritdoc
*/
init() {
this._data = new WeakMap();
}
getRevisionMetadata(modelElement) {
if (!modelElement.hasAttribute('entityRevision')) {
this._data.set(modelElement, {
isLatest: true,
})
}
if (this._data.get(modelElement)) {
return new Promise((resolve) => {
resolve(this._data.get(modelElement));
});
}
const { mediaRevisionCheckUrl, revisionCsrfToken } = this.editor.config.get('drupalMedia');
const mediaUuid = modelElement.getAttribute('drupalMediaEntityUuid');
const entityRevision = modelElement.getAttribute('entityRevision');
return fetch(`${mediaRevisionCheckUrl}?uuid=${mediaUuid}&revisionId=${entityRevision}`, {
headers: {
'X-Drupal-AcquiaDam-CSRF-Token': revisionCsrfToken
}
})
.then(res => res.json())
.then(json => {
this._data.set(modelElement, json)
return json
})
}
refreshModelMetadata(modelElement) {
this._data.delete(modelElement)
return this.getRevisionMetadata(modelElement)
}
}
