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