q42-cms-components
Version:
59 lines (48 loc) • 1.54 kB
JavaScript
import { ServerStore } from './server-store.js';
class AssetStore extends ServerStore {
constructor() {
super({
initial: {
assets: [],
tags: []
},
loaders: {
assets: () => this.fetch('/assets/list'),
tags: () => this.fetch('/assets/tags').then(tags => [{name: 'hallo'}] || tags)
}
});
}
createAsset(asset, fileData) {
var data = new FormData();
data.append("file", fileData);
data.append("title", asset.title);
data.append("previewData", asset.previewData);
if (asset.width && asset.height) {
data.append("width", asset.width);
data.append("height", asset.height);
}
return this.fetch('/assets/create', null, {
method: 'post',
body: data
}).then(this.updaters.assets);
}
updateAsset(asset) {
return this.putJson(`/assets/${asset.id}/update`, asset).then(this.updaters.assets);
}
deleteAsset(asset) {
return this.del(`/assets/${asset.id}/delete`, asset).then(this.updaters.assets);
}
getAssetById(id) {
return this.fetch(`/assets/${id}`);
}
previewUrl(asset) {
if (!asset || !asset.contentType || !asset.contentType.startsWith('image/'))
return '';
return asset.contentType.startsWith('image/svg')
? asset.blobstoreUrl
: asset.imageUrl.startsWith('/image/') // no resized version yet?
? asset.blobstoreUrl
: asset.imageUrl;
}
}
export const assetStore = new AssetStore();