UNPKG

@kwiz/common

Version:

KWIZ common utilities and helpers for M365 platform

83 lines 3.47 kB
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