{"version":3,"file":"321.js","mappings":"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","sources":["webpack:///./src/taskpane/components/_v2/redux/api/graph/api-graph-insights-slice.ts?","webpack:///./src/taskpane/components/_v2/redux/storeMain.ts?","webpack:///./src/taskpane/components/directoryComponents/myApprovals/ApprovalsService.ts?","webpack:///./src/taskpane/components/enums/fileTypeEnum.ts?","webpack:///./src/taskpane/components/helpers/arrayCombiner.ts?","webpack:///./src/taskpane/components/helpers/storeItemHelper.ts?","webpack:///./src/taskpane/components/mappers/recentFilesMapper.ts?","webpack:///./src/taskpane/redux/modules/approvals.ts?","webpack:///./src/taskpane/redux/modules/loader.ts?","webpack:///./src/taskpane/redux/modules/oneDrive.ts?","webpack:///./src/taskpane/redux/modules/overlay.ts?","webpack:///./src/taskpane/redux/modules/pinnedItems.ts?","webpack:///./src/taskpane/redux/modules/recentItems.ts?","webpack:///./src/taskpane/redux/modules/reload.ts?","webpack:///./src/taskpane/redux/modules/search.ts?","webpack:///./src/taskpane/redux/modules/sharedItems.ts?","webpack:///./src/taskpane/redux/modules/sharepointInfo.ts?","webpack:///./src/taskpane/redux/modules/showFolderDeleteDialogue.ts?","webpack:///./src/taskpane/redux/modules/suggestedItems.ts?","webpack:///./src/taskpane/redux/modules/teams.ts?","webpack:///./src/taskpane/redux/modules/user.ts?","webpack:///./src/taskpane/redux/modules/workingDirectory.ts?"],"sourcesContent":["import { createApi, fetchBaseQuery, retry } from '@reduxjs/toolkit/query/react';\r\nimport authModule from \"../../../../../../../utilities/AuthModule\";\r\nimport { IGraphInsightsItem, InsightType } from \"./api-graph-interfaces\";\r\n\r\nconst GRAPH_API_URL = 'https://graph.microsoft.com/v1.0';\r\n\r\nexport const apiGraphInsightsSlice = createApi({\r\n reducerPath: 'api-graph-insights',\r\n baseQuery: retry(fetchBaseQuery({\r\n baseUrl: GRAPH_API_URL,\r\n prepareHeaders: async (headers) => {\r\n const accessToken = await authModule.getGraphAccessToken();\r\n headers.set('Authorization', `Bearer ${accessToken}`);\r\n return headers;\r\n },\r\n })),\r\n endpoints: (builder) => ({\r\n getItemsTrendingAroundMe: builder.query({\r\n query: () => {\r\n return {\r\n url: `/me/insights/trending`,\r\n method: 'GET'\r\n }\r\n },\r\n transformResponse: (response: any) => {\r\n return (response.value as IGraphInsightsItem[]).map(val => {\r\n return {\r\n ...val,\r\n insightType: InsightType.Trending\r\n }\r\n });\r\n },\r\n }),\r\n getItemsSharedWithMe: builder.query({\r\n query: () => {\r\n return {\r\n url: `/me/insights/shared`,\r\n method: 'GET'\r\n }\r\n },\r\n transformResponse: (response: any) => {\r\n return (response.value as IGraphInsightsItem[]).filter(x => x.resourceVisualization.title).map(val => {\r\n return {\r\n ...val,\r\n insightType: InsightType.Shared,\r\n gridDate: new Date(val.lastShared.sharedDateTime)\r\n }\r\n });\r\n },\r\n }),\r\n getItemsViewedAndModifiedByMe: builder.query({\r\n query: () => {\r\n return {\r\n url: `/me/insights/used`,\r\n method: 'GET'\r\n }\r\n },\r\n transformResponse: (response: any) => {\r\n return (response.value as IGraphInsightsItem[]).map(val => {\r\n return {\r\n ...val,\r\n insightType: InsightType.Recent,\r\n gridDate: new Date(val.lastUsed.lastModifiedDateTime)\r\n }\r\n });\r\n },\r\n }),\r\n getFileThumbnail: builder.query({\r\n query: (args) => {\r\n return {\r\n url: `/${args.itemDriveId}/thumbnails?$select=large`,\r\n method: 'GET'\r\n }\r\n }\r\n }),\r\n })\r\n});\r\n\r\nexport const {\r\n useLazyGetItemsTrendingAroundMeQuery,\r\n useLazyGetItemsSharedWithMeQuery,\r\n useLazyGetItemsViewedAndModifiedByMeQuery,\r\n useLazyGetFileThumbnailQuery\r\n} = apiGraphInsightsSlice;","import { AnyAction, combineReducers, configureStore, Reducer } from '@reduxjs/toolkit';\r\nimport { CLEAR_ALL_STATE } from '../../../redux/modules/actionTypes';\r\nimport { approvalsReducer } from \"../../../redux/modules/approvals\";\r\nimport { contentManagerDirectoryReducer } from '../../../redux/modules/contentManagerDirectory';\r\nimport { currentSharepointFolderReducer } from \"../../../redux/modules/currentSharepointFolder\";\r\nimport { datasourceReducer } from \"../../../redux/modules/datasource\";\r\nimport { expandersReducer } from \"../../../redux/modules/expanders\";\r\nimport { fileReducer } from \"../../../redux/modules/file\";\r\nimport { loadingReducer } from \"../../../redux/modules/loader\";\r\nimport { modeReducer } from \"../../../redux/modules/mode\";\r\nimport { oneDriveReducer } from \"../../../redux/modules/oneDrive\";\r\nimport { pinnedReducer } from \"../../../redux/modules/pinnedItems\";\r\nimport { recentReducer } from \"../../../redux/modules/recentItems\";\r\nimport { regionalSettingsReducer } from \"../../../redux/modules/regional\";\r\nimport { reloadReducer } from \"../../../redux/modules/reload\";\r\nimport { savingInBackgroundReducer } from \"../../../redux/modules/savingInBackground\";\r\nimport { savingLocationReducer } from \"../../../redux/modules/savingLocation\";\r\nimport { searchReducer } from \"../../../redux/modules/search\";\r\nimport { sharedReducer } from \"../../../redux/modules/sharedItems\";\r\nimport { suggestedReducer } from \"../../../redux/modules/suggestedItems\";\r\nimport { sharePointInfoReducer } from \"../../../redux/modules/sharepointInfo\";\r\nimport { showFolderDeleteDialogReducer } from \"../../../redux/modules/showFolderDeleteDialogue\";\r\nimport { teamsReducer } from \"../../../redux/modules/teams\";\r\nimport { tenantReducer } from \"../../../redux/modules/tenant\";\r\nimport { userReducer } from \"../../../redux/modules/user\";\r\nimport { workingDirectoryReducer } from \"../../../redux/modules/workingDirectory\";\r\nimport { apiGraphSlice } from \"./api/graph/api-graph-slice\";\r\nimport { apiGraphInsightsSlice } from \"./api/graph/api-graph-insights-slice\";\r\nimport { apiPiiSlice } from \"./api/local/api-pii-slice\";\r\nimport { apiSharePointSlice } from \"./api/sharepoint/api-sharepoint-slice\";\r\nimport { apiNintexSlice } from \"./api/nintex/api-nintex-slice\";\r\nimport { overlayReducer } from '../../../redux/modules/overlay';\r\n\r\nconst combinedReducer = combineReducers({\r\n savingLocation: savingLocationReducer,\r\n workingDirectories: workingDirectoryReducer,\r\n tenantInfo: tenantReducer,\r\n datasource: datasourceReducer,\r\n files: fileReducer,\r\n savingInBackground: savingInBackgroundReducer,\r\n reload: reloadReducer,\r\n currentSharepointFolder: currentSharepointFolderReducer,\r\n sharePointInfo: sharePointInfoReducer,\r\n mode: modeReducer,\r\n loading: loadingReducer,\r\n expanders: expandersReducer,\r\n user: userReducer,\r\n search: searchReducer,\r\n teams: teamsReducer,\r\n oneDrive: oneDriveReducer,\r\n regionalSettings: regionalSettingsReducer,\r\n pinned: pinnedReducer,\r\n recent: recentReducer,\r\n shared: sharedReducer,\r\n suggested: suggestedReducer,\r\n showFolderDeleteDialog: showFolderDeleteDialogReducer,\r\n approvals: approvalsReducer,\r\n contentManagerDirectory: contentManagerDirectoryReducer,\r\n overlay: overlayReducer,\r\n [apiPiiSlice.reducerPath]: apiPiiSlice.reducer,\r\n [apiGraphSlice.reducerPath]: apiGraphSlice.reducer,\r\n [apiGraphInsightsSlice.reducerPath]: apiGraphInsightsSlice.reducer,\r\n [apiSharePointSlice.reducerPath]: apiSharePointSlice.reducer,\r\n [apiNintexSlice.reducerPath]: apiNintexSlice.reducer,\r\n});\r\n\r\nconst rootReducer: Reducer = (state: RootState, action: AnyAction) => {\r\n if (action.type === CLEAR_ALL_STATE) {\r\n // return combinedReducer(undefined, action);\r\n state = {} as RootState;\r\n }\r\n return combinedReducer(state, action);\r\n};\r\n\r\nexport const storeMain = configureStore({\r\n reducer: rootReducer,\r\n middleware: (getDefaultMiddleware) => {\r\n return getDefaultMiddleware({\r\n serializableCheck: false\r\n })\r\n .concat(\r\n apiPiiSlice.middleware,\r\n apiGraphSlice.middleware,\r\n apiGraphInsightsSlice.middleware,\r\n apiSharePointSlice.middleware,\r\n apiNintexSlice.middleware,\r\n );\r\n },\r\n});\r\n\r\nexport type AppDispatch = typeof storeMain.dispatch;\r\nexport type RootState = ReturnType;","import authModule from \"../../../../../utilities/AuthModule\";\r\nimport { axiosRetryGet, axiosRetryPost } from \"../../../../../utilities/AxiosRetryUtil\";\r\nimport { logger } from \"../../../../../utilities/logger\";\r\nimport { IApproval, IApprovalResponse, IReassignResponse } from \"./ApprovalsModels\";\r\n\r\nexport class ApprovalsService {\r\n private tenantId: string;\r\n constructor(tenantId: string) {\r\n this.tenantId = tenantId;\r\n }\r\n\r\n public async getMyApprovals(): Promise {\r\n // return (\r\n // await this.getData(\r\n // \"/approvalViews?$top=100&$filter=properties/userRole+eq+'Approver'+and+properties/isActive+eq+'true'+and+properties/isDescending+eq+'false'&api-version=2016-11-01\"\r\n // )\r\n // );\r\n try {\r\n let approvalResponse: any = await this.getData(\r\n \"/approvalViews?$filter=properties/userRole+eq+'Approver'+and+properties/isActive+eq+'true'+and+properties/isDescending+eq+'false'&api-version=2016-11-01\"\r\n );\r\n \r\n let approvals: IApproval[] = approvalResponse?.value;\r\n if (approvals?.length > 0) {\r\n let nextLink: string = approvalResponse?.nextLink;\r\n while (nextLink) {\r\n approvalResponse = await this.getData(nextLink, true);\r\n approvals = approvals.concat(approvalResponse?.value ?? []);\r\n nextLink = approvalResponse?.nextLink;\r\n }\r\n }\r\n return approvals ?? []; \r\n } catch (error) {\r\n logger(error, \"ApprovalsService.ts (getMyApprovals)\");\r\n }\r\n return [];\r\n }\r\n\r\n public async respond(approvalName: string, comment: string, response: string): Promise {\r\n try {\r\n return this.postData(`/approvals/${approvalName}/approvalResponses?api-version=2016-11-01`, {\r\n properties: { response: response, comments: comment },\r\n }); \r\n } catch (error) {\r\n logger(error, \"ApprovalsService.ts (respond)\");\r\n }\r\n return null;\r\n }\r\n\r\n public async reassign(approvalName: string, assignedToEmail: string, userUniqueId: string): Promise {\r\n\r\n const accessToken = await authModule.getFlowAccessToken();\r\n const responses: IReassignResponse[] = (await axiosRetryGet(`${this.getBaseUrl()}/approvals/${approvalName}/approvalRequests?api-version=2016-11-01`, {\r\n headers: {\r\n authorization: `Bearer ${accessToken}`,\r\n accept: \"application/json\",\r\n },\r\n }))?.data;\r\n if (responses) {\r\n //now find the NAME attribute of the object where properties.assignTo.id === currentUser.id\r\n const userName = responses.find(response => response.properties.assignedTo.id === userUniqueId)?.name;\r\n try {\r\n const response = await this.postData(`/approvals/${approvalName}/approvalRequests/${userName}/reassign?api-version=2016-11-01`, { assignedTo: assignedToEmail });\r\n return response; \r\n } catch (error) {\r\n logger(error, \"ApprovalsService.ts (reassign - postData)\");\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n protected getBaseUrl(): string {\r\n return `https://emea.api.flow.microsoft.com/providers/Microsoft.ProcessSimple/environments/Default-${this.tenantId}`;\r\n }\r\n\r\n protected getData = async (url: string, isNextPageRequest: boolean = false) => {\r\n try {\r\n const accessToken = await authModule.getFlowAccessToken();\r\n const response = await axiosRetryGet(\r\n !isNextPageRequest ? `${this.getBaseUrl()}${url}` : url,\r\n {\r\n headers: {\r\n authorization: `Bearer ${accessToken}`,\r\n accept: \"application/json\",\r\n },\r\n }\r\n );\r\n if (response.status === 200) {\r\n return response.data;\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n protected postData = async (url: string, body: any) => {\r\n try {\r\n const accessToken = await authModule.getFlowAccessToken();\r\n const response = await axiosRetryPost(\r\n `${this.getBaseUrl()}${url}`,\r\n body,\r\n {\r\n headers: {\r\n authorization: `Bearer ${accessToken}`,\r\n accept: \"application/json\",\r\n \"content-type\": \"application/json;charset=UTF-8\",\r\n },\r\n }\r\n );\r\n\r\n if (response && response.status === 200) {\r\n return response.data;\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n}","export enum FileTypeEnum {\r\n folder,\r\n file\r\n}","export class ArrayIdCombiner {\r\n static removeDuplicates(arr: any[], idsPresent: string[]) {\r\n const seen = new Set(idsPresent);\r\n const result = arr.filter(item => {\r\n const duplicate = seen.has(item.itemId);\r\n return !duplicate;\r\n });\r\n \r\n return result;\r\n }\r\n}","import { ComponentTypes } from \"../../config/config\";\r\nimport { IPageSettings } from \"../../interfaces/IPageSettings\";\r\nimport { IStoreItem } from \"../../interfaces/IStoredItem\";\r\nimport { FileTypeEnum } from \"../enums/fileTypeEnum\";\r\n\r\nexport class StoreItemHelper {\r\n static removeSaveLocation = (locations: IPageSettings[]) => {\r\n // if (locations.length && locations.length > 1) {\r\n // const lastItem: IPageSettings = locations[locations.length - 1];\r\n // const secondLastItem: IPageSettings = locations[locations.length - 2];\r\n // const popLastItem: boolean = lastItem.id === secondLastItem.id && lastItem.fileTitle === secondLastItem.fileTitle && lastItem.type === ComponentTypes.Saving;\r\n\r\n // if (popLastItem) {\r\n // locations.pop();\r\n // }\r\n // }\r\n \r\n // if (locations.length && locations.length > 0) {\r\n // const lastItem: IPageSettings = locations[locations.length - 1];\r\n // let popLastItem: boolean;\r\n // if (locations.length > 1) {\r\n // const secondLastItem: IPageSettings = locations[locations.length - 2];\r\n // popLastItem = lastItem.id === secondLastItem.id && lastItem.fileTitle === secondLastItem.fileTitle && lastItem.type === ComponentTypes.Saving; \r\n // }\r\n // else {\r\n // popLastItem = lastItem.type === ComponentTypes.Saving;\r\n // }\r\n\r\n // if (popLastItem) {\r\n // locations.pop();\r\n // }\r\n // }\r\n\r\n if (locations.length && locations.length > 0) {\r\n const lastItem: IPageSettings = locations[locations.length - 1];\r\n const popLastItem: boolean = lastItem.type === ComponentTypes.Saving;\r\n\r\n if (popLastItem) {\r\n locations.pop();\r\n }\r\n }\r\n };\r\n\r\n static itemExists = (existingItem: IStoreItem, newItems: IStoreItem[]): boolean => {\r\n if (!newItems) return false;\r\n return existingItem.fileType === FileTypeEnum.file\r\n ? newItems.some(newItem => newItem.itemId === existingItem.itemId)\r\n : StoreItemHelper.folderExists(existingItem, newItems);\r\n };\r\n\r\n static folderExists = (existingItem: IStoreItem, newItems: IStoreItem[]): boolean => {\r\n const isRoot = !existingItem?.itemId;\r\n const result = isRoot \r\n ? newItems.some(newItem => newItem.driveId === existingItem.driveId && newItem.name === existingItem.name)\r\n : newItems.some(newItem => newItem.driveId === existingItem.driveId && newItem.itemId === existingItem.itemId);\r\n\r\n return result;\r\n };\r\n\r\n static getExistingItem = (existingItems: IStoreItem[], newItem: IStoreItem): IStoreItem => {\r\n if (!existingItems) return null;\r\n return newItem.fileType === FileTypeEnum.file ? existingItems.find(item => item.itemId === newItem.itemId) : StoreItemHelper.getExistingFolder(existingItems, newItem);\r\n };\r\n\r\n private static getExistingFolder = (existingItems: IStoreItem[], newItem: IStoreItem): IStoreItem => {\r\n const isRoot = !newItem?.itemId;\r\n const result = isRoot\r\n ? existingItems.find(item => item.driveId === newItem.driveId && item.name === newItem.name)\r\n : existingItems.find(item => item.driveId === newItem.driveId && item.itemId === newItem.itemId);\r\n\r\n return result;\r\n };\r\n}","import { FileTypeEnum } from \"../enums/fileTypeEnum\";\r\nimport { getLastSplittedStringItem } from \"../helpers/stringHelper\";\r\nimport { IMapper } from \"../../interfaces/IMapper\";\r\nimport { IStoreItem } from \"../../interfaces/IStoredItem\";\r\nimport { tryDecodeUriComponent } from \"../../../../utilities/EncodeDecode\";\r\nimport dayjs from 'dayjs';\r\n\r\nexport class RecentFilesMapper implements IMapper {\r\n constructor(private languageStrings: any, private cannotBeRemoved: boolean = false) { }\r\n\r\n map(data: any, isCustomEntry?: boolean): IStoreItem[] {\r\n return data.filter(item => item).map(item => ({\r\n driveId: item?.parentReference?.driveId,\r\n name: item?.name,\r\n extension: getLastSplittedStringItem(item?.name, /[.]+/),\r\n folderId: item?.parentReference?.id,\r\n itemId: item?.id,\r\n fileType: FileTypeEnum.file,\r\n filePath: `[${this.languageStrings.Files}] ${tryDecodeUriComponent(item.webUrl)}`,\r\n // datePinned: item?.lastModifiedDateTime?.length && dayjs(item.lastModifiedDateTime).toDate(),\r\n datePinned: isCustomEntry ? new Date() : (item?.lastModifiedDateTime?.length && dayjs(item.lastModifiedDateTime).toDate()),\r\n lastModifiedDateTime: item?.lastModifiedDateTime,\r\n modifiedBy: item?.lastModifiedBy?.user?.displayName,\r\n cannotBeRemoved: this.cannotBeRemoved,\r\n sharedByName: item?.shared?.sharedBy?.user?.displayName,\r\n sharedByEmail: item?.shared?.sharedBy?.user?.email,\r\n sharedDateTime: item?.shared?.sharedDateTime,\r\n }));\r\n }\r\n}\r\n","import { Action } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { RootState } from \"..\";\r\nimport { logger } from \"../../../../utilities/logger\";\r\nimport { IApproval } from \"../../components/directoryComponents/myApprovals/ApprovalsModels\";\r\nimport { ApprovalsService } from \"../../components/directoryComponents/myApprovals/ApprovalsService\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { IApprovalState } from \"../models/reduxModels\";\r\nimport { RESET_APPROVALS, SET_IS_APPROVALS_LOADING, SET_APPROVALS, REMOVE_APPROVAL, SET_APPROVALSCOUNT, SET_LAST_APPROVAL_LOAD } from \"./actionTypes\";\r\n\r\nconst initialState: IApprovalState = { isApprovalsLoading: false, approvals: null, approvalCount: 0, lastApprovalLoad: \"\" };\r\n\r\nconst setIsApprovalsLoading = (isApprovalsLoading: boolean) => {\r\n return typedAction(SET_IS_APPROVALS_LOADING, isApprovalsLoading);\r\n}\r\n\r\nexport const setApprovals = (approvals: IApproval[]) => {\r\n return typedAction(SET_APPROVALS, approvals);\r\n}\r\n\r\nexport const setLastApprovalLoad = () => {\r\n return typedAction(SET_LAST_APPROVAL_LOAD);\r\n}\r\n\r\nexport const setApprovalsCount = (approvalsCount: number) => {\r\n return typedAction(SET_APPROVALSCOUNT, approvalsCount);\r\n}\r\n\r\nexport const removeApproval = (approval: IApproval) => {\r\n return typedAction(REMOVE_APPROVAL, approval);\r\n}\r\n\r\nexport const resetApprovals = () => {\r\n return typedAction(RESET_APPROVALS);\r\n}\r\n\r\nexport const getApprovals = (tenantId: string, shouldUpdateSilently: boolean = false, completedCallback: () => void = undefined): ThunkAction> => async (dispatch, getState) => {\r\n const state = getState();\r\n if (!state.approvals.isApprovalsLoading) {\r\n if (!shouldUpdateSilently) dispatch(setIsApprovalsLoading(true));\r\n let approvals: IApproval[];\r\n try {\r\n const approvalsService = new ApprovalsService(tenantId);\r\n approvals = await approvalsService.getMyApprovals();\r\n } catch (error) {\r\n logger(error, \"approvals.ts (getApprovals)\");\r\n }\r\n dispatch(setApprovals(approvals));\r\n if (!shouldUpdateSilently) dispatch(setApprovalsCount(approvals?.length ?? 0));\r\n if (completedCallback) completedCallback();\r\n }\r\n};\r\n\r\ntype ApprovalsAction = ReturnType;\r\n\r\nexport function approvalsReducer(\r\n state = initialState,\r\n action: ApprovalsAction\r\n): IApprovalState {\r\n switch (action.type) {\r\n case SET_IS_APPROVALS_LOADING:\r\n return { ...state, isApprovalsLoading: action.payload };\r\n case SET_APPROVALS:\r\n return { ...state, approvals: action.payload, isApprovalsLoading: false };\r\n case SET_LAST_APPROVAL_LOAD:\r\n return { ...state, lastApprovalLoad: new Date().toUTCString() };\r\n case SET_APPROVALSCOUNT:\r\n return { ...state, approvalCount: action.payload };\r\n case RESET_APPROVALS:\r\n return initialState;\r\n case REMOVE_APPROVAL:\r\n const newApprovals = [...state.approvals].filter(approval => approval.name != action.payload.name);\r\n return { ...state, approvals: newApprovals, approvalCount: state.approvalCount - 1 }\r\n default:\r\n return state;\r\n }\r\n}","import { typedAction } from \"../helpers\";\r\nimport { LoadingState } from \"../models/reduxModels\";\r\nimport { DECREMENT_AMOUNT_LOADING, INCREMENT_AMOUNT_LOADING, SET_LOADING } from \"./actionTypes\";\r\n\r\nconst initialState: LoadingState = { isLoading: false, amountOfLoaders: 0 };\r\n\r\nexport const setLoading = (toggleReload: boolean) => {\r\n return typedAction(SET_LOADING, toggleReload);\r\n};\r\n\r\nexport const incrementAmountOfLoaders = () => {\r\n return typedAction(INCREMENT_AMOUNT_LOADING);\r\n};\r\n\r\nexport const decrementAmountOfLoaders = () => {\r\n return typedAction(DECREMENT_AMOUNT_LOADING);\r\n};\r\n\r\ntype LoadingAction = ReturnType;\r\n\r\nexport function loadingReducer(\r\n state = initialState,\r\n action: LoadingAction\r\n): LoadingState {\r\n switch (action.type) {\r\n case SET_LOADING:\r\n return { ...state, isLoading: action.payload };\r\n case INCREMENT_AMOUNT_LOADING:\r\n return { ...state, amountOfLoaders: state.amountOfLoaders + 1 };\r\n case DECREMENT_AMOUNT_LOADING:\r\n return { ...state, amountOfLoaders: state.amountOfLoaders > 0 ? state.amountOfLoaders - 1 : 0 };\r\n default:\r\n return state;\r\n }\r\n}","import { IPageSettings } from \"../../interfaces/IPageSettings\";\r\nimport { OneDriveState } from \"../../types\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { RESET_DRIVE_LOCATION_BEFORE_SAVING, SET_ONE_DRIVE_LOCATION_BEFORE_SAVING } from \"./actionTypes\";\r\n\r\nconst initialState: OneDriveState = { locationBeforeSaving: [] };\r\n\r\nexport const setLocationBeforeSaving = (locationBeforeSaving: IPageSettings[]) => {\r\n return typedAction(SET_ONE_DRIVE_LOCATION_BEFORE_SAVING, locationBeforeSaving);\r\n};\r\n\r\nexport const resetLocationBeforeSaving = () => {\r\n return typedAction(RESET_DRIVE_LOCATION_BEFORE_SAVING);\r\n};\r\n\r\ntype OneDriveAction = ReturnType;\r\n\r\nexport function oneDriveReducer(\r\n state = initialState,\r\n action: OneDriveAction\r\n): OneDriveState {\r\n switch (action.type) {\r\n case SET_ONE_DRIVE_LOCATION_BEFORE_SAVING:\r\n return { locationBeforeSaving: action.payload };\r\n case RESET_DRIVE_LOCATION_BEFORE_SAVING:\r\n return { locationBeforeSaving: [] };\r\n default:\r\n return state;\r\n }\r\n}","import { OverlayState } from \"../../types\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { SET_OVERLAY_VISIBILITY } from \"./actionTypes\";\r\n\r\nconst initialState: OverlayState = { isVisible: false };\r\n\r\nexport const setOverlayVisibility = (isVisible: boolean) => {\r\n return typedAction(SET_OVERLAY_VISIBILITY, isVisible);\r\n}\r\n\r\ntype OverlayAction = ReturnType;\r\n\r\nexport function overlayReducer(\r\n state = initialState,\r\n action: OverlayAction\r\n): OverlayState {\r\n switch (action.type) {\r\n case SET_OVERLAY_VISIBILITY:\r\n return { isVisible: action.payload };\r\n default:\r\n return state;\r\n }\r\n}","import { Action } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { RootState } from \"..\";\r\nimport { IStoreItem } from \"../../interfaces/IStoredItem\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { IPinnedItems } from \"../models/reduxModels\";\r\nimport {\r\n RESET_USER_PINNED_ITEMS,\r\n SET_USER_PINNED_ITEMS,\r\n SET_PINNED_IS_LOADING,\r\n} from \"./actionTypes\";\r\nimport { FileTypeEnum } from \"../../components/enums/fileTypeEnum\";\r\nimport { StoreItemHelper } from \"../../components/helpers/storeItemHelper\";\r\nimport { logger } from \"../../../../utilities/logger\";\r\nimport LZString = require(\"lz-string\");\r\nimport { apiGetCompressedPinnedData, apiGetOldPinnedItems, apiSetPinnedItems } from \"../../services/ApiService\";\r\n\r\nconst initialState: IPinnedItems = {\r\n isPinnedItemsLoading: false,\r\n pinnedItems: null\r\n};\r\n//PINNED ITEMS\r\n//Get, Set, Add, Reset, Delete\r\nconst setIsPinnedItemsLoading = (isPinnedItemsLoading: boolean) => {\r\n return typedAction(SET_PINNED_IS_LOADING, isPinnedItemsLoading);\r\n};\r\n\r\nexport const setPinnedItems = (pinnedItems: IStoreItem[]) => {\r\n return typedAction(SET_USER_PINNED_ITEMS, pinnedItems);\r\n};\r\n\r\nexport const resetPinnedItems = () => {\r\n return typedAction(RESET_USER_PINNED_ITEMS);\r\n};\r\n\r\nexport const getPinnedItems = (accountId: string): ThunkAction, RootState, unknown, Action> => async (dispatch, getState) => {\r\n if (getState().pinned?.isPinnedItemsLoading) {\r\n return -1;\r\n }\r\n\r\n dispatch(setIsPinnedItemsLoading(true));\r\n let pinnedItems: IStoreItem[];\r\n try {\r\n let compressedPinnedData: string = await apiGetCompressedPinnedData(accountId);\r\n if (compressedPinnedData) {\r\n let fallback: boolean = false;\r\n try {\r\n const decompressedPinned = LZString.decompressFromBase64(compressedPinnedData);\r\n if (decompressedPinned) {\r\n pinnedItems = JSON.parse(decompressedPinned);\r\n }\r\n else {\r\n fallback = true;\r\n }\r\n } catch (error) {\r\n fallback = true;\r\n }\r\n if (fallback) {\r\n // Fallback for old structured data\r\n pinnedItems = await apiGetOldPinnedItems(accountId);\r\n }\r\n }\r\n } catch (error) {\r\n logger(error, \"pinnedItems.ts (getPinnedItems)\");\r\n pinnedItems = null;\r\n }\r\n if (pinnedItems?.length > 25) {\r\n pinnedItems = pinnedItems.slice(0, 25);\r\n }\r\n dispatch(setPinnedItems(pinnedItems ?? []));\r\n return pinnedItems ? pinnedItems.length : 0;\r\n};\r\n\r\nexport const addPinnedItem = (accountId: string, itemToPin: IStoreItem): ThunkAction> => async (dispatch, getState) => {\r\n if (itemToPin) {\r\n let updatedPinnedItems: IStoreItem[];\r\n try {\r\n const itemToPinArray: IStoreItem[] = [itemToPin];\r\n const existingPinnedItems: IStoreItem[] = (getState().pinned?.pinnedItems ?? []).filter(existingPinnedItem => !StoreItemHelper.itemExists(existingPinnedItem, itemToPinArray));\r\n\r\n updatedPinnedItems = existingPinnedItems\r\n ? itemToPinArray.concat(existingPinnedItems)\r\n : itemToPinArray;\r\n\r\n apiSetPinnedItems(accountId, updatedPinnedItems);\r\n } catch (e) {\r\n logger(e, \"pinnedItems.ts (addPinnedItems)\");\r\n }\r\n dispatch(setPinnedItems(updatedPinnedItems));\r\n }\r\n};\r\n\r\nexport const updatePinnedItems = (accountId: string, pinnedItems: IStoreItem[]): ThunkAction> => async (dispatch) => {\r\n if (pinnedItems) {\r\n try {\r\n apiSetPinnedItems(accountId, pinnedItems);\r\n } catch (e) {\r\n logger(e, \"pinnedItems.ts (updatePinnedItems)\");\r\n }\r\n dispatch(setPinnedItems(pinnedItems));\r\n }\r\n};\r\n\r\nexport const removePinnedItem = (accountId: string, item: { itemId: string; driveId: string }, fileType: FileTypeEnum): ThunkAction> => async (dispatch, getState) => {\r\n const existingSavedItems: IStoreItem[] = getState().pinned.pinnedItems ?? [];\r\n let updatedItems: IStoreItem[];\r\n try {\r\n if (fileType === FileTypeEnum.folder) {\r\n updatedItems = !item.itemId\r\n ? existingSavedItems.filter(x => x.driveId !== item.driveId || x.itemId != item.itemId)\r\n : existingSavedItems.filter(x => x.itemId !== item.itemId);\r\n }\r\n else {\r\n updatedItems = existingSavedItems.filter(x => x.itemId !== item.itemId);\r\n }\r\n\r\n apiSetPinnedItems(accountId, updatedItems);\r\n } catch (e) {\r\n logger(e, \"pinnedItems.ts (removePinnedItems)\");\r\n }\r\n\r\n dispatch(setPinnedItems(updatedItems));\r\n};\r\n\r\nexport const MovePinnedItemUp = (accountId: string, itemToMoveIndex: number): ThunkAction> => async (dispatch, getState) => {\r\n const existingPinnedItems: IStoreItem[] = getState().pinned.pinnedItems ?? [];\r\n if (itemToMoveIndex > 0 && existingPinnedItems.length > 0) {\r\n try {\r\n const updatedItems: IStoreItem[] = [...existingPinnedItems];\r\n [updatedItems[itemToMoveIndex], updatedItems[itemToMoveIndex - 1]] = [updatedItems[itemToMoveIndex - 1], updatedItems[itemToMoveIndex]];\r\n dispatch(updatePinnedItems(accountId, updatedItems));\r\n } catch (e) {\r\n logger(e, \"pinnedItems.ts (MovePinnedItemUp)\");\r\n }\r\n }\r\n};\r\n\r\nexport const MovePinnedItemDown = (accountId: string, itemToMoveIndex: number): ThunkAction> => async (dispatch, getState) => {\r\n const existingPinnedItems: IStoreItem[] = getState().pinned.pinnedItems ?? [];\r\n if (itemToMoveIndex < existingPinnedItems.length - 1 && existingPinnedItems.length > 0) {\r\n try {\r\n const updatedItems: IStoreItem[] = [...existingPinnedItems];\r\n [updatedItems[itemToMoveIndex], updatedItems[itemToMoveIndex + 1]] = [updatedItems[itemToMoveIndex + 1], updatedItems[itemToMoveIndex]];\r\n dispatch(updatePinnedItems(accountId, updatedItems));\r\n } catch (e) {\r\n logger(e, \"pinnedItems.ts (MovePinnedItemDown)\");\r\n }\r\n }\r\n};\r\n\r\n//Non Redux-based functions. They just live here because it is grouped nicely\r\nexport const getPinnedFolderIndex = (driveId: string, itemId: string, pinnedItems: IStoreItem[]): number => {\r\n let pinnedIndex: number = -1;\r\n if (pinnedItems && pinnedItems.length > 0) {\r\n try {\r\n pinnedIndex = !itemId\r\n ? pinnedItems.findIndex(item => item.fileType == FileTypeEnum.folder && item.driveId && item.driveId === driveId && !item.itemId)\r\n : pinnedItems.findIndex(item => item.fileType == FileTypeEnum.folder && item.itemId && item.itemId === itemId);\r\n } catch (e) {\r\n logger(e, \"pinnedItems.ts (getPinnedFolderIndex)\");\r\n }\r\n }\r\n return pinnedIndex;\r\n}\r\n\r\nexport const isFolderPinned = (driveId: string, itemId: string, pinnedItems: IStoreItem[]) => {\r\n return getPinnedFolderIndex(driveId, itemId, pinnedItems) > -1;\r\n}\r\n\r\nexport const getPinnedFileIndex = (itemId: string, pinnedItems: IStoreItem[]): number => {\r\n let pinnedIndex: number = -1;\r\n if (pinnedItems && pinnedItems.length > 0) {\r\n try {\r\n pinnedIndex = pinnedItems.findIndex(item => item.fileType == FileTypeEnum.file && item.itemId && item.itemId === itemId);\r\n } catch (e) {\r\n logger(e, \"pinnedItems.ts (getPinnedFileIndex)\");\r\n }\r\n }\r\n return pinnedIndex;\r\n}\r\n\r\nexport const isFilePinned = (itemId: string, pinnedItems: IStoreItem[]): boolean => {\r\n return getPinnedFileIndex(itemId, pinnedItems) > -1;\r\n}\r\n\r\n// const itemExist = (existingSavedItems: IStoreItem[], newItem: IStoreItem) => {\r\n// if (!existingSavedItems) return false;\r\n// return newItem.fileType === FileTypeEnum.file ? existingSavedItems.some(item => item.itemId === newItem.itemId) : folderExists(existingSavedItems, newItem);\r\n// }\r\n\r\n// const folderExists = (existingSavedItems: IStoreItem[], newItem: IStoreItem): boolean => {\r\n// const isRoot = !newItem?.itemId;\r\n// const result = isRoot ? existingSavedItems.some(item => item.driveId === newItem.driveId && item.name === newItem.name) :\r\n// existingSavedItems.some(item => item.driveId === newItem.driveId && item.itemId === newItem.itemId);\r\n\r\n// return result;\r\n// }\r\n\r\ntype HomeAction = ReturnType<\r\n | typeof setPinnedItems\r\n | typeof resetPinnedItems\r\n | typeof setIsPinnedItemsLoading\r\n>;\r\n\r\nexport function pinnedReducer(state = initialState, action: HomeAction): IPinnedItems {\r\n switch (action.type) {\r\n case SET_PINNED_IS_LOADING:\r\n return { ...state, isPinnedItemsLoading: action.payload };\r\n case SET_USER_PINNED_ITEMS:\r\n return { isPinnedItemsLoading: false, pinnedItems: action.payload };\r\n case RESET_USER_PINNED_ITEMS:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Action } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { RootState } from \"..\";\r\nimport { IStoreItem } from \"../../interfaces/IStoredItem\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { IRecentItems } from \"../models/reduxModels\";\r\nimport { getRecentFiles } from \"../../services/GraphService\";\r\nimport {\r\n RESET_USER_RECENT_ITEMS,\r\n SET_USER_RECENT_ITEMS,\r\n SET_RECENT_IS_LOADING\r\n} from \"./actionTypes\";\r\nimport { FileTypeEnum } from \"../../components/enums/fileTypeEnum\";\r\nimport { ArrayIdCombiner } from \"../../components/helpers/arrayCombiner\";\r\nimport { RecentFilesMapper } from \"../../components/mappers/recentFilesMapper\";\r\nimport { StoreItemHelper } from \"../../components/helpers/storeItemHelper\";\r\nimport dayjs from 'dayjs';\r\nimport { logger } from \"../../../../utilities/logger\";\r\nimport LZString = require(\"lz-string\");\r\nimport { apiGetCompressedRecentData, apiGetOldRecentItems, apiSetRecentItems } from \"../../services/ApiService\";\r\n\r\nconst initialState: IRecentItems = {\r\n isRecentItemsLoading: false,\r\n recentItems: null\r\n};\r\n\r\nconst setIsRecentItemsLoading = (isRecentItemsLoading: boolean) => {\r\n return typedAction(SET_RECENT_IS_LOADING, isRecentItemsLoading);\r\n};\r\n\r\nexport const setRecentItems = (recentItems: IStoreItem[]) => {\r\n return typedAction(SET_USER_RECENT_ITEMS, recentItems);\r\n};\r\n\r\nexport const resetRecentItems = () => {\r\n return typedAction(RESET_USER_RECENT_ITEMS);\r\n};\r\n\r\nexport const getRecentItems = (accountId: string, languageStrings: any): ThunkAction, RootState, unknown, Action> => async (dispatch, getState) => {\r\n if (getState().recent?.isRecentItemsLoading) {\r\n return -1;\r\n }\r\n\r\n dispatch(setIsRecentItemsLoading(true));\r\n\r\n const getLocalRecentItems = async () => {\r\n let localRecentItems: IStoreItem[];\r\n try {\r\n let compressedRecentData: string = await apiGetCompressedRecentData(accountId);\r\n if (compressedRecentData) {\r\n let fallback: boolean = false;\r\n try {\r\n const decompressedData = LZString.decompressFromBase64(compressedRecentData);\r\n if (decompressedData) {\r\n localRecentItems = JSON.parse(decompressedData);\r\n } else {\r\n fallback = true;\r\n }\r\n } catch (error) {\r\n // Fallback for old structured data\r\n fallback = true;\r\n }\r\n if (fallback) {\r\n try {\r\n localRecentItems = await apiGetOldRecentItems(accountId)\r\n } catch (e) {\r\n localRecentItems = null;\r\n }\r\n }\r\n }\r\n \r\n if (localRecentItems && Array.isArray(localRecentItems)) {\r\n localRecentItems = localRecentItems\r\n .map(recentItem => {\r\n return {\r\n ...recentItem,\r\n datePinned: recentItem.datePinned && dayjs(recentItem.datePinned).toDate()\r\n }\r\n })\r\n .sort((a, b) => a?.datePinned && b?.datePinned && +a.datePinned < +b.datePinned ? 1 : -1)\r\n .slice(0, 25);\r\n }\r\n } catch (error) {\r\n logger(error, \"recentItems.ts (getLocalRecentItems)\");\r\n }\r\n return localRecentItems;\r\n }\r\n\r\n let recentItems: IStoreItem[];\r\n let graphRecentFiles: any;\r\n\r\n [recentItems, graphRecentFiles] = await Promise.all([getLocalRecentItems(), getRecentFiles(true)]);\r\n\r\n let graphRemovedDuplicates: IStoreItem[];\r\n try {\r\n if (graphRecentFiles) {\r\n const graphRecentStoreItems = new RecentFilesMapper(languageStrings, true).map(graphRecentFiles);\r\n graphRemovedDuplicates = recentItems ? ArrayIdCombiner.removeDuplicates(graphRecentStoreItems, recentItems.map(x => x.itemId)) : graphRecentStoreItems;\r\n }\r\n } catch (error) {\r\n logger(error, \"recentItems.ts (Remove duplicates)\");\r\n }\r\n\r\n const combined: IStoreItem[] = [...(recentItems ?? []), ...(graphRemovedDuplicates ?? [])].sort((a, b) => {\r\n // return a?.lastModifiedDateTime?.length && b?.lastModifiedDateTime?.length && dayjs(a.lastModifiedDateTime).unix() < dayjs(b.lastModifiedDateTime).unix() ? 1 : -1;\r\n return a?.datePinned && b?.datePinned && +a.datePinned < +b.datePinned ? 1 : -1;\r\n });\r\n\r\n dispatch(setRecentItems(combined));\r\n return combined.length;\r\n};\r\n\r\nexport const addRecentItem = (accountId: string, newRecentItems: IStoreItem[]): ThunkAction> => (dispatch, getState) => {\r\n if (newRecentItems && newRecentItems?.length > 0) {\r\n let updatedRecentItems: IStoreItem[];\r\n try {\r\n const existingRecentItems: IStoreItem[] = getState().recent.recentItems?.filter(existingRecentItem => !StoreItemHelper.itemExists(existingRecentItem, newRecentItems));\r\n\r\n updatedRecentItems = existingRecentItems\r\n ? newRecentItems.concat(existingRecentItems)\r\n : newRecentItems;\r\n\r\n apiSetRecentItems(accountId, updatedRecentItems);\r\n } catch (e) {\r\n logger(e, \"recentItems.ts (addRecentItems)\");\r\n }\r\n dispatch(setRecentItems(updatedRecentItems));\r\n }\r\n};\r\n\r\nexport const removeRecentItem = (accountId: string, item: { itemId: string; driveId: string }, fileType: FileTypeEnum): ThunkAction> => async (dispatch, getState) => {\r\n const existingItems: IStoreItem[] = getState().recent.recentItems ?? [];\r\n let updatedItems: IStoreItem[];\r\n try {\r\n if (fileType === FileTypeEnum.folder) {\r\n updatedItems = !item.itemId\r\n ? existingItems.filter(x => x.driveId !== item.driveId || x.itemId !== item.itemId)\r\n : existingItems.filter(x => x.itemId !== item.itemId);\r\n }\r\n else {\r\n updatedItems = existingItems.filter(x => x.itemId !== item.itemId);\r\n }\r\n\r\n apiSetRecentItems(accountId, updatedItems);\r\n } catch (e) {\r\n logger(e, \"recentItems.ts (removeRecentItems)\");\r\n }\r\n\r\n dispatch(setRecentItems(updatedItems));\r\n};\r\n\r\n\r\ntype HomeAction = ReturnType<\r\n | typeof setRecentItems\r\n | typeof resetRecentItems\r\n | typeof setIsRecentItemsLoading\r\n>;\r\n\r\nexport function recentReducer(state = initialState, action: HomeAction): IRecentItems {\r\n switch (action.type) {\r\n case SET_RECENT_IS_LOADING:\r\n return { ...state, isRecentItemsLoading: action.payload };\r\n case SET_USER_RECENT_ITEMS:\r\n return { isRecentItemsLoading: false, recentItems: action.payload };\r\n case RESET_USER_RECENT_ITEMS:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { ReloadState } from \"../../types\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { TOGGLE_RELOAD } from \"./actionTypes\";\r\n\r\nconst initialState: ReloadState = { toggle: false };\r\n\r\nexport const toggleReload = () => {\r\n return typedAction(TOGGLE_RELOAD);\r\n}\r\n\r\ntype ReloadAction = ReturnType;\r\n\r\nexport function reloadReducer(\r\n state = initialState,\r\n action: ReloadAction\r\n): ReloadState {\r\n switch (action.type) {\r\n case TOGGLE_RELOAD:\r\n const currentToggle: boolean = state.toggle;\r\n return { toggle: !currentToggle };\r\n default:\r\n return state;\r\n }\r\n}","import { FilterTypeEnum } from \"../../components/enums/FilterTypeEnum\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { SearchState } from \"../models/reduxModels\";\r\nimport { SET_IS_IN_SEARCH_MODE, SET_SEARCH, SET_SEARCH_FILTER_TYPE } from \"./actionTypes\";\r\n\r\nconst initialState: SearchState = { searchValue: { value: \"\", filterType: \"\" }, isInSearchMode: false };\r\n\r\nexport const setSearch = (value: string) => {\r\n return typedAction(SET_SEARCH, value?.trim());\r\n};\r\n\r\nexport const setIsInSearchMode = (isInSearchMode: boolean) => {\r\n return typedAction(SET_IS_IN_SEARCH_MODE, isInSearchMode);\r\n};\r\n\r\nexport const setSearchFilterType = (searchFilterType: FilterTypeEnum | \"\") => {\r\n return typedAction(SET_SEARCH_FILTER_TYPE, searchFilterType);\r\n};\r\n\r\ntype SharepointInfoAction = ReturnType;\r\n\r\nexport function searchReducer(state = initialState, action: SharepointInfoAction): SearchState {\r\n switch (action.type) {\r\n case SET_SEARCH:\r\n return { ...state, searchValue: { ...state.searchValue, value: action.payload } };\r\n case SET_IS_IN_SEARCH_MODE:\r\n return { ...state, isInSearchMode: action.payload };\r\n case SET_SEARCH_FILTER_TYPE:\r\n return { ...state, searchValue: { ...state.searchValue, filterType: action.payload } }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Action } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { RootState } from \"..\";\r\nimport { IStoreItem } from \"../../interfaces/IStoredItem\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { ISharedItems } from \"../models/reduxModels\";\r\nimport { getSharedFiles } from \"../../services/GraphService\";\r\nimport {\r\n RESET_USER_SHARED_ITEMS,\r\n SET_USER_SHARED_ITEMS,\r\n SET_SHARED_IS_LOADING\r\n} from \"./actionTypes\";\r\nimport { RecentFilesMapper } from \"../../components/mappers/recentFilesMapper\";\r\nimport { logger } from \"../../../../utilities/logger\";\r\n\r\nconst initialState: ISharedItems = {\r\n isSharedItemsLoading: false,\r\n sharedItems: null\r\n};\r\n\r\nconst setIsSharedItemsLoading = (isSharedItemsLoading: boolean) => {\r\n return typedAction(SET_SHARED_IS_LOADING, isSharedItemsLoading);\r\n};\r\n\r\nexport const getSharedItems = (languageStrings: any): ThunkAction> => async (dispatch, getState) => {\r\n dispatch(setIsSharedItemsLoading(true));\r\n let sharedItems: IStoreItem[];\r\n try {\r\n const graphSharedItems = await getSharedFiles();\r\n if (graphSharedItems) {\r\n sharedItems = new RecentFilesMapper(languageStrings, true).map(graphSharedItems);\r\n }\r\n } catch (error) {\r\n logger(error, \"shareItems.ts (getSharedItems)\");\r\n }\r\n dispatch(setSharedItems(sharedItems ?? []));\r\n};\r\n\r\nexport const setSharedItems = (sharedItems: IStoreItem[]) => {\r\n return typedAction(SET_USER_SHARED_ITEMS, sharedItems);\r\n};\r\n\r\nexport const resetSharedItems = () => {\r\n return typedAction(RESET_USER_SHARED_ITEMS);\r\n};\r\n\r\ntype HomeAction = ReturnType<\r\n | typeof setSharedItems\r\n | typeof resetSharedItems\r\n | typeof setIsSharedItemsLoading\r\n>;\r\n\r\nexport function sharedReducer(state = initialState, action: HomeAction): ISharedItems {\r\n switch (action.type) {\r\n case SET_SHARED_IS_LOADING:\r\n return { ...state, isSharedItemsLoading: action.payload };\r\n case SET_USER_SHARED_ITEMS:\r\n return { isSharedItemsLoading: false, sharedItems: action.payload };\r\n case RESET_USER_SHARED_ITEMS:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n};","import { typedAction } from \"../helpers\";\r\nimport { SharepointInfoState } from \"../models/reduxModels\";\r\nimport { RESET_SHAREPOINT_INFO, SET_SHAREPOINT_INFO, SET_IS_SITES_LOADING, SET_SITES_LAST_CACHE_REFRESH } from \"./actionTypes\";\r\nimport authModule from \"../../../../utilities/AuthModule\";\r\nimport { getAllSubSites, searchSharePointSites } from \"../../services/GraphService\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { RootState } from \"..\";\r\nimport { Action } from \"redux\";\r\nimport { decrementAmountOfLoaders, incrementAmountOfLoaders } from \"./loader\";\r\nimport { logger } from \"../../../../utilities/logger\";\r\nimport { IHubSite } from \"../../interfaces/IHubSite\";\r\nimport { getHubSites } from \"../../services/SharePointRestServices\";\r\nimport { SharePointSiteHelper } from \"../../../../utilities/SharePointSiteHelper\";\r\nimport { ISiteInfo, ISiteSearchRequest, ISiteSearchResult, filterNonTopLevelISiteInfoArray } from \"../../interfaces/ISiteInfo\";\r\nimport { IGraphSearchPager } from \"../../interfaces/IGraphSearchPager\";\r\nimport { getLocalStorage, localStorageKeys, setLocalStorage } from \"../../components/helpers/localStorageHelper\";\r\n\r\nconst initialState: SharepointInfoState = { mainUrl: \"\", isSitesLoading: false, sites: null, pageData: null };\r\n\r\nconst setIsSitesLoading = (isSitesLoading: boolean) => {\r\n return typedAction(SET_IS_SITES_LOADING, isSitesLoading);\r\n}\r\n\r\nexport const setSharepointInfo = (info: SharepointInfoState) => {\r\n return typedAction(SET_SHAREPOINT_INFO, info);\r\n};\r\n\r\nconst setSitesLastCacheRefresh = () => {\r\n return typedAction(SET_SITES_LAST_CACHE_REFRESH);\r\n}\r\n\r\nexport const resetSharepointInfo = () => {\r\n return typedAction(RESET_SHAREPOINT_INFO);\r\n}\r\n\r\nexport const getSites = (allowedSiteCollections?: string[], previousPageData?: IGraphSearchPager, skipLoaders: boolean = false, useCachedSites: boolean = false): ThunkAction, RootState, unknown, Action> => async (dispatch, getState) => {\r\n if (useCachedSites) {\r\n const cachedSites = getLocalStorage(localStorageKeys.sites);\r\n if (Array.isArray(cachedSites) && cachedSites?.length > 0) {\r\n dispatch(\r\n setSharepointInfo({\r\n isSitesLoading: false,\r\n mainUrl: await getBaseSiteUrl(),\r\n sites: cachedSites,\r\n lastCacheFetch: new Date().getTime()\r\n })\r\n );\r\n dispatch(decrementAmountOfLoaders());\r\n }\r\n else {\r\n dispatch(setSitesLastCacheRefresh());\r\n }\r\n }\r\n\r\n let currentState = getState();\r\n let sites: ISiteInfo[] = currentState.sharePointInfo.sites ?? [];\r\n\r\n if (!currentState.sharePointInfo.isSitesLoading) {\r\n\r\n if (!skipLoaders) {\r\n if (!previousPageData?.moreResultsAvailable) dispatch(incrementAmountOfLoaders());\r\n dispatch(setIsSitesLoading(true));\r\n }\r\n\r\n let siteCollections: ISiteSearchResult = await getAllSites(allowedSiteCollections ?? currentState.tenantInfo.allowedSiteCollections, previousPageData);\r\n\r\n setLocalStorage(localStorageKeys.sites, siteCollections.sites);\r\n\r\n if (previousPageData?.moreResultsAvailable) {\r\n siteCollections.sites = siteCollections?.sites?.length > 0\r\n ? (currentState.sharePointInfo.sites?.filter(existingSite => !siteCollections.sites.some(newSite => existingSite.id === newSite.id)) ?? []).concat(siteCollections.sites)\r\n : currentState.sharePointInfo.sites;\r\n }\r\n\r\n dispatch(\r\n setSharepointInfo({\r\n isSitesLoading: false,\r\n mainUrl: await getBaseSiteUrl(),\r\n sites: siteCollections.sites,\r\n pageData: siteCollections?.pageData,\r\n lastCacheFetch: currentState.sharePointInfo.lastCacheFetch,\r\n lastServerFetch: new Date().getTime(),\r\n })\r\n );\r\n\r\n if (!skipLoaders && !previousPageData?.moreResultsAvailable) dispatch(decrementAmountOfLoaders());\r\n\r\n sites = siteCollections.sites;\r\n }\r\n\r\n return sites;\r\n};\r\n\r\nexport const getAllSites = async (allowedSiteCollections?: string[], pageData?: IGraphSearchPager): Promise => {\r\n\r\n const isNextPageRequest: boolean = pageData?.moreResultsAvailable;\r\n\r\n let [allHubSites, allowedHubSites] = await Promise.all([\r\n !isNextPageRequest && getAllHubSites(),\r\n !isNextPageRequest && searchSharePointSites({ hubSitesOnly: true, allowedSites: allowedSiteCollections })\r\n ]);\r\n\r\n if (allHubSites?.length > 0 && allowedHubSites?.sites?.length > 0) {\r\n\r\n SharePointSiteHelper.reset();\r\n\r\n allowedHubSites.sites.forEach(site => {\r\n site.isHub = true;\r\n\r\n const hub: IHubSite = allHubSites.find(hubSite => hubSite.siteUrl?.trim().toLowerCase() === site.webUrl?.trim().toLowerCase());\r\n if (hub) {\r\n site.hubId = hub.id;\r\n if (hub.title) site.name = hub.title;\r\n if (hub.description) site.description = hub.description;\r\n if (hub.parentHubSiteId && hub.parentHubSiteId !== \"00000000-0000-0000-0000-000000000000\") {\r\n const parentHub: IHubSite = allHubSites.find(hubSite => hubSite.id === hub.parentHubSiteId);\r\n if (parentHub && allowedHubSites.sites.findIndex(allowedHub => parentHub.siteUrl?.trim().toLowerCase() === allowedHub.webUrl?.trim().toLowerCase()) !== -1) {\r\n site.parentHubId = hub.parentHubSiteId;\r\n }\r\n }\r\n }\r\n else {\r\n const siteIdParts: string[] = site.id?.split(\",\") // xblox.sharepoint.com,058798cc-59c1-451f-8957-49e32c49aeb1,4c5fa046-b695-4b4b-86ef-b47bb86f7cbe\r\n if (Array.isArray(siteIdParts) && siteIdParts.length > 1 && siteIdParts[1]) {\r\n site.hubId = siteIdParts[1];\r\n }\r\n }\r\n\r\n if (site.hubId) {\r\n SharePointSiteHelper.hubSites.push(site);\r\n }\r\n });\r\n\r\n }\r\n\r\n const searchRequest: ISiteSearchRequest = { from: pageData?.from, allowedSites: allowedSiteCollections, hubSiteIds: SharePointSiteHelper.hubSites.map(hub => hub.hubId) };\r\n let siteCollections: ISiteSearchResult;\r\n let subSites: ISiteInfo[];\r\n [siteCollections, subSites] = await Promise.all([\r\n searchSharePointSites(searchRequest),\r\n !isNextPageRequest && getAllSubSites(searchRequest)\r\n ]);\r\n\r\n if (!isNextPageRequest) {\r\n if (SharePointSiteHelper.hubSites.length > 0) {\r\n siteCollections.sites = SharePointSiteHelper.hubSites\r\n .concat(siteCollections.sites.filter(site => !allHubSites.some(hubSite => hubSite.siteUrl?.trim().toLowerCase() === site.webUrl?.trim().toLowerCase())))\r\n .filter(site => !site.parentHubId);\r\n }\r\n\r\n if (Array.isArray(subSites) && subSites.length > 0) {\r\n siteCollections.sites = siteCollections.sites\r\n .concat(subSites)\r\n .filter(filterNonTopLevelISiteInfoArray);\r\n }\r\n }\r\n else if (SharePointSiteHelper.hubSites.length > 0) {\r\n siteCollections.sites = siteCollections.sites\r\n .filter(site => !SharePointSiteHelper.hubSites.some(hubSite => hubSite.webUrl?.trim().toLowerCase() === site.webUrl?.trim().toLowerCase()));\r\n }\r\n\r\n return siteCollections;\r\n};\r\n\r\nconst getAllHubSites = async (): Promise => {\r\n let hubSites: IHubSite[];\r\n try {\r\n const sharePointAccessToken: string = await authModule.getSharePointAccessToken();\r\n hubSites = await getHubSites(sharePointAccessToken, await getBaseSiteUrl());\r\n } catch (error) {\r\n logger(error, \"sharePointInfo.ts (getAllHubSites)\");\r\n }\r\n return hubSites?.length > 0 ? hubSites : [];\r\n};\r\n\r\nconst getBaseSiteUrl = async (): Promise => {\r\n return (await authModule.getAccount(false))?.sharePointBaseUrl;\r\n};\r\n\r\ntype SharepointInfoAction = ReturnType;\r\n\r\nexport function sharePointInfoReducer(state = initialState, action: SharepointInfoAction): SharepointInfoState {\r\n switch (action.type) {\r\n case SET_SHAREPOINT_INFO:\r\n return action.payload;\r\n case SET_SITES_LAST_CACHE_REFRESH:\r\n return { ...state, lastCacheFetch: new Date().getTime() };\r\n case SET_IS_SITES_LOADING:\r\n return { ...state, isSitesLoading: action.payload };\r\n case RESET_SHAREPOINT_INFO:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { typedAction } from \"../helpers\";\r\nimport { ShowFolderDeleteDialog } from \"../models/reduxModels\";\r\nimport { SET_SHOW_FOLDER_DELETE_DIALOG } from \"./actionTypes\";\r\n\r\nconst initialState: ShowFolderDeleteDialog = { showFolderDeleteDialog: false };\r\n\r\nexport const setShowFolderDeleteDialog = (toggleReload: boolean) => {\r\n return typedAction(SET_SHOW_FOLDER_DELETE_DIALOG, toggleReload);\r\n};\r\n\r\ntype ShowFolderDeleteDialogAction = ReturnType;\r\n\r\nexport function showFolderDeleteDialogReducer(\r\n state = initialState,\r\n action: ShowFolderDeleteDialogAction\r\n): ShowFolderDeleteDialog {\r\n switch (action.type) {\r\n case SET_SHOW_FOLDER_DELETE_DIALOG:\r\n return { ...state, showFolderDeleteDialog: action.payload };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Action } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { RootState } from \"..\";\r\nimport { IStoreItem } from \"../../interfaces/IStoredItem\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { ISuggestedItems } from \"../models/reduxModels\";\r\nimport {\r\n RESET_USER_SUGGESTED_ITEMS,\r\n SET_USER_SUGGESTED_ITEMS,\r\n SET_SUGGESTED_IS_LOADING,\r\n} from \"./actionTypes\";\r\nimport { StoreItemHelper } from \"../../components/helpers/storeItemHelper\";\r\nimport { logger } from \"../../../../utilities/logger\";\r\nimport LZString = require(\"lz-string\");\r\nimport { apiGetCompressedSuggestedData, apiSetSuggestedItems } from \"../../services/ApiService\";\r\n\r\nconst initialState: ISuggestedItems = {\r\n isSuggestedItemsLoading: false,\r\n suggestedItems: null\r\n};\r\n//SUGGESTED ITEMS\r\n//Get, Set, Add, Reset, Delete\r\nconst setIsSuggestedItemsLoading = (isSuggestedItemsLoading: boolean) => {\r\n return typedAction(SET_SUGGESTED_IS_LOADING, isSuggestedItemsLoading);\r\n};\r\n\r\nexport const setSuggestedItems = (suggestedItems: IStoreItem[]) => {\r\n return typedAction(SET_USER_SUGGESTED_ITEMS, suggestedItems);\r\n};\r\n\r\nexport const resetSuggestedItems = () => {\r\n return typedAction(RESET_USER_SUGGESTED_ITEMS);\r\n};\r\n\r\nexport const getSuggestedItems = (accountId: string, sender: string): ThunkAction, RootState, unknown, Action> => async (dispatch) => {\r\n dispatch(setIsSuggestedItemsLoading(true));\r\n let suggestedItems: IStoreItem[];\r\n try {\r\n let compressedSuggestedData: string = await apiGetCompressedSuggestedData(accountId, sender);\r\n if (compressedSuggestedData) {\r\n const decompressedSuggested = LZString.decompressFromBase64(compressedSuggestedData);\r\n if (decompressedSuggested) {\r\n suggestedItems = JSON.parse(decompressedSuggested);\r\n }\r\n }\r\n } catch (error) {\r\n logger(error, \"suggestedItems.ts (getSuggestedItems)\");\r\n suggestedItems = null;\r\n }\r\n if (suggestedItems?.length > 25) {\r\n suggestedItems = suggestedItems.slice(0, 25);\r\n }\r\n\r\n dispatch(setSuggestedItems(suggestedItems ?? []));\r\n return suggestedItems ? suggestedItems.length : 0;\r\n};\r\n\r\nexport const addSuggestedItem = (accountId: string, sender: string, itemToAdd: IStoreItem): ThunkAction> => async (dispatch, getState) => {\r\n if (sender && itemToAdd) {\r\n let updatedSuggestedItems: IStoreItem[];\r\n try {\r\n const existingSuggestedItems: IStoreItem[] = getState().suggested?.suggestedItems ?? [];\r\n\r\n let itemExists = false;\r\n updatedSuggestedItems = existingSuggestedItems.map(item => {\r\n if (StoreItemHelper.itemExists(item, [itemToAdd])) {\r\n itemExists = true;\r\n return { ...item, saveCount: item.saveCount ? item.saveCount + 1 : 2 };\r\n }\r\n return { ...item };\r\n });\r\n\r\n if (!itemExists) {\r\n updatedSuggestedItems.unshift({ ...itemToAdd, saveCount: 1 });\r\n }\r\n\r\n updatedSuggestedItems.sort((a, b) => b.saveCount - a.saveCount);\r\n\r\n apiSetSuggestedItems(accountId, sender, updatedSuggestedItems);\r\n dispatch(setSuggestedItems(updatedSuggestedItems));\r\n } catch (e) {\r\n logger(e, \"suggestedItems.ts (addSuggestedItem)\");\r\n }\r\n }\r\n};\r\n\r\nexport const removeSuggestedItem = (accountId: string, sender: string, item: { itemId: string; driveId: string }): ThunkAction> => async (dispatch, getState) => {\r\n try {\r\n let updatedItems: IStoreItem[];\r\n const existingSuggestedItems: IStoreItem[] = getState().suggested?.suggestedItems ?? [];\r\n\r\n updatedItems = !item.itemId\r\n ? existingSuggestedItems.filter(x => x.driveId !== item.driveId || x.itemId != item.itemId)\r\n : existingSuggestedItems.filter(x => x.itemId !== item.itemId);\r\n\r\n dispatch(setSuggestedItems(updatedItems));\r\n apiSetSuggestedItems(accountId, sender, updatedItems);\r\n } catch (e) {\r\n logger(e, \"suggestedItems.ts (removeSuggestedItem)\");\r\n }\r\n};\r\n\r\ntype HomeAction = ReturnType<\r\n | typeof setSuggestedItems\r\n | typeof resetSuggestedItems\r\n | typeof setIsSuggestedItemsLoading\r\n>;\r\n\r\nexport function suggestedReducer(state = initialState, action: HomeAction): ISuggestedItems {\r\n switch (action.type) {\r\n case SET_SUGGESTED_IS_LOADING:\r\n return { ...state, isSuggestedItemsLoading: action.payload };\r\n case SET_USER_SUGGESTED_ITEMS:\r\n return { isSuggestedItemsLoading: false, suggestedItems: action.payload };\r\n case RESET_USER_SUGGESTED_ITEMS:\r\n return initialState;\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { Action } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { RootState } from \"..\";\r\nimport authModule from \"../../../../utilities/AuthModule\";\r\nimport { logger } from \"../../../../utilities/logger\";\r\nimport { ITeam } from \"../../interfaces/services/ITeam\";\r\nimport { ITeamChannelDto } from \"../../interfaces/services/ITeamChannelDto.1\";\r\nimport { getJoinedTeams, getTeamChannels } from \"../../services/GraphService\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { ITeamState } from \"../models/reduxModels\";\r\nimport { RESET_TEAMS, SET_IS_TEAMS_LOADING, SET_TEAMS, SET_TEAM_CHANNELS, SET_TEAMS_LAST_SERVER_REFRESH, SET_TEAMS_LAST_CACHE_REFRESH } from \"./actionTypes\";\r\nimport { decrementAmountOfLoaders, incrementAmountOfLoaders } from \"./loader\";\r\nimport { getLocalStorage, localStorageKeys, setLocalStorage } from \"../../components/helpers/localStorageHelper\";\r\n\r\nconst initialState: ITeamState = { isTeamsLoading: false, teams: null, channels: null };\r\n\r\nconst setIsTeamsLoading = (isTeamsLoading: boolean) => {\r\n return typedAction(SET_IS_TEAMS_LOADING, isTeamsLoading);\r\n}\r\n\r\nconst setTeamsLastServerRefresh = () => {\r\n return typedAction(SET_TEAMS_LAST_SERVER_REFRESH);\r\n}\r\n\r\nconst setTeamsLastCacheRefresh = () => {\r\n return typedAction(SET_TEAMS_LAST_CACHE_REFRESH);\r\n}\r\n\r\nexport const setTeams = (teams: ITeam[]) => {\r\n return typedAction(SET_TEAMS, teams);\r\n}\r\n\r\nexport const resetTeams = () => {\r\n return typedAction(RESET_TEAMS);\r\n}\r\n\r\nexport const addTeamChannels = (channels: ITeamChannelDto[], teamGroupId: string) => {\r\n return typedAction(SET_TEAM_CHANNELS, { channels, teamGroupId });\r\n}\r\n\r\nexport const getTeams = (skipLoaders: boolean = false, useCachedTeams: boolean = false): ThunkAction, RootState, unknown, Action> => async (dispatch, getState) => {\r\n if (useCachedTeams) {\r\n const cachedTeams = getLocalStorage(localStorageKeys.teams);\r\n\r\n if (Array.isArray(cachedTeams) && cachedTeams?.length > 0) {\r\n dispatch(setTeams(cachedTeams.sort((teamA, teamB) => teamA.displayName?.toUpperCase() < teamB.displayName?.toUpperCase() ? -1 : 1)));\r\n dispatch(setIsTeamsLoading(false));\r\n dispatch(decrementAmountOfLoaders());\r\n }\r\n\r\n dispatch(setTeamsLastCacheRefresh());\r\n }\r\n\r\n if (!getState().teams.isTeamsLoading) {\r\n if (!skipLoaders) {\r\n dispatch(incrementAmountOfLoaders());\r\n dispatch(setIsTeamsLoading(true));\r\n }\r\n let teams: ITeam[];\r\n try {\r\n teams = await getJoinedTeams();\r\n\r\n if (teams?.length > 0) {\r\n const allowedTeams: string[] = getState().tenantInfo.allowedTeams;\r\n if (allowedTeams?.length > 0) {\r\n teams = teams.filter(team => allowedTeams.some(allowedTeam => team.displayName?.trim().toLowerCase() === allowedTeam.trim()));\r\n }\r\n }\r\n setLocalStorage(localStorageKeys.teams, teams);\r\n } catch (error) {\r\n logger(error, \"teams.ts (getTeams)\");\r\n }\r\n dispatch(setTeams(teams.sort((teamA, teamB) => teamA.displayName?.toUpperCase() < teamB.displayName?.toUpperCase() ? -1 : 1)));\r\n dispatch(setTeamsLastServerRefresh());\r\n if (!skipLoaders) dispatch(decrementAmountOfLoaders());\r\n return teams;\r\n }\r\n return getState().teams.teams ?? [];\r\n};\r\n\r\nexport const getChannels = (teamGroupId: string, teamDriveId: string): ThunkAction, RootState, unknown, Action> => async dispatch => {\r\n dispatch(incrementAmountOfLoaders());\r\n let channels: ITeamChannelDto[] = [];\r\n try {\r\n const accessToken = await authModule.getGraphAccessToken();\r\n channels = await getTeamChannels(accessToken, teamGroupId, teamDriveId);\r\n dispatch(addTeamChannels(channels, teamGroupId));\r\n } catch (error) {\r\n logger(error, \"teams.ts (getChannels)\");\r\n }\r\n dispatch(decrementAmountOfLoaders());\r\n return channels;\r\n};\r\n\r\ntype TeamAction = ReturnType;\r\n\r\nexport function teamsReducer(\r\n state = initialState,\r\n action: TeamAction\r\n): ITeamState {\r\n switch (action.type) {\r\n case SET_IS_TEAMS_LOADING:\r\n return { ...state, isTeamsLoading: action.payload };\r\n case SET_TEAMS_LAST_SERVER_REFRESH:\r\n return { ...state, lastServerFetch: new Date().getTime() };\r\n case SET_TEAMS_LAST_CACHE_REFRESH:\r\n return { ...state, lastCacheFetch: new Date().getTime() };\r\n case SET_TEAMS:\r\n return { ...state, teams: action.payload, isTeamsLoading: false };\r\n case RESET_TEAMS:\r\n return initialState;\r\n case SET_TEAM_CHANNELS:\r\n if (state.channels) {\r\n const filteredChannels: ITeamChannelDto[] = state.channels.filter(channel => channel.teamGroupId !== action.payload.teamGroupId);\r\n const combinedChannels: ITeamChannelDto[] = filteredChannels\r\n .concat(action.payload.channels)\r\n .sort((channelA, channelB) => channelA.displayName?.toUpperCase() < channelB.displayName?.toUpperCase() ? -1 : 1);\r\n\r\n return { ...state, channels: combinedChannels };\r\n }\r\n else {\r\n return { ...state, channels: action.payload.channels?.sort((channelA, channelB) => channelA.displayName?.toUpperCase() < channelB.displayName?.toUpperCase() ? -1 : 1) };\r\n }\r\n default:\r\n return state;\r\n }\r\n}","\r\nimport { Action } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { RootState } from \"..\";\r\nimport { UserLicenseTypeEnum } from \"../../components/enums/userLicenseTypeEnum\";\r\nimport { IAuthAccount } from \"../../interfaces/IAuthTokenResultDto\";\r\nimport { IUserProfile, IUserSettings } from \"../../interfaces/IUserProfile\";\r\nimport { UserState } from \"../../types\";\r\nimport { typedAction } from \"../helpers\";\r\nimport { RESET_USER_ACCOUNT, SET_USER_ACCOUNT, SET_USER_PROFILE, SET_USER_SETTINGS } from \"./actionTypes\";\r\nimport emailMapper from \"../../services/EmailMapper\";\r\nimport LZString = require(\"lz-string\");\r\nimport { logger } from \"../../../../utilities/logger\";\r\nimport { apiGetCompressedEmailToMetadataMapping, apiSetEmailToMetadataMapping, apiUpdateUserSettings } from \"../../services/ApiService\";\r\n\r\nconst initialState: UserState = {\r\n licenseType: UserLicenseTypeEnum.Expired,\r\n oneDriveWebUrl: \"\",\r\n account: null,\r\n settings: {\r\n showRecent: true,\r\n showPinned: true,\r\n showShared: true,\r\n },\r\n tenantSaveOnSendEnabled: false,\r\n tenantAllowOpenInSharePoint: true,\r\n tenantEnablePII: false,\r\n tenantEnableApprovalHooks: false,\r\n isActivated: false,\r\n tenantOcrLanguage: \"\",\r\n tenantEnableRedaction: false\r\n};\r\n\r\nexport const setUserProfile = (profile: IUserProfile) => {\r\n return typedAction(SET_USER_PROFILE, profile);\r\n};\r\n\r\nconst setUserSettings = (settings: IUserSettings) => {\r\n return typedAction(SET_USER_SETTINGS, settings);\r\n};\r\n\r\nexport const updateUserSettings = (accountId: string, settings: IUserSettings): ThunkAction> => (dispatch) => {\r\n //make api call with settings to db\r\n apiUpdateUserSettings(settings, accountId);\r\n //dispatch the userSetter so that it is updated in global state\r\n dispatch(setUserSettings(settings));\r\n};\r\n\r\nexport const getEmailToMetaDataMapping = async (accountId: string, tenantEmailToMetadataMapping: string) => {\r\n try {\r\n const compressedUserMailMapping = await apiGetCompressedEmailToMetadataMapping(accountId);\r\n if (compressedUserMailMapping) {\r\n const userMailMappings: string = LZString.decompressFromBase64(compressedUserMailMapping);\r\n emailMapper.setMapping(userMailMappings);\r\n } \r\n else if (tenantEmailToMetadataMapping) {\r\n const tenantMailMappings: string = LZString.decompressFromBase64(tenantEmailToMetadataMapping);\r\n emailMapper.setMapping(tenantMailMappings);\r\n }\r\n } catch (error) {\r\n logger(error, \"user.ts (getEmailToMetaDataMapping)\");\r\n }\r\n};\r\n\r\nexport const setEmailToMetaDataMapping = async (accountId: string, emailMapping: string) => {\r\n emailMapper.updateMappingLists();\r\n const compressedData = LZString.compressToBase64(emailMapping);\r\n await apiSetEmailToMetadataMapping(accountId, compressedData);\r\n};\r\n\r\nexport const setUserAccount = (account: IAuthAccount) => {\r\n return typedAction(SET_USER_ACCOUNT, account);\r\n};\r\n\r\nexport const resetUserAccount = () => {\r\n return typedAction(RESET_USER_ACCOUNT);\r\n};\r\n\r\ntype UserAction = ReturnType;\r\n\r\nexport function userReducer(state = initialState, action: UserAction): UserState {\r\n switch (action.type) {\r\n // case SET_USER_LICENSE_TYPE:\r\n // return { ...state, licenseType: action.payload };\r\n case SET_USER_ACCOUNT:\r\n return { ...state, oneDriveWebUrl: action.payload?.oneDriveWebUrl, account: action.payload };\r\n case RESET_USER_ACCOUNT:\r\n return { ...initialState };\r\n case SET_USER_PROFILE: //logging in -> get profile -> set in redux\r\n return {\r\n ...state,\r\n licenseType: action.payload.userLicenseType,\r\n settings: action.payload.settings,\r\n tenantSaveOnSendEnabled: action.payload.tenantSaveOnSendEnabled ?? false,\r\n tenantAllowOpenInSharePoint: action.payload.tenantAllowOpenInSharePoint ?? true,\r\n tenantEnablePII: action.payload.tenantEnablePII ?? false,\r\n tenantEnableApprovalHooks: action.payload.tenantEnableApprovalHooks ?? false,\r\n isActivated: action.payload.isActivated ?? false,\r\n tenantOcrLanguage: action.payload.tenantOcrLanguage,\r\n tenantEnableRedaction: action.payload.tenantEnableRedaction\r\n };\r\n case SET_USER_SETTINGS: //when toggling between seeing pinned/recent/shared this is called. \r\n return { ...state, settings: action.payload }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { typedAction } from \"../helpers\";\r\nimport { ADD_WORKING_DIRECTORY, REMOVE_WORKING_DIRECTORY, RESET_WORKING_DIRECTORY, REMOVE_WORKING_DIRECTORIES_BY_INDEX, REMOVE_WORKING_DIRECTORIES_BY_INDEX_INDEX_AND_ADD_ITEM, SET_ONE_DRIVE_DETAILS, ADD_WORKING_DIRECTORIES, SET_WORKING_DIRECTORIES } from \"./actionTypes\";\r\nimport { WorkingDirectoryState } from \"../models/reduxModels\";\r\nimport { IPageSettings } from \"../../interfaces/IPageSettings\";\r\nimport { IBreadcrumbItem } from \"@fluentui/react\";\r\nimport { IOneDriveRootDetails } from \"../../interfaces/IOneDriveRootDetails\";\r\n\r\nconst initialState: WorkingDirectoryState = { workingDirectories: [] };\r\n\r\nexport const addWorkingDirectory = (location: IPageSettings) => {\r\n return typedAction(ADD_WORKING_DIRECTORY, location);\r\n};\r\n\r\nexport const addWorkingDirectories = (locations: IPageSettings[]) => {\r\n return typedAction(ADD_WORKING_DIRECTORIES, locations);\r\n};\r\n\r\nexport const setWorkingDirectories = (locations: IPageSettings[]) => {\r\n return typedAction(SET_WORKING_DIRECTORIES, locations);\r\n}\r\n\r\nexport const setOneDriveDetails = (oneDriveDetails: IOneDriveRootDetails) => {\r\n return typedAction(SET_ONE_DRIVE_DETAILS, oneDriveDetails);\r\n}\r\n\r\nexport const removeTopWorkingDirectory = () => {\r\n return typedAction(REMOVE_WORKING_DIRECTORY);\r\n}\r\n\r\nexport const resetWorkingDirectories = (locations?: IPageSettings[]) => {\r\n return typedAction(RESET_WORKING_DIRECTORY, locations);\r\n}\r\n\r\nexport const removeDirectoriesByIndex = (item: IBreadcrumbItem) => {\r\n return typedAction(REMOVE_WORKING_DIRECTORIES_BY_INDEX, item)\r\n}\r\n\r\nexport const removeDirectoriesByIndexAndAddItem = (index: number, location: IPageSettings) => {\r\n return typedAction(REMOVE_WORKING_DIRECTORIES_BY_INDEX_INDEX_AND_ADD_ITEM, { index, location })\r\n}\r\n\r\ntype WorkingDirectoryAction = ReturnType;\r\n\r\nexport function workingDirectoryReducer(\r\n state = initialState,\r\n action: WorkingDirectoryAction\r\n): WorkingDirectoryState {\r\n switch (action.type) {\r\n case SET_ONE_DRIVE_DETAILS: {\r\n return { ...state, oneDriveRootDetails: action.payload };\r\n }\r\n case ADD_WORKING_DIRECTORY:\r\n return { ...state, workingDirectories: [...state.workingDirectories, action.payload] };\r\n case ADD_WORKING_DIRECTORIES:\r\n return { ...state, workingDirectories: [...state.workingDirectories, ...action.payload] };\r\n case SET_WORKING_DIRECTORIES:\r\n return { ...state, workingDirectories: [...action.payload] };\r\n case REMOVE_WORKING_DIRECTORY:\r\n return { ...state, workingDirectories: [...state.workingDirectories.slice(0, state.workingDirectories.length - 1)] };\r\n case RESET_WORKING_DIRECTORY:\r\n return !action.payload\r\n ? { workingDirectories: [], oneDriveRootDetails: state.oneDriveRootDetails }\r\n : { workingDirectories: action.payload, oneDriveRootDetails: state.oneDriveRootDetails };\r\n case REMOVE_WORKING_DIRECTORIES_BY_INDEX:\r\n // const index = state.workingDirectories.findIndex(directory => directory.id === action.payload.key);\r\n // return { ...state, workingDirectories: [...state.workingDirectories.slice(0, index + 1)] }\r\n return { ...state, workingDirectories: [...state.workingDirectories.slice(0, parseInt(action.payload.key) + 1)] }\r\n case REMOVE_WORKING_DIRECTORIES_BY_INDEX_INDEX_AND_ADD_ITEM: {\r\n const newWorkingDirectories = [...state.workingDirectories.slice(0, action.payload.index)];\r\n newWorkingDirectories.push(action.payload.location);\r\n\r\n return { ...state, workingDirectories: [...newWorkingDirectories] }\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}"],"names":["apiGraphInsightsSlice","createApi","reducerPath","baseQuery","retry","fetchBaseQuery","baseUrl","prepareHeaders","headers","getGraphAccessToken","accessToken","set","endpoints","builder","getItemsTrendingAroundMe","query","url","method","transformResponse","response","value","map","val","insightType","InsightType","Trending","getItemsSharedWithMe","filter","x","resourceVisualization","title","Shared","gridDate","Date","lastShared","sharedDateTime","getItemsViewedAndModifiedByMe","Recent","lastUsed","lastModifiedDateTime","getFileThumbnail","args","itemDriveId","useLazyGetItemsTrendingAroundMeQuery","useLazyGetItemsSharedWithMeQuery","useLazyGetItemsViewedAndModifiedByMeQuery","useLazyGetFileThumbnailQuery","combinedReducer","combineReducers","savingLocation","savingLocationReducer","workingDirectories","workingDirectoryReducer","tenantInfo","tenantReducer","datasource","datasourceReducer","files","fileReducer","savingInBackground","savingInBackgroundReducer","reload","reloadReducer","currentSharepointFolder","currentSharepointFolderReducer","sharePointInfo","sharePointInfoReducer","mode","modeReducer","loading","loadingReducer","expanders","expandersReducer","user","userReducer","search","searchReducer","teams","teamsReducer","oneDrive","oneDriveReducer","regionalSettings","regionalSettingsReducer","pinned","pinnedReducer","recent","recentReducer","shared","sharedReducer","suggested","suggestedReducer","showFolderDeleteDialog","showFolderDeleteDialogReducer","approvals","approvalsReducer","contentManagerDirectory","contentManagerDirectoryReducer","overlay","overlayReducer","apiPiiSlice","reducer","apiGraphSlice","apiSharePointSlice","apiNintexSlice","storeMain","configureStore","state","action","type","CLEAR_ALL_STATE","middleware","getDefaultMiddleware","serializableCheck","concat","tenantId","getData","isNextPageRequest","getFlowAccessToken","axiosRetryGet","this","getBaseUrl","authorization","accept","status","data","Error","statusText","postData","body","axiosRetryPost","getMyApprovals","approvalResponse","length","nextLink","logger","respond","approvalName","comment","properties","comments","error","reassign","assignedToEmail","userUniqueId","responses","userName","find","assignedTo","id","name","ApprovalsService","FileTypeEnum","removeDuplicates","arr","idsPresent","seen","Set","item","has","itemId","ArrayIdCombiner","removeSaveLocation","locations","ComponentTypes","Saving","pop","itemExists","existingItem","newItems","fileType","file","some","newItem","StoreItemHelper","folderExists","driveId","getExistingItem","existingItems","getExistingFolder","languageStrings","cannotBeRemoved","isCustomEntry","parentReference","extension","getLastSplittedStringItem","folderId","filePath","Files","tryDecodeUriComponent","webUrl","datePinned","toDate","modifiedBy","lastModifiedBy","displayName","sharedByName","sharedBy","sharedByEmail","email","RecentFilesMapper","initialState","isApprovalsLoading","approvalCount","lastApprovalLoad","setApprovals","typedAction","SET_APPROVALS","setLastApprovalLoad","SET_LAST_APPROVAL_LOAD","setApprovalsCount","approvalsCount","SET_APPROVALSCOUNT","removeApproval","approval","REMOVE_APPROVAL","resetApprovals","RESET_APPROVALS","getApprovals","shouldUpdateSilently","completedCallback","dispatch","getState","SET_IS_APPROVALS_LOADING","payload","toUTCString","newApprovals","isLoading","amountOfLoaders","setLoading","toggleReload","SET_LOADING","incrementAmountOfLoaders","INCREMENT_AMOUNT_LOADING","decrementAmountOfLoaders","DECREMENT_AMOUNT_LOADING","locationBeforeSaving","setLocationBeforeSaving","SET_ONE_DRIVE_LOCATION_BEFORE_SAVING","resetLocationBeforeSaving","RESET_DRIVE_LOCATION_BEFORE_SAVING","isVisible","setOverlayVisibility","SET_OVERLAY_VISIBILITY","isPinnedItemsLoading","pinnedItems","setPinnedItems","SET_USER_PINNED_ITEMS","resetPinnedItems","RESET_USER_PINNED_ITEMS","getPinnedItems","accountId","SET_PINNED_IS_LOADING","apiGetCompressedPinnedData","compressedPinnedData","fallback","decompressedPinned","LZString","decompressFromBase64","JSON","parse","apiGetOldPinnedItems","slice","addPinnedItem","itemToPin","updatedPinnedItems","existingPinnedItems","existingPinnedItem","apiSetPinnedItems","e","updatePinnedItems","removePinnedItem","existingSavedItems","updatedItems","folder","MovePinnedItemUp","itemToMoveIndex","MovePinnedItemDown","getPinnedFolderIndex","pinnedIndex","findIndex","isFolderPinned","getPinnedFileIndex","isFilePinned","isRecentItemsLoading","recentItems","setRecentItems","SET_USER_RECENT_ITEMS","resetRecentItems","RESET_USER_RECENT_ITEMS","getRecentItems","SET_RECENT_IS_LOADING","getLocalRecentItems","apiGetCompressedRecentData","compressedRecentData","decompressedData","localRecentItems","apiGetOldRecentItems","Array","isArray","recentItem","sort","a","b","Promise","all","getRecentFiles","graphRecentFiles","graphRecentStoreItems","graphRemovedDuplicates","combined","addRecentItem","newRecentItems","updatedRecentItems","existingRecentItems","existingRecentItem","apiSetRecentItems","removeRecentItem","toggle","TOGGLE_RELOAD","searchValue","filterType","isInSearchMode","setSearch","SET_SEARCH","trim","setIsInSearchMode","SET_IS_IN_SEARCH_MODE","setSearchFilterType","searchFilterType","SET_SEARCH_FILTER_TYPE","isSharedItemsLoading","sharedItems","getSharedItems","SET_SHARED_IS_LOADING","getSharedFiles","graphSharedItems","setSharedItems","SET_USER_SHARED_ITEMS","resetSharedItems","RESET_USER_SHARED_ITEMS","mainUrl","isSitesLoading","sites","pageData","setSharepointInfo","info","SET_SHAREPOINT_INFO","resetSharepointInfo","RESET_SHAREPOINT_INFO","getSites","allowedSiteCollections","previousPageData","skipLoaders","useCachedSites","cachedSites","getLocalStorage","localStorageKeys","getBaseSiteUrl","lastCacheFetch","getTime","SET_SITES_LAST_CACHE_REFRESH","currentState","moreResultsAvailable","SET_IS_SITES_LOADING","getAllSites","setLocalStorage","existingSite","newSite","lastServerFetch","getAllHubSites","searchSharePointSites","hubSitesOnly","allowedSites","allHubSites","allowedHubSites","SharePointSiteHelper","reset","forEach","site","isHub","hub","hubSite","siteUrl","toLowerCase","hubId","description","parentHubSiteId","allowedHub","parentHubId","siteIdParts","split","hubSites","push","searchRequest","from","hubSiteIds","getAllSubSites","siteCollections","subSites","filterNonTopLevelISiteInfoArray","getSharePointAccessToken","sharePointAccessToken","getHubSites","getAccount","sharePointBaseUrl","setShowFolderDeleteDialog","SET_SHOW_FOLDER_DELETE_DIALOG","isSuggestedItemsLoading","suggestedItems","setSuggestedItems","SET_USER_SUGGESTED_ITEMS","resetSuggestedItems","RESET_USER_SUGGESTED_ITEMS","getSuggestedItems","sender","SET_SUGGESTED_IS_LOADING","apiGetCompressedSuggestedData","compressedSuggestedData","decompressedSuggested","addSuggestedItem","itemToAdd","updatedSuggestedItems","existingSuggestedItems","saveCount","unshift","apiSetSuggestedItems","removeSuggestedItem","isTeamsLoading","channels","setIsTeamsLoading","SET_IS_TEAMS_LOADING","setTeams","SET_TEAMS","resetTeams","RESET_TEAMS","addTeamChannels","teamGroupId","SET_TEAM_CHANNELS","getTeams","useCachedTeams","cachedTeams","teamA","teamB","toUpperCase","SET_TEAMS_LAST_CACHE_REFRESH","getJoinedTeams","allowedTeams","team","allowedTeam","SET_TEAMS_LAST_SERVER_REFRESH","getChannels","teamDriveId","getTeamChannels","combinedChannels","channel","channelA","channelB","licenseType","UserLicenseTypeEnum","Expired","oneDriveWebUrl","account","settings","showRecent","showPinned","showShared","tenantSaveOnSendEnabled","tenantAllowOpenInSharePoint","tenantEnablePII","tenantEnableApprovalHooks","isActivated","tenantOcrLanguage","tenantEnableRedaction","setUserProfile","profile","SET_USER_PROFILE","updateUserSettings","apiUpdateUserSettings","SET_USER_SETTINGS","setUserSettings","getEmailToMetaDataMapping","tenantEmailToMetadataMapping","apiGetCompressedEmailToMetadataMapping","compressedUserMailMapping","userMailMappings","setMapping","tenantMailMappings","setEmailToMetaDataMapping","emailMapping","updateMappingLists","compressedData","compressToBase64","apiSetEmailToMetadataMapping","setUserAccount","SET_USER_ACCOUNT","resetUserAccount","RESET_USER_ACCOUNT","userLicenseType","addWorkingDirectory","location","ADD_WORKING_DIRECTORY","addWorkingDirectories","ADD_WORKING_DIRECTORIES","setWorkingDirectories","SET_WORKING_DIRECTORIES","setOneDriveDetails","oneDriveDetails","SET_ONE_DRIVE_DETAILS","removeTopWorkingDirectory","REMOVE_WORKING_DIRECTORY","resetWorkingDirectories","RESET_WORKING_DIRECTORY","removeDirectoriesByIndex","REMOVE_WORKING_DIRECTORIES_BY_INDEX","removeDirectoriesByIndexAndAddItem","index","REMOVE_WORKING_DIRECTORIES_BY_INDEX_INDEX_AND_ADD_ITEM","oneDriveRootDetails","parseInt","key","newWorkingDirectories"],"sourceRoot":""}