@mikezimm/fps-core-v7
Version:
Library of reusable core interfaces, types and constants migrated from fps-library-v2
90 lines (89 loc) • 4.58 kB
JavaScript
/**
* CodeAnalizerComment: Updated 2 imports on 2024-09-21 23:07:24
* Update:: import { sortObjectArrayByChildNumberKey } to '@mikezimm/fps-core-v7/lib/logic/Arrays/sorting/objects;'
* Update:: import { IFPSFileObject } to '@mikezimm/fps-core-v7/lib/components/molecules/AnyContent/IFPSFileObject;'
*/
/**
* COPIED FROM PIVOT TILES ON 2023-12-09
*/
import { sortObjectArrayByChildNumberKey } from '../../../logic/Arrays/sorting/objects';
import { CurrentHostName } from '../../molecules/source-props/WindowLocationConstants';
// import { CurrentHostName } from "../../../logic/Strings/getSiteCollectionUrlFromLink";
import { getFileTypeIconInfoFromItem } from '../Icons/stdECStorage';
import { createEmptyItemSharingInfo } from './IItemWithSharingInfo';
/**
* Extract date in milliseconds from string: https://stackoverflow.com/a/1016908
* @param details details = "\/Date(1618104869979)\/" from SharedWithDetails
*/
export function getDateFromDetails(details) {
const re = /-?\d+/;
const m = re.exec(details);
const d = new Date(parseInt(m[0]));
return d;
}
export function processSharedItems(items) {
const domainEmail = CurrentHostName.replace('.sharepoint', '');
items.map(item => {
const itemAsFile = item;
const IconInfo = getFileTypeIconInfoFromItem(itemAsFile);
if (item.SharedWithDetails) {
item.ItemSharingInfo = createEmptyItemSharingInfo(item);
item.ItemSharingInfo.SharedEvents = Object.keys(item.ItemSharingInfo.SharedDetails).map((shareKey) => {
const keys = shareKey.split('|');
// https://github.com/mikezimm/pivottiles7/issues/258
const detail = item.ItemSharingInfo.SharedDetails[shareKey];
const DateTime = detail.DateTime;
const SharedTime = getDateFromDetails(DateTime);
const LoginName = detail.LoginName;
const parentFolder = item.FileRef ? item.FileRef.substring(0, item.FileRef.lastIndexOf('/')) : '';
// Clarified meta for building SharedEventsTable
const meta = ['WasShared',];
if (IconInfo)
meta.push(IconInfo.iconSearch); // Added separately just in case IconInfo was null
if (item.HasUniqueRoleAssignments === true)
meta.push('UniquePermissions');
const sharedWith = keys[2] ? keys[2].replace(domainEmail, '') : 'Unknown';
const sharedBy = LoginName ? LoginName.replace(domainEmail, '') : 'Unknown';
let sharedWithShort = `${sharedWith}`;
const sharedByName = sharedBy.split('@')[0];
const sharedByDomain = sharedByName[1].split('.')[0] + '...';
if (sharedWithShort.indexOf(sharedByDomain) > 0) {
sharedWithShort = sharedByName.split('@')[0];
}
const result = { ...IconInfo,
parentFolder: parentFolder,
key: shareKey,
keys: keys,
sharedWith: sharedWith,
sharedWithShort: sharedWithShort,
sharedBy: sharedBy,
sharedByShort: sharedByName,
DateTime: DateTime,
LoginName: LoginName,
TimeMS: SharedTime.getTime(),
SharedTime: SharedTime,
// Removed these items brought in from Pivot Tiles
GUID: item.GUID,
odataEditLink: item.odataEditLink,
AuthorId: item.AuthorId,
Created: item.Created,
FileRef: item.FileRef,
FileLeafRef: item.FileLeafRef,
FileSystemObjectType: item.FileSystemObjectType,
Modified: item.Modified,
EditorId: item.EditorId,
CheckoutUserId: item.CheckoutUserId,
id: item.Id,
// iconColor: '', Added via IconInfo
// iconName: '',
// iconTitle: '',
// iconSearch: '',
meta: meta, };
return result;
});
item.ItemSharingInfo.SharedEvents = sortObjectArrayByChildNumberKey(item.ItemSharingInfo.SharedEvents, 'asc', 'TimeMS');
}
});
return items;
}
//# sourceMappingURL=processSharedItems.js.map