UNPKG

@mikezimm/fps-core-v7

Version:

Library of reusable core interfaces, types and constants migrated from fps-library-v2

71 lines (69 loc) 4.25 kB
import { doSpHttpFetchOrPostAndCheck } from '../../../components/molecules/SpHttp/Sp/doSpHttpFetch'; import { check4This, Check4 } from '../../../logic/Links/CheckSearch'; import { SourcePropsNoWebUrl } from '../../../components/molecules/source-props/ISourceProps'; import { getCollectionUrl } from '../../../logic/Links/getSPOUrl'; import { getAbsoluteWebUrlFromSourceProps } from '../../../logic/Strings/getAbssoluteWebUrlFromSourceProps'; import { createErrorFpsUsersReturn } from '../../../components/molecules/process-results/createEmptyFpsUsersReturn'; import { MinUserSelect } from '../../../types/fps-returns/sites/users/UserSelect'; import { CurrentOrigin } from '../../../components/molecules/source-props/WindowLocationConstants'; import { getEmailFromLoginName } from '../../../components/atoms/Users/getEmailFromLoginName'; export async function getSiteAdminsAPI(sourceProps, alertMe, consoleLog, size) { const restFilter = 'IsSiteAdmin eq true'; const results = await getSiteUsersAPI({ ...sourceProps, ...{ restFilter: restFilter } }, alertMe, consoleLog, size); results.unifiedPerformanceOps.fetch.label.replace('users', 'admins'); return results; } export async function getSiteUsersAPI(sourceProps, alertMe, consoleLog, size = 'M') { const { restFilter, selectThese, } = sourceProps; // 2024-12-05: Added this because some places like PivotTiles had absoluteWebUrl in webUrl prop... so just taking care of differences const useUrl = getAbsoluteWebUrlFromSourceProps(sourceProps); const collectionName = getCollectionUrl(useUrl); if (!useUrl) { // NO WebURL... Throw Alert if (alertMe === true) alert(`getSiteUsersAPI: ${SourcePropsNoWebUrl}`); const results = createErrorFpsUsersReturn(useUrl); results.status = 'NoWeb'; return results; } /** SAMPLE Full SharePoint Items Rest call: https://example.sharepoint.com/sites/MySite/_api/web/siteUsers? $select=Id,Title,EULAText,ExpandedField1/Id,ExpandedField1/Title,ExpandedField2/Id,ExpandedField2/Title& $expand=ExpandedField1,ExpandedField2& $filter=Title eq 'SomeTitle'& $orderby=Id desc */ let fetchAPI = `${useUrl}/_api/web/siteUsers?`; //$select=${UserGroupSelects.join(',') fetchAPI += `&$select=${selectThese && selectThese.length > 0 ? selectThese.join(',') : MinUserSelect.join(',')}`; /** * 2024-12-06: Discovered that encodeURIComponent is not required and can actually cause issues if * you call it twice on the same string... then it will encode the encoded characters causing incorrect filter string. * if ( restFilter ) fetchAPI+= `$filter=${ encodeURIComponent(restFilter) }&`; <<< BAD */ if (restFilter) fetchAPI += `&$filter=${restFilter}`; const result = await doSpHttpFetchOrPostAndCheck(fetchAPI, 'GET', sourceProps.fpsSpService, '', alertMe, consoleLog, 'users', false, null); // result.users = result.items ? result.items : []; // result.fpsContentType = [ 'user' ]; result.unifiedPerformanceOps.fetch.label = `users-${collectionName}`; // result.unifiedPerformanceOps.fetch.c = result.users.length; /** * Added and tested this loop in ReactJSON2 sample webpart for the fps-PeoplePicker component */ result.users = result.users.map((user) => { // was originally passing back the 'AccountName' property as an alternate but that does not exist on this API return so using the LoginName const imageUrl = `${CurrentOrigin}/_layouts/15/userphoto.aspx?size=${size || 'L'}&accountname=${user.Email ? user.Email : getEmailFromLoginName(user.LoginName)}`; return { ...user, imageUrl: imageUrl }; }); // initialResult.users.map( user => { // if (!user.LoginName && user.Name) { user.LoginName = user.Name; } // if (!user.Email && user.EMail) { user.Email = user.EMail; } // }); if (check4This(Check4.fpsShowFetchResults_Eq_true) === true) { console.log(`fps-core-v7 COMPLETE: getSiteUsersAPI ~ 80`, result); } ; return result; } //# sourceMappingURL=getSiteUsersAPI.js.map