@mikezimm/fps-core-v7
Version:
Library of reusable core interfaces, types and constants migrated from fps-library-v2
123 lines (121 loc) • 7.3 kB
JavaScript
import { doSpHttpFetchOrPostAndCheck } from '../../../components/molecules/SpHttp/Sp/doSpHttpFetch';
// import { startPerformOpV2, updatePerformanceEndV2 } from '../../../components/molecules/Performance/functions';
// import { checkItemsResults } from '../../../components/molecules/process-results/CheckItemsResults';
import { check4This, Check4 } from '../../../logic/Links/CheckSearch';
// import { IPerformanceSettings } from '../../../components/molecules/Performance/IPerformanceSettings';
import { createErrorFpsListReturn } from '../../../components/molecules/process-results/createErrorFpsListItemsReturn';
// import { IPerformanceOp } from '../../../components/molecules/Performance/IPerformance';
import { SourcePropsNoWebUrl } from '../../../components/molecules/source-props/ISourceProps';
import { getAbsoluteWebUrlFromSourceProps, } from '../../../logic/Strings/getAbssoluteWebUrlFromSourceProps';
import { UserSelectsFull } from '../users/UserSelects';
export async function checkCurrentUserInGroup(sourceProps, GroupName, LoginName) {
// const results: IFpsItemsReturn = await getGroupMembersAPI( absoluteWebUrl, GroupName, `Title eq '${LoginName}'`, false, true );
// 2024-12-05: Noticed next line may have error: The rest filter is Title eq and property says LoginName
const results = await getGroupMembersAPI({ ...sourceProps, ...{ restFilter: `Title eq '${LoginName}'` } }, GroupName, false, true);
return results;
}
export async function getAllUsersInGroup(sourceProps, GroupName) {
// const results: IFpsItemsReturn = await getGroupMembersAPI( absoluteWebUrl, GroupName, `Title eq '${LoginName}'`, false, true );
const results = await getGroupMembersAPI({ ...sourceProps, restFilter: '' }, GroupName, false, true);
return results;
}
export async function getGroupMembersAPI(sourceProps, GroupName, alertMe, consoleLog) {
const { restFilter, selectThese = UserSelectsFull } = sourceProps;
const useUrl = getAbsoluteWebUrlFromSourceProps(sourceProps);
if (!useUrl) {
// NO WebURL... Throw Alert
if (alertMe === true)
alert(`getGroupInfoAPI: ${SourcePropsNoWebUrl}`);
const results = createErrorFpsListReturn(useUrl, '');
results.status = 'NoWeb';
return results;
}
if (!GroupName) {
// NO WebURL... Throw Alert
if (alertMe === true)
alert(`${''} SourceProps does NOT have an GroupName`);
const results = createErrorFpsListReturn(useUrl, '');
results.statusText = 'No GroupName';
results.status = 'NoGroup';
return results;
}
/**
SAMPLE Full SharePoint Items Rest call:
https://example.sharepoint.com/sites/MySite/_api/web/sitegroups/getbyname('GroupName')/users?
$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/sitegroups/getbyname('${GroupName}')/users?`;
fetchAPI += `&$select=${selectThese.join(',')}`;
fetchAPI += `&$orderby=Title asc`;
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 = `${GroupName} Users`;
// result.unifiedPerformanceOps.fetch.c = result.users.length;
// Add any required custom logic here
// if ( resultHubSites.ok ) {
// resultHubSites.items = cleanSearchedWebs( resultHubSites.items );
// }
if (check4This(Check4.fpsShowFetchResults_Eq_true) === true) {
console.log(`fps-core-v7 COMPLETE: getGroupMembersAPI ~ 87`, result);
}
;
return result;
}
/**
* Original kept for now until this has been tested
*/
// export async function getGroupMembersAPI( sourceProps: ISourceProps, GroupName: string, alertMe: boolean | undefined, consoleLog: boolean | undefined, ): Promise<IFpsUsersReturn> {
// const { restFilter, digestValue = '', selectThese = UserSelectsFull } = sourceProps;
// const performanceSettings: IPerformanceSettings = { label: GroupName, includeMsStr: true, updateMiliseconds: true, op: 'fetch' };
// const fetchOp = performanceSettings ? startPerformOpV2( performanceSettings ) : null;
// const useUrl: string = getAbsoluteWebUrlFromSourceProps( sourceProps );
// if ( !useUrl ) {
// // NO WebURL... Throw Alert
// if ( alertMe === true ) alert(`getGroupInfoAPI: ${SourcePropsNoWebUrl}`);
// const results: IFpsUsersReturn = createErrorFpsListReturn( useUrl, '' ) as IFpsUsersReturn;
// results.status = 'NoWeb';
// return results;
// }
// if ( !GroupName ) {
// // NO WebURL... Throw Alert
// if ( alertMe === true ) alert(`${''} SourceProps does NOT have an GroupName`);
// const results: IFpsUsersReturn = createErrorFpsListReturn( useUrl, '' ) as IFpsUsersReturn;
// results.statusText = 'No GroupName';
// results.status = 'NoGroup';
// return results;
// }
// /**
// SAMPLE Full SharePoint Items Rest call:
// https://example.sharepoint.com/sites/MySite/_api/web/sitegroups/getbyname('GroupName')/users?
// $select=Id,Title,EULAText,ExpandedField1/Id,ExpandedField1/Title,ExpandedField2/Id,ExpandedField2/Title&
// $expand=ExpandedField1,ExpandedField2&
// $filter=Title eq 'SomeTitle'&
// $orderby=Id desc
// */
// let fetchAPI: string = `${useUrl}/_api/web/sitegroups/getbyname('${GroupName}')/users?`;
// fetchAPI += `$select=${selectThese.join(',')}&`;
// fetchAPI += `$orderby=Title asc`;
// // if ( restFilter ) fetchAPI+= `&$filter=${ encodeURIComponent(restFilter) }&`;
// if ( restFilter ) fetchAPI+= `&$filter=${ restFilter }&`;
// const initialResult: IFpsUsersReturn = await doSpJsFetchOrPost( fetchAPI, 'GET', digestValue, '', null ) as unknown as IFpsUsersReturn;
// initialResult.users = initialResult.items ? initialResult.items : [];
// // Add any required custom logic here
// // if ( resultHubSites.ok ) {
// // resultHubSites.items = cleanSearchedWebs( resultHubSites.items );
// // }
// result.fpsContentType = [ 'user' ];
// const result : IFpsUsersReturn = checkItemsResults( initialResult, `fps-core-v7: getGroupMembersAPI ~ 78`, alertMe, consoleLog ) as IFpsUsersReturn;
// result.unifiedPerformanceOps.fetch = performanceSettings ?
// updatePerformanceEndV2( { op: fetchOp as IPerformanceOp, updateMiliseconds: performanceSettings.updateMiliseconds, count: result.items ? result.items.length : 0 })
// : null as any; // 2024-09-29: set null as any to pass build error.
// result.fetchOp = result.unifiedPerformanceOps.fetch;
// if ( check4This( Check4.fpsShowFetchResults_Eq_true ) === true ) { console.log( `fps-core-v7 COMPLETE: getGroupMembersAPI ~ 87`, result ) };
// return result;
// }
//# sourceMappingURL=getGroupMembersAPI.js.map