@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
89 lines • 3.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeleteWebPart = DeleteWebPart;
exports.HideWebPart = HideWebPart;
exports.GetWebParts = GetWebParts;
exports.GetWebPartById = GetWebPartById;
const strings_1 = require("../../helpers/strings");
const typecheckers_1 = require("../../helpers/typecheckers");
const rest_types_1 = require("../../types/rest.types");
const webpart_types_1 = require("../../types/webpart.types");
const rest_1 = require("../rest");
const common_1 = require("./common");
const WEBPART_EXPAND = ["WebPart", "WebPart/Properties", "ZoneId"].join(",");
function _getWebPartRestUrl(siteUrl, fileServerRelativeUrl, options = { id: null, method: null }) {
let url = `${(0, common_1.GetRestBaseUrl)(siteUrl)}/web/getfilebyserverrelativeurl(@u)/getlimitedwebpartmanager(scope=1)/webparts`;
if ((0, typecheckers_1.isValidGuid)(options.id)) {
url += `/getbyid('${(0, strings_1.normalizeGuid)(options.id)}')`;
if (!(0, typecheckers_1.isNullOrUndefined)(options.method)) {
url += `/${options.method}`;
}
}
url += `?$expand=${WEBPART_EXPAND}&@u='${encodeURIComponent(fileServerRelativeUrl)}'`;
return url;
}
async function DeleteWebPart(siteUrl, fileServerRelativeUrl, webPartId) {
let webPart = GetWebPartById(siteUrl, fileServerRelativeUrl, webPartId);
if ((0, typecheckers_1.isNullOrUndefined)(webPart)) {
return true;
}
let url = _getWebPartRestUrl(siteUrl, fileServerRelativeUrl, {
id: webPartId,
method: webpart_types_1.WebPartMethods.DeleteWebPart
});
try {
let response = await (0, rest_1.GetJson)(url, null, {
method: "POST",
includeDigestInPost: true,
allowCache: false,
jsonMetadata: rest_types_1.jsonTypes.nometadata,
spWebUrl: siteUrl //allow getDigest to work when not in SharePoint
});
return response["odata.null"] === true;
}
catch {
}
return false;
}
async function HideWebPart(siteUrl, fileServerRelativeUrl, webPartId, hidden) {
let webPart = await GetWebPartById(siteUrl, fileServerRelativeUrl, webPartId);
if ((0, typecheckers_1.isNullOrUndefined)(webPart)) {
return true;
}
let url = _getWebPartRestUrl(siteUrl, fileServerRelativeUrl, {
id: webPartId,
method: webpart_types_1.WebPartMethods.SaveWebPartChanges
});
try {
let response = await (0, rest_1.GetJson)(url, JSON.stringify(webPart), {
method: "POST",
includeDigestInPost: true,
allowCache: false,
jsonMetadata: rest_types_1.jsonTypes.nometadata,
spWebUrl: siteUrl //allow getDigest to work when not in SharePoint
});
return response["odata.null"] === true;
}
catch {
}
return false;
}
async function GetWebParts(siteUrl, fileServerRelativeUrl) {
let url = _getWebPartRestUrl(siteUrl, fileServerRelativeUrl);
let response = await (0, rest_1.GetJson)(url, null, {
allowCache: false,
jsonMetadata: rest_types_1.jsonTypes.nometadata,
spWebUrl: siteUrl //allow getDigest to work when not in SharePoint
});
return !(0, typecheckers_1.isNullOrUndefined)(response) && !(0, typecheckers_1.isNullOrEmptyArray)(response.value) ? response.value : [];
}
async function GetWebPartById(siteUrl, fileServerRelativeUrl, webPartId) {
let url = _getWebPartRestUrl(siteUrl, fileServerRelativeUrl, { id: webPartId, method: null });
let response = await (0, rest_1.GetJson)(url, null, {
allowCache: false,
jsonMetadata: rest_types_1.jsonTypes.nometadata,
spWebUrl: siteUrl //allow getDigest to work when not in SharePoint
});
return !(0, typecheckers_1.isNullOrUndefined)(response) && !(0, typecheckers_1.isNullOrEmptyString)(response.Id) ? response : null;
}
//# sourceMappingURL=webparts.js.map