sp-attachment-library
Version:
This is library is used ro do attachments realted actions on a list item in Sharepoint Angular SPA Addins.
280 lines • 20.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, Inject } from '@angular/core';
import { SpAttachmentConfigService } from '../config';
// Third party imports
import { sp } from '@pnp/sp';
import * as i0 from "@angular/core";
import * as i1 from "../config/sp-attachment-config-service";
export class SpAttachmentLibraryService {
/**
* @param {?} config
*/
constructor(config) {
this.config = config;
// setup sp
sp.setup({
sp: {
headers: {
'Accept': 'application/json;odata=verbose',
},
baseUrl: this.config.baseUrl,
}
});
}
/**
* @param {?} listName
* @param {?} itemId
* @return {?}
*/
getAttachmentsById(listName, itemId) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
/** @type {?} */
const item = sp.web
.lists
.getByTitle(listName)
.items
.getById(itemId);
item.attachmentFiles
.get()
.then((/**
* @param {?} response
* @return {?}
*/
(response) => {
resolve({ result: response });
}))
.catch((/**
* @param {?} e
* @return {?}
*/
(e) => {
reject({ result: false, message: e.message });
}));
}));
}
/**
* @param {?} listName
* @param {?} itemId
* @param {?} attachment
* @return {?}
*/
addAttachment(listName, itemId, attachment) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
/** @type {?} */
const item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.add(attachment.name, attachment.content).then((/**
* @param {?} response
* @return {?}
*/
response => {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
(e) => {
reject({ result: false, message: e.message });
}));
}));
}
/**
* @param {?} listName
* @param {?} itemId
* @param {?} attachments
* @return {?}
*/
addAttachments(listName, itemId, attachments) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
/** @type {?} */
const item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.addMultiple(attachments).then((/**
* @param {?} response
* @return {?}
*/
response => {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
(e) => {
reject({ result: false, message: e.message });
}));
}));
}
/**
* @param {?} listName
* @param {?} itemId
* @param {?} fileName
* @return {?}
*/
deleteAttachment(listName, itemId, fileName) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
/** @type {?} */
const item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.getByName(fileName).delete().then((/**
* @param {?} response
* @return {?}
*/
response => {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
(e) => {
reject({ result: false, message: e.message });
}));
}));
}
/**
* @param {?} listName
* @param {?} itemId
* @param {?} fileNames
* @return {?}
*/
deleteAttachments(listName, itemId, fileNames) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
/** @type {?} */
const item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.deleteMultiple(...fileNames).then((/**
* @param {?} response
* @return {?}
*/
response => {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
(e) => {
reject({ result: false, message: e.message });
}));
}));
}
/**
* @param {?} listName
* @param {?} itemId
* @param {?} fileName
* @return {?}
*/
getAttachmentContent(listName, itemId, fileName) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
/** @type {?} */
const item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.getByName(fileName).getBlob().then((/**
* @param {?} response
* @return {?}
*/
response => {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
(e) => {
reject({ result: false, message: e.message });
}));
}));
}
/**
* @param {?} listName
* @param {?} itemId
* @param {?} fileName
* @param {?} content
* @return {?}
*/
updateAttachmentContent(listName, itemId, fileName, content) {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
/** @type {?} */
const item = sp.web
.lists
.getByTitle(listName)
.items.getById(itemId);
item.attachmentFiles.getByName(fileName).setContent(content).then((/**
* @param {?} response
* @return {?}
*/
response => {
resolve({ result: response });
})).catch((/**
* @param {?} e
* @return {?}
*/
(e) => {
reject({ result: false, message: e.message });
}));
}));
}
}
SpAttachmentLibraryService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
SpAttachmentLibraryService.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [SpAttachmentConfigService,] }] }
];
/** @nocollapse */ SpAttachmentLibraryService.ngInjectableDef = i0.defineInjectable({ factory: function SpAttachmentLibraryService_Factory() { return new SpAttachmentLibraryService(i0.inject(i1.SpAttachmentConfigService)); }, token: SpAttachmentLibraryService, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
SpAttachmentLibraryService.prototype.config;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3AtYXR0YWNobWVudC1saWJyYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9zcC1hdHRhY2htZW50LWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvc3AtYXR0YWNobWVudC1saWJyYXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBc0IseUJBQXlCLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRzFFLE9BQU8sRUFBRSxFQUFFLEVBQXNCLE1BQU0sU0FBUyxDQUFDOzs7QUFLakQsTUFBTSxPQUFPLDBCQUEwQjs7OztJQUVuQyxZQUF1RCxNQUEwQjtRQUExQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUM3RSxXQUFXO1FBQ1gsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNMLEVBQUUsRUFBRTtnQkFDQSxPQUFPLEVBQUU7b0JBQ0wsUUFBUSxFQUFFLGdDQUFnQztpQkFDN0M7Z0JBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzthQUMvQjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7Ozs7OztJQUVELGtCQUFrQixDQUFDLFFBQWdCLEVBQUUsTUFBYztRQUMvQyxPQUFPLElBQUksT0FBTzs7Ozs7UUFBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTs7a0JBQzdCLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRztpQkFDZCxLQUFLO2lCQUNMLFVBQVUsQ0FBQyxRQUFRLENBQUM7aUJBQ3BCLEtBQUs7aUJBQ0wsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUVwQixJQUFJLENBQUMsZUFBZTtpQkFDZixHQUFHLEVBQUU7aUJBQ0wsSUFBSTs7OztZQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEMsQ0FBQyxF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amVjdGFibGUsIEluamVjdCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNwQXR0YWNobWVudENvbmZpZywgU3BBdHRhY2htZW50Q29uZmlnU2VydmljZSB9IGZyb20gJy4uL2NvbmZpZyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbi8vIFRoaXJkIHBhcnR5IGltcG9ydHNcclxuaW1wb3J0IHsgc3AsIEF0dGFjaG1lbnRGaWxlSW5mbyB9IGZyb20gJ0BwbnAvc3AnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcEF0dGFjaG1lbnRMaWJyYXJ5U2VydmljZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChTcEF0dGFjaG1lbnRDb25maWdTZXJ2aWNlKSBwcml2YXRlIGNvbmZpZzogU3BBdHRhY2htZW50Q29uZmlnKSB7XHJcbiAgICAgICAgLy8gc2V0dXAgc3BcclxuICAgICAgICBzcC5zZXR1cCh7XHJcbiAgICAgICAgICAgIHNwOiB7XHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uO29kYXRhPXZlcmJvc2UnLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJhc2VVcmw6IHRoaXMuY29uZmlnLmJhc2VVcmwsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdHRhY2htZW50c0J5SWQobGlzdE5hbWU6IHN0cmluZywgaXRlbUlkOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBzcC53ZWJcclxuICAgICAgICAgICAgICAgIC5saXN0c1xyXG4gICAgICAgICAgICAgICAgLmdldEJ5VGl0bGUobGlzdE5hbWUpXHJcbiAgICAgICAgICAgICAgICAuaXRlbXNcclxuICAgICAgICAgICAgICAgIC5nZXRCeUlkKGl0ZW1JZCk7XHJcblxyXG4gICAgICAgICAgICBpdGVtLmF0dGFjaG1lbnRGaWxlc1xyXG4gICAgICAgICAgICAgICAgLmdldCgpXHJcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVzdWx0OiByZXNwb25zZSB9KTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoeyByZXN1bHQ6IGZhbHNlLCBtZXNzYWdlOiBlLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQXR0YWNobWVudChsaXN0TmFtZTogc3RyaW5nLCBpdGVtSWQ6IG51bWJlciwgYXR0YWNobWVudDogQXR0YWNobWVudEZpbGVJbmZvKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gc3Aud2ViXHJcbiAgICAgICAgICAgICAgICAubGlzdHNcclxuICAgICAgICAgICAgICAgIC5nZXRCeVRpdGxlKGxpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgLml0ZW1zLmdldEJ5SWQoaXRlbUlkKTtcclxuXHJcbiAgICAgICAgICAgIGl0ZW0uYXR0YWNobWVudEZpbGVzLmFkZChhdHRhY2htZW50Lm5hbWUsIGF0dGFjaG1lbnQuY29udGVudCkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVzdWx0OiByZXNwb25zZSB9KTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlamVjdCh7IHJlc3VsdDogZmFsc2UsIG1lc3NhZ2U6IGUubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQXR0YWNobWVudHMobGlzdE5hbWU6IHN0cmluZywgaXRlbUlkOiBudW1iZXIsIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZUluZm9bXSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNwLndlYlxyXG4gICAgICAgICAgICAgICAgLmxpc3RzXHJcbiAgICAgICAgICAgICAgICAuZ2V0QnlUaXRsZShsaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgIC5pdGVtcy5nZXRCeUlkKGl0ZW1JZCk7XHJcblxyXG4gICAgICAgICAgICBpdGVtLmF0dGFjaG1lbnRGaWxlcy5hZGRNdWx0aXBsZShhdHRhY2htZW50cykudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsgcmVzdWx0OiByZXNwb25zZSB9KTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlamVjdCh7IHJlc3VsdDogZmFsc2UsIG1lc3NhZ2U6IGUubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlQXR0YWNobWVudChsaXN0TmFtZTogc3RyaW5nLCBpdGVtSWQ6IG51bWJlciwgZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNwLndlYlxyXG4gICAgICAgICAgICAgICAgLmxpc3RzXHJcbiAgICAgICAgICAgICAgICAuZ2V0QnlUaXRsZShsaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgIC5pdGVtcy5nZXRCeUlkKGl0ZW1JZCk7XHJcblxyXG4gICAgICAgICAgICBpdGVtLmF0dGFjaG1lbnRGaWxlcy5nZXRCeU5hbWUoZmlsZU5hbWUpLmRlbGV0ZSgpLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHJlc3VsdDogcmVzcG9uc2UgfSk7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QoeyByZXN1bHQ6IGZhbHNlLCBtZXNzYWdlOiBlLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUF0dGFjaG1lbnRzKGxpc3ROYW1lOiBzdHJpbmcsIGl0ZW1JZDogbnVtYmVyLCBmaWxlTmFtZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gc3Aud2ViXHJcbiAgICAgICAgICAgICAgICAubGlzdHNcclxuICAgICAgICAgICAgICAgIC5nZXRCeVRpdGxlKGxpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgLml0ZW1zLmdldEJ5SWQoaXRlbUlkKTtcclxuICAgICAgICAgICAgaXRlbS5hdHRhY2htZW50RmlsZXMuZGVsZXRlTXVsdGlwbGUoLi4uZmlsZU5hbWVzKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZXN1bHQ6IHJlc3BvbnNlIH0pO1xyXG4gICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KHsgcmVzdWx0OiBmYWxzZSwgbWVzc2FnZTogZS5tZXNzYWdlIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdHRhY2htZW50Q29udGVudChsaXN0TmFtZTogc3RyaW5nLCBpdGVtSWQ6IG51bWJlciwgZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNwLndlYlxyXG4gICAgICAgICAgICAgICAgLmxpc3RzXHJcbiAgICAgICAgICAgICAgICAuZ2V0QnlUaXRsZShsaXN0TmFtZSlcclxuICAgICAgICAgICAgICAgIC5pdGVtcy5nZXRCeUlkKGl0ZW1JZCk7XHJcblxyXG4gICAgICAgICAgICBpdGVtLmF0dGFjaG1lbnRGaWxlcy5nZXRCeU5hbWUoZmlsZU5hbWUpLmdldEJsb2IoKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZXN1bHQ6IHJlc3BvbnNlIH0pO1xyXG4gICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KHsgcmVzdWx0OiBmYWxzZSwgbWVzc2FnZTogZS5tZXNzYWdlIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVBdHRhY2htZW50Q29udGVudChsaXN0TmFtZTogc3RyaW5nLCBpdGVtSWQ6IG51bWJlciwgZmlsZU5hbWU6IHN0cmluZywgY29udGVudDogc3RyaW5nIHwgQmxvYiB8IEFycmF5QnVmZmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gc3Aud2ViXHJcbiAgICAgICAgICAgICAgICAubGlzdHNcclxuICAgICAgICAgICAgICAgIC5nZXRCeVRpdGxlKGxpc3ROYW1lKVxyXG4gICAgICAgICAgICAgICAgLml0ZW1zLmdldEJ5SWQoaXRlbUlkKTtcclxuXHJcbiAgICAgICAgICAgIGl0ZW0uYXR0YWNobWVudEZpbGVzLmdldEJ5TmFtZShmaWxlTmFtZSkuc2V0Q29udGVudChjb250ZW50KS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoeyByZXN1bHQ6IHJlc3BvbnNlIH0pO1xyXG4gICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KHsgcmVzdWx0OiBmYWxzZSwgbWVzc2FnZTogZS5tZXNzYWdlIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19