box-ui-elements 23.4.0-beta.32 → 23.4.0-beta.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/explorer.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sidebar.js +1 -1
- package/es/elements/common/types/SidebarNavigation.js +4 -2
- package/es/elements/common/types/SidebarNavigation.js.flow +7 -4
- package/es/elements/common/types/SidebarNavigation.js.map +1 -1
- package/es/elements/content-preview/PreviewNavigation.js +65 -2
- package/es/elements/content-preview/PreviewNavigation.js.flow +86 -2
- package/es/elements/content-preview/PreviewNavigation.js.map +1 -1
- package/es/elements/content-sidebar/ActivitySidebar.js +39 -7
- package/es/elements/content-sidebar/ActivitySidebar.js.flow +42 -6
- package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
- package/es/src/elements/common/types/SidebarNavigation.d.ts +10 -4
- package/i18n/bn-IN.js +2 -2
- package/i18n/bn-IN.properties +8 -0
- package/i18n/da-DK.js +2 -2
- package/i18n/da-DK.properties +8 -0
- package/i18n/de-DE.js +2 -2
- package/i18n/de-DE.properties +8 -0
- package/i18n/en-AU.properties +8 -0
- package/i18n/en-CA.properties +8 -0
- package/i18n/en-GB.properties +8 -0
- package/i18n/en-x-pseudo.js +1020 -1020
- package/i18n/en-x-pseudo.properties +1024 -1016
- package/i18n/es-419.js +2 -2
- package/i18n/es-419.properties +8 -0
- package/i18n/es-ES.js +2 -2
- package/i18n/es-ES.properties +8 -0
- package/i18n/fi-FI.js +2 -2
- package/i18n/fi-FI.properties +8 -0
- package/i18n/fr-CA.js +2 -2
- package/i18n/fr-CA.properties +8 -0
- package/i18n/fr-FR.js +2 -2
- package/i18n/fr-FR.properties +8 -0
- package/i18n/hi-IN.js +2 -2
- package/i18n/hi-IN.properties +8 -0
- package/i18n/it-IT.js +2 -2
- package/i18n/it-IT.properties +8 -0
- package/i18n/ja-JP.properties +8 -0
- package/i18n/ko-KR.js +2 -2
- package/i18n/ko-KR.properties +8 -0
- package/i18n/nb-NO.js +2 -2
- package/i18n/nb-NO.properties +8 -0
- package/i18n/nl-NL.js +2 -2
- package/i18n/nl-NL.properties +8 -0
- package/i18n/pl-PL.js +2 -2
- package/i18n/pl-PL.properties +8 -0
- package/i18n/pt-BR.js +2 -2
- package/i18n/pt-BR.properties +8 -0
- package/i18n/ru-RU.js +2 -2
- package/i18n/ru-RU.properties +8 -0
- package/i18n/sv-SE.js +2 -2
- package/i18n/sv-SE.properties +8 -0
- package/i18n/tr-TR.js +2 -2
- package/i18n/tr-TR.properties +8 -0
- package/i18n/zh-CN.js +2 -2
- package/i18n/zh-CN.properties +8 -0
- package/i18n/zh-TW.js +2 -2
- package/i18n/zh-TW.properties +8 -0
- package/package.json +1 -1
- package/src/elements/common/types/SidebarNavigation.js.flow +7 -4
- package/src/elements/common/types/SidebarNavigation.ts +11 -3
- package/src/elements/content-preview/PreviewNavigation.js +86 -2
- package/src/elements/content-preview/__tests__/PreviewNavigation.test.js +202 -62
- package/src/elements/content-sidebar/ActivitySidebar.js +42 -6
- package/src/elements/content-sidebar/__tests__/ActivitySidebar.rtl.test.js +521 -0
- package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +1 -123
- package/src/elements/content-sidebar/__tests__/AddTaskButton.test.js +6 -5
- package/src/elements/content-sidebar/versions/__tests__/StaticVersionSidebar.test.js +3 -5
- package/src/elements/content-preview/__tests__/__snapshots__/PreviewNavigation.test.js.snap +0 -361
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivitySidebar.js","names":["React","classNames","debounce","flow","getProp","noop","uniqueId","FormattedMessage","generatePath","ActivityFeed","AddTaskButton","API","messages","SidebarContent","EVENT_DATA_READY","EVENT_JS_READY","getBadUserError","mark","withAnnotatorContext","withAPIContext","withErrorBoundary","withFeatureConsumer","isFeatureEnabled","withLogger","withRouterAndRef","ActivitySidebarFilter","ACTIVITY_FILTER_OPTION_ALL","ACTIVITY_FILTER_OPTION_RESOLVED","ACTIVITY_FILTER_OPTION_TASKS","ACTIVITY_FILTER_OPTION_UNRESOLVED","DEFAULT_COLLAB_DEBOUNCE","ERROR_CODE_FETCH_ACTIVITY","FEED_ITEM_TYPE_ANNOTATION","FEED_ITEM_TYPE_COMMENT","FEED_ITEM_TYPE_TASK","FEED_ITEM_TYPE_VERSION","ORIGIN_ACTIVITY_SIDEBAR","SIDEBAR_VIEW_ACTIVITY","TASK_COMPLETION_RULE_ALL","METRIC_TYPE_UAA_PARITY_METRIC","activityFeedInlineError","inlineError","title","errorOccured","content","activityFeedItemApiError","MARK_NAME_DATA_LOADING","MARK_NAME_DATA_READY","MARK_NAME_JS_READY","ActivitySidebar","PureComponent","constructor","props","_defineProperty","id","permissions","api","emitAnnotationRemoveEvent","file","getFeedAPI","deleteAnnotation","deleteAnnotationSuccess","bind","feedErrorCallback","fetchFeedItems","text","emitAnnotationUpdateEvent","description","message","updateAnnotation","undefined","annotation","feedSuccessCallback","status","e","code","contextInfo","errorCallback","assignees","taskType","dueAt","completionRule","onSuccess","onError","currentUser","successCallback","createTaskNew","task","onTaskDelete","deleteTaskNew","taskId","onTaskUpdate","updateTaskNew","taskAssignmentId","onTaskAssignmentUpdate","updateTaskCollaborator","hasReplies","onCommentDelete","comment","deleteThreadedComment","deleteComment","parentId","emitAnnotationReplyDeleteEvent","deleteReply","deleteReplySuccessCallback","hasMention","onCommentUpdate","updateThreadedComment","updateComment","emitAnnotationReplyUpdateEvent","tagged_message","updateReply","updateReplySuccessCallback","error","replies","activeFeedEntryId","history","feedItems","state","feedAPI","length","some","item","getCommentFeedItemByReplyId","replace","getActiveCommentPath","updateFeedItem","reply","onCommentCreate","createThreadedComment","createComment","parentType","emitAnnotationReplyCreateEvent","eventRequestId","createReply","createReplySuccessCallback","deleteAppActivity","getActiveFeedEntryData","then","type","isActiveEntryInFeed","isItemTypeComment","Promise","resolve","getFeedItemsWithReplies","updatedItems","fetchFeedItemsSuccessCallback","catch","fetchFeedItemsErrorCallback","fileId","logger","onDataReadyMetric","endMarkName","startMarkName","setState","activityFeedError","parityData","onPreviewMetric","errors","Array","isArray","Error","showNotification","map","feedItem","_objectSpread","reject","fetchReplies","updatedFeedItems","getCommentFeedItemWithReplies","console","collaborators","entries","approverSelectorContacts","contactsLoaded","mentionSelectorContacts","searchStr","getFileCollaboratorsAPI","getCollaboratorsWithQuery","getApproverContactsSuccessCallback","includeGroups","getMentionContactsSuccessCallback","itemId","find","isItemTypeFocusable","replyId","getFocusableFeedItemById","activeFeedEntryType","firstLevelItem","firstLevelItemWithActiveReply","fetchThreadedComment","parent","parentItem","userId","getUsersAPI","getAvatarUrlWithAccessToken","file_version","nextActiveAnnotationId","emitActiveAnnotationChangeEvent","getAnnotationsMatchPath","getAnnotationsPath","location","onAnnotationSelect","annotationFileVersionId","currentFileVersionId","match","selectedFileVersionId","push","onFilterChange","feedItemsStatusFilter","filter","isDisabled","hasTasks","getApprover","getAvatarUrl","createTask","onTaskModalClose","createElement","taskFormProps","approvers","getApproverWithQuery","features","shouldShowActivityFeedFilter","shouldShowAdditionalFilterOptions","activityFilterOptions","feedItemType","onFeedItemTypeClick","selectedStatus","handleItemsFiltered","Fragment","renderActivitySidebarFilter","renderAddTaskButton","shouldHideTitle","sidebarActivityTitle","onReadyMetric","componentDidMount","shouldRefreshCache","shouldDestroy","shouldShowReplies","shouldShowTasks","hasVersions","shouldShowVersions","shouldFetchReplies","shouldShowAppActivity","shouldShowAnnotations","shouldUseUAA","fetchRepliesForFeedItems","logAPIParity","commentId","sidebar","refresh","render","currentUserError","elementId","onVersionHistoryClick","getUserProfileUrl","onTaskView","isNewThreadedRepliesEnabled","actions","renderActions","className","sidebarView","renderTitle","getFilteredFeedItems","getMentionWithQuery","getMention","hasNewThreadedReplies","onAnnotationDelete","handleAnnotationDelete","onAnnotationEdit","handleAnnotationEdit","handleAnnotationSelect","onAnnotationStatusChange","handleAnnotationStatusChange","onAppActivityDelete","onHideReplies","updateReplies","onReplyCreate","onReplyDelete","onReplyUpdate","onShowReplies","getReplies","updateTaskAssignment","onTaskCreate","deleteTask","updateTask","annotatorState","onVersionChange","ActivitySidebarComponent"],"sources":["../../../src/elements/content-sidebar/ActivitySidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Activity feed sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueId from 'lodash/uniqueId';\nimport { FormattedMessage } from 'react-intl';\nimport { generatePath, type ContextRouter } from 'react-router-dom';\nimport ActivityFeed from './activity-feed';\nimport AddTaskButton from './AddTaskButton';\nimport API from '../../api';\nimport messages from '../common/messages';\nimport SidebarContent from './SidebarContent';\nimport { EVENT_DATA_READY, EVENT_JS_READY } from '../common/logger/constants';\nimport { getBadUserError } from '../../utils/error';\nimport { mark } from '../../utils/performance';\nimport { withAnnotatorContext } from '../common/annotator-context';\nimport { withAPIContext } from '../common/api-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withFeatureConsumer, isFeatureEnabled } from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\nimport { withRouterAndRef } from '../common/routing';\nimport ActivitySidebarFilter from './ActivitySidebarFilter';\nimport {\n ACTIVITY_FILTER_OPTION_ALL,\n ACTIVITY_FILTER_OPTION_RESOLVED,\n ACTIVITY_FILTER_OPTION_TASKS,\n ACTIVITY_FILTER_OPTION_UNRESOLVED,\n DEFAULT_COLLAB_DEBOUNCE,\n ERROR_CODE_FETCH_ACTIVITY,\n FEED_ITEM_TYPE_ANNOTATION,\n FEED_ITEM_TYPE_COMMENT,\n FEED_ITEM_TYPE_TASK,\n FEED_ITEM_TYPE_VERSION,\n ORIGIN_ACTIVITY_SIDEBAR,\n SIDEBAR_VIEW_ACTIVITY,\n TASK_COMPLETION_RULE_ALL,\n METRIC_TYPE_UAA_PARITY_METRIC,\n} from '../../constants';\nimport type {\n TaskCompletionRule,\n TaskType,\n TaskNew,\n TaskUpdatePayload,\n TaskCollabStatus,\n} from '../../common/types/tasks';\nimport type {\n Annotation,\n AnnotationPermission,\n ActivityFilterItemType,\n ActivityFilterOption,\n BoxCommentPermission,\n Comment,\n CommentFeedItemType,\n FocusableFeedItem,\n FocusableFeedItemType,\n FeedItem,\n FeedItems,\n FeedItemStatus,\n FeedItemType,\n} from '../../common/types/feed';\nimport type { ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { SelectorItems, User, UserMini, GroupMini, BoxItem } from '../../common/types/core';\nimport type { Errors, GetProfileUrlCallback } from '../common/flowTypes';\nimport type { Translations } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport type { WithAnnotatorContextProps } from '../common/annotator-context';\nimport './ActivitySidebar.scss';\n\nimport type { OnAnnotationEdit, OnAnnotationStatusChange } from './activity-feed/comment/types';\n\ntype ExternalProps = {\n activeFeedEntryId?: string,\n activeFeedEntryType?: FocusableFeedItemType,\n currentUser?: User,\n currentUserError?: Errors,\n getUserProfileUrl?: GetProfileUrlCallback,\n hasReplies?: boolean,\n hasTasks?: boolean,\n hasVersions?: boolean,\n onCommentCreate: Function,\n onCommentDelete: (comment: Comment) => any,\n onCommentUpdate: () => any,\n onTaskAssignmentUpdate: Function,\n onTaskCreate: Function,\n onTaskDelete: (id: string) => any,\n onTaskUpdate: () => any,\n onTaskView: (id: string, isCreator: boolean) => any,\n} & ErrorContextProps &\n WithAnnotatorContextProps;\n\ntype PropsWithoutContext = {\n elementId: string,\n file: BoxItem,\n hasSidebarInitialized?: boolean,\n isDisabled: boolean,\n onAnnotationSelect: Function,\n onFilterChange: (status?: ActivityFilterItemType) => void,\n onVersionChange: Function,\n onVersionHistoryClick?: Function,\n translations?: Translations,\n} & ExternalProps &\n WithLoggerProps &\n ContextRouter;\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n} & PropsWithoutContext;\n\ntype State = {\n activityFeedError?: Errors,\n approverSelectorContacts: SelectorItems<UserMini | GroupMini>,\n contactsLoaded?: boolean,\n feedItems?: FeedItems,\n feedItemsStatusFilter?: ActivityFilterItemType,\n mentionSelectorContacts?: SelectorItems<UserMini>,\n};\n\nexport const activityFeedInlineError: Errors = {\n inlineError: {\n title: messages.errorOccured,\n content: messages.activityFeedItemApiError,\n },\n};\n\nconst MARK_NAME_DATA_LOADING = `${ORIGIN_ACTIVITY_SIDEBAR}_data_loading`;\nconst MARK_NAME_DATA_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_DATA_READY}`;\nconst MARK_NAME_JS_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ActivitySidebar extends React.PureComponent<Props, State> {\n static defaultProps = {\n annotatorState: {},\n emitActiveAnnotationChangeEvent: noop,\n emitAnnotationRemoveEvent: noop,\n emitAnnotationReplyCreateEvent: noop,\n emitAnnotationReplyDeleteEvent: noop,\n emitAnnotationReplyUpdateEvent: noop,\n emitAnnotationUpdateEvent: noop,\n getAnnotationsMatchPath: noop,\n getAnnotationsPath: noop,\n hasReplies: false,\n hasTasks: true,\n hasVersions: true,\n isDisabled: false,\n onAnnotationSelect: noop,\n onCommentCreate: noop,\n onCommentDelete: noop,\n onCommentUpdate: noop,\n onFilterChange: noop,\n onTaskAssignmentUpdate: noop,\n onTaskCreate: noop,\n onTaskDelete: noop,\n onTaskUpdate: noop,\n onVersionChange: noop,\n onVersionHistoryClick: noop,\n };\n\n constructor(props: Props) {\n super(props);\n // eslint-disable-next-line react/prop-types\n const { logger } = this.props;\n\n mark(MARK_NAME_DATA_LOADING);\n\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n this.state = {};\n }\n\n componentDidMount() {\n this.fetchFeedItems(true);\n }\n\n handleAnnotationDelete = ({ id, permissions }: { id: string, permissions: AnnotationPermission }) => {\n const { api, emitAnnotationRemoveEvent, file } = this.props;\n\n emitAnnotationRemoveEvent(id, true);\n api.getFeedAPI(false).deleteAnnotation(\n file,\n id,\n permissions,\n this.deleteAnnotationSuccess.bind(this, id),\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationEdit: OnAnnotationEdit = ({ id, text, permissions }) => {\n const { api, emitAnnotationUpdateEvent, file } = this.props;\n\n emitAnnotationUpdateEvent(\n {\n id,\n description: {\n message: text,\n },\n },\n true,\n );\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n text,\n undefined,\n permissions,\n (annotation: Annotation) => {\n emitAnnotationUpdateEvent(annotation);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationStatusChange: OnAnnotationStatusChange = ({ id, permissions, status }) => {\n const { api, emitAnnotationUpdateEvent, file } = this.props;\n\n emitAnnotationUpdateEvent({ id, status }, true);\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n undefined,\n status,\n permissions,\n (annotation: Annotation) => {\n emitAnnotationUpdateEvent(annotation);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n deleteAnnotationSuccess(id: string) {\n const { emitAnnotationRemoveEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationRemoveEvent(id);\n }\n\n /**\n * Success callback for fetching feed items\n */\n feedSuccessCallback = (): void => {\n this.fetchFeedItems();\n };\n\n /**\n * Error callback for fetching feed items\n *\n * @param {Error} e - the error which occured\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n */\n feedErrorCallback = (e: ElementsXhrError, code: string, contextInfo?: Object) => {\n this.errorCallback(e, code, contextInfo);\n this.fetchFeedItems();\n };\n\n createTask = (\n message: string,\n assignees: SelectorItems<>,\n taskType: TaskType,\n dueAt: ?string,\n completionRule: TaskCompletionRule,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, currentUser, file } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n const errorCallback = (e, code, contextInfo) => {\n if (onError) {\n onError(e, code, contextInfo);\n }\n this.feedErrorCallback(e, code, contextInfo);\n };\n const successCallback = () => {\n if (onSuccess) {\n onSuccess();\n }\n this.feedSuccessCallback();\n };\n\n api.getFeedAPI(false).createTaskNew(\n file,\n currentUser,\n message,\n assignees,\n taskType,\n dueAt,\n completionRule,\n successCallback,\n errorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n deleteTask = (task: TaskNew): void => {\n const { file, api, onTaskDelete } = this.props;\n api.getFeedAPI(false).deleteTaskNew(\n file,\n task,\n (taskId: string) => {\n this.feedSuccessCallback();\n onTaskDelete(taskId);\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTask = (task: TaskUpdatePayload, onSuccess: ?Function, onError: ?Function): void => {\n const { api, file, onTaskUpdate } = this.props;\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n const successCallback = () => {\n this.feedSuccessCallback();\n\n if (onSuccess) {\n onSuccess();\n }\n\n onTaskUpdate();\n };\n\n api.getFeedAPI(false).updateTaskNew(file, task, successCallback, errorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTaskAssignment = (taskId: string, taskAssignmentId: string, status: TaskCollabStatus): void => {\n const { api, currentUser = {}, file, onTaskAssignmentUpdate } = this.props;\n\n const successCallback = () => {\n this.feedSuccessCallback();\n onTaskAssignmentUpdate(taskId, taskAssignmentId, status, currentUser.id);\n };\n\n api.getFeedAPI(false).updateTaskCollaborator(\n file,\n taskId,\n taskAssignmentId,\n status,\n successCallback,\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a comment via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteComment = ({ id, permissions }: { id: string, permissions: BoxCommentPermission }): void => {\n const { api, file, hasReplies, onCommentDelete } = this.props;\n\n const successCallback = (comment: Comment) => {\n this.feedSuccessCallback();\n onCommentDelete(comment);\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).deleteThreadedComment(file, id, permissions, successCallback, this.feedErrorCallback);\n } else {\n api.getFeedAPI(false).deleteComment(file, id, permissions, successCallback, this.feedErrorCallback);\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a reply via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteReply = ({\n id,\n parentId,\n permissions,\n }: {\n id: string,\n parentId: string,\n permissions: BoxCommentPermission,\n }): void => {\n const { api, emitAnnotationReplyDeleteEvent, file } = this.props;\n\n emitAnnotationReplyDeleteEvent(id, parentId, true);\n api.getFeedAPI(false).deleteReply(\n file,\n id,\n parentId,\n permissions,\n this.deleteReplySuccessCallback.bind(this, id, parentId),\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful deletion of a reply\n *\n * @private\n * @param {string} id - The id of the reply\n * @param {string} parentId - The id of the reply's parent item\n * @return {void}\n */\n deleteReplySuccessCallback = (id: string, parentId: string) => {\n const { emitAnnotationReplyDeleteEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyDeleteEvent(id, parentId);\n };\n\n updateComment = (\n id: string,\n text?: string,\n status?: FeedItemStatus,\n hasMention: boolean,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, file, hasReplies, onCommentUpdate } = this.props;\n\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n\n const successCallback = () => {\n this.feedSuccessCallback();\n if (onSuccess) {\n onSuccess();\n }\n onCommentUpdate();\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).updateThreadedComment(\n file,\n id,\n text,\n status,\n permissions,\n successCallback,\n errorCallback,\n );\n } else {\n api.getFeedAPI(false).updateComment(\n file,\n id,\n text || '',\n hasMention,\n permissions,\n successCallback,\n errorCallback,\n );\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Updates a reply\n *\n * @param {string} id - id of the reply\n * @param {string} parentId - id of the parent item\n * @param {string} text - the reply updated text\n * @param {BoxCommentPermission} permissions - permissions associated with the reply\n * @param {Function} onSuccess - the success callback\n * @param {Function} onError - the error callback\n * @return {void}\n */\n updateReply = (\n id: string,\n parentId: string,\n text: string,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, emitAnnotationReplyUpdateEvent, file } = this.props;\n\n emitAnnotationReplyUpdateEvent({ id, tagged_message: text }, parentId, true);\n api.getFeedAPI(false).updateReply(\n file,\n id,\n parentId,\n text,\n permissions,\n this.updateReplySuccessCallback.bind(this, parentId, onSuccess),\n (error, code) => {\n if (onError) {\n onError(error, code);\n }\n this.feedErrorCallback(error, code);\n },\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Updates replies of a comment or annotation in the Feed\n *\n * @param {string} id - id of the feed item\n * @param {Array<Comment>} replies - replies\n * @return {void}\n */\n updateReplies = (id: string, replies: Array<Comment>) => {\n const { activeFeedEntryId, api, file, history } = this.props;\n const { feedItems } = this.state;\n\n if (!feedItems) {\n return;\n }\n\n const feedAPI = api.getFeedAPI(false);\n feedAPI.file = file;\n\n // Detect if replies are being hidden and activeFeedEntryId belongs to a reply\n // that is in currently being updated parent, in order to disable active item\n if (\n activeFeedEntryId &&\n replies.length === 1 &&\n feedItems.some(\n (item: FeedItem) =>\n item.id === id && item === this.getCommentFeedItemByReplyId(feedItems, activeFeedEntryId),\n )\n ) {\n history.replace(this.getActiveCommentPath());\n }\n\n feedAPI.updateFeedItem({ replies }, id);\n\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful update of a reply\n *\n * @private\n * @param {string} parentId - The id of the reply's parent item\n * @param {Function} onSuccess - the success callback\n * @param {Comment} reply - The reply comment object\n * @return {void}\n */\n updateReplySuccessCallback = (parentId: string, onSuccess: ?Function, reply: Comment) => {\n const { emitAnnotationReplyUpdateEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyUpdateEvent(reply, parentId);\n if (onSuccess) {\n onSuccess();\n }\n };\n\n /**\n * Posts a new comment to the API\n *\n * @param {string} text - The comment's text\n * @param {boolean} hasMention - The comment's text\n * @return {void}\n */\n createComment = (text: string, hasMention: boolean): void => {\n const { api, currentUser, file, hasReplies, onCommentCreate } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const successCallback = (comment: Comment) => {\n onCommentCreate(comment);\n this.feedSuccessCallback();\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).createThreadedComment(\n file,\n currentUser,\n text,\n successCallback,\n this.feedErrorCallback,\n );\n } else {\n api.getFeedAPI(false).createComment(\n file,\n currentUser,\n text,\n hasMention,\n successCallback,\n this.feedErrorCallback,\n );\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Posts a new reply to the API\n *\n * @param {string} parentId - The id of the parent item\n * @param {CommentFeedItemType} parentType - The type of the parent item\n * @param {string} text - The text of reply\n * @return {void}\n */\n createReply = (parentId: string, parentType: CommentFeedItemType, text: string): void => {\n const { api, currentUser, emitAnnotationReplyCreateEvent, file } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const eventRequestId = uniqueId('comment_');\n emitAnnotationReplyCreateEvent({ tagged_message: text }, eventRequestId, parentId, true);\n api.getFeedAPI(false).createReply(\n file,\n currentUser,\n parentId,\n parentType,\n text,\n this.createReplySuccessCallback.bind(this, eventRequestId, parentId),\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful creation of a reply\n *\n * @private\n * @param {string} eventRequestId - The id of the parent item\n * @param {string} parentId - The id of the reply's parent item\n * @param {Comment} reply - The reply comment object\n * @return {void}\n */\n createReplySuccessCallback = (eventRequestId: string, parentId: string, reply: Comment) => {\n const { emitAnnotationReplyCreateEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyCreateEvent(reply, eventRequestId, parentId);\n };\n\n /**\n * Deletes an app activity item via the API.\n *\n * @param {Object} args - A subset of the app activity\n * @return void\n */\n deleteAppActivity = ({ id }: { id: string }): void => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).deleteAppActivity(file, id, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Fetches the feed items for the sidebar\n *\n * @param {boolean} shouldRefreshCache true if the cache should be refreshed\n * @param {boolean} shouldDestroy true if the api factory should be destroyed\n */\n fetchFeedItems(shouldRefreshCache: boolean = false, shouldDestroy: boolean = false) {\n const {\n activeFeedEntryId,\n activeFeedEntryType,\n api,\n file,\n features,\n hasReplies: shouldShowReplies,\n hasTasks: shouldShowTasks,\n hasVersions: shouldShowVersions,\n } = this.props;\n const shouldFetchReplies =\n shouldRefreshCache &&\n shouldShowReplies &&\n activeFeedEntryId &&\n activeFeedEntryType === FEED_ITEM_TYPE_COMMENT;\n const shouldShowAppActivity = isFeatureEnabled(features, 'activityFeed.appActivity.enabled');\n const shouldShowAnnotations = isFeatureEnabled(features, 'activityFeed.annotations.enabled');\n const shouldUseUAA = isFeatureEnabled(features, 'activityFeed.uaaIntegration.enabled');\n\n api.getFeedAPI(shouldDestroy).feedItems(\n file,\n shouldRefreshCache,\n shouldFetchReplies ? this.fetchRepliesForFeedItems : this.fetchFeedItemsSuccessCallback,\n this.fetchFeedItemsErrorCallback,\n this.errorCallback,\n {\n shouldShowAnnotations,\n shouldShowAppActivity,\n shouldShowReplies,\n shouldShowTasks,\n shouldShowVersions,\n shouldUseUAA,\n },\n shouldUseUAA ? this.logAPIParity : undefined,\n );\n }\n\n fetchRepliesForFeedItems = (feedItems: FeedItems) => {\n const { activeFeedEntryId } = this.props;\n\n if (!activeFeedEntryId) {\n return;\n }\n\n this.getActiveFeedEntryData(feedItems)\n .then(({ id, type }) => {\n if (\n !id ||\n !type ||\n this.isActiveEntryInFeed(feedItems, activeFeedEntryId) ||\n !this.isItemTypeComment(type)\n ) {\n return Promise.resolve(feedItems);\n }\n\n const parentType: CommentFeedItemType =\n type === FEED_ITEM_TYPE_COMMENT ? FEED_ITEM_TYPE_COMMENT : FEED_ITEM_TYPE_ANNOTATION;\n\n return this.getFeedItemsWithReplies(feedItems, id, parentType);\n })\n .then(updatedItems => this.fetchFeedItemsSuccessCallback(updatedItems))\n .catch(error => this.fetchFeedItemsErrorCallback(feedItems, [error]));\n };\n\n /**\n * Handles a successful feed API fetch\n *\n * @private\n * @param {Array} feedItems - the feed items\n * @return {void}\n */\n fetchFeedItemsSuccessCallback = (feedItems: FeedItems): void => {\n const {\n file: { id: fileId },\n logger,\n } = this.props;\n\n mark(MARK_NAME_DATA_READY);\n\n // Only emit metric if has >1 activity feed items (there should always at least be the current version)\n if (feedItems.length > 1) {\n logger.onDataReadyMetric(\n {\n endMarkName: MARK_NAME_DATA_READY,\n startMarkName: MARK_NAME_DATA_LOADING,\n },\n fileId,\n );\n }\n\n this.setState({ feedItems, activityFeedError: undefined });\n };\n\n /**\n * Logs diff between UAA and v2 API data\n *\n * @param {{}[]} responseParity array of aggragated responses from UAA and v2\n * @param {{}} parsedDataParity parsed data from UAA and v2\n * @return {void}\n */\n logAPIParity = (parityData: { uaaFeedItems: FeedItems, v2FeedItems: FeedItems }): void => {\n const { logger } = this.props;\n\n logger.onPreviewMetric({\n parityData,\n type: METRIC_TYPE_UAA_PARITY_METRIC,\n });\n };\n\n /**\n * Handles a failed feed item fetch\n *\n * @private\n * @param {Error} e - API error\n * @return {void}\n */\n fetchFeedItemsErrorCallback = (feedItems: FeedItems, errors: ElementsXhrError[]): void => {\n const { onError } = this.props;\n\n this.setState({\n feedItems,\n activityFeedError: activityFeedInlineError,\n });\n\n if (Array.isArray(errors) && errors.length) {\n onError(new Error('Fetch feed items error'), ERROR_CODE_FETCH_ACTIVITY, {\n showNotification: true,\n errors: errors.map(({ code }) => code),\n });\n }\n };\n\n getCommentFeedItemWithReplies = <T: { replies?: Array<Comment> }>(feedItem: T, replies: Array<Comment>): T => ({\n ...feedItem,\n replies,\n });\n\n getFeedItemsWithReplies = (feedItems: FeedItems, id?: string, type?: CommentFeedItemType): Promise<FeedItems> => {\n const { api, file } = this.props;\n\n return new Promise((resolve, reject) => {\n if (!id || !type) {\n resolve(feedItems);\n return;\n }\n api.getFeedAPI(false).fetchReplies(\n file,\n id,\n type,\n replies => {\n const updatedFeedItems = feedItems.map(item => {\n if (item.id === id && this.isItemTypeComment(item.type)) {\n if (item.type === FEED_ITEM_TYPE_ANNOTATION) {\n return this.getCommentFeedItemWithReplies<Annotation>(item, replies);\n }\n if (item.type === FEED_ITEM_TYPE_COMMENT) {\n return this.getCommentFeedItemWithReplies<Comment>(item, replies);\n }\n }\n return item;\n });\n resolve(updatedFeedItems);\n },\n error => {\n reject(error);\n },\n );\n });\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string, contextInfo: Object = {}): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n // eslint-disable-next-line react/prop-types\n this.props.onError(error, code, contextInfo);\n };\n\n /**\n * File approver contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getApproverContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ approverSelectorContacts: entries });\n };\n\n /**\n * File @mention contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getMentionContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ contactsLoaded: false }, () =>\n this.setState({\n contactsLoaded: true,\n mentionSelectorContacts: entries,\n }),\n );\n };\n\n /**\n * Fetches file @mention's with groups\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getApprover = debounce((searchStr: string) => {\n const { file, api } = this.props;\n api.getFileCollaboratorsAPI(false).getCollaboratorsWithQuery(\n file.id,\n this.getApproverContactsSuccessCallback,\n this.errorCallback,\n searchStr,\n {\n includeGroups: true,\n },\n );\n }, DEFAULT_COLLAB_DEBOUNCE);\n\n /**\n * Fetches file @mention's\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getMention = debounce((searchStr: string) => {\n const { file, api } = this.props;\n api.getFileCollaboratorsAPI(false).getCollaboratorsWithQuery(\n file.id,\n this.getMentionContactsSuccessCallback,\n this.errorCallback,\n searchStr,\n );\n }, DEFAULT_COLLAB_DEBOUNCE);\n\n /**\n * Returns feed item based on the item id\n *\n * @param {FeedItems} feedItems - the feed items\n * @param {string} itemId - feed item id\n * @return {FeedItem | undefined}\n */\n getFocusableFeedItemById = (feedItems: FeedItems, itemId?: string): FeedItem | typeof undefined => {\n if (!itemId) {\n return undefined;\n }\n return feedItems.find(({ id, type }) => id === itemId && this.isItemTypeFocusable(type));\n };\n\n /**\n * Returns parent feed item based on the reply id\n *\n * @param {FeedItems} feedItems - the feed items\n * @param {string} replyId - feed item's reply id\n * @return {FeedItem | undefined}\n */\n getCommentFeedItemByReplyId = (feedItems: FeedItems, replyId?: string): FeedItem | typeof undefined => {\n if (!replyId) {\n return undefined;\n }\n return feedItems.find(item => {\n if ((item.type !== FEED_ITEM_TYPE_ANNOTATION && item.type !== FEED_ITEM_TYPE_COMMENT) || !item.replies) {\n return false;\n }\n return item.replies.some(({ id }) => id === replyId);\n });\n };\n\n /**\n * Returns true if item (based on given item id) is found within feed items or its replies and it, or its parent, can be active (focusable)\n *\n * @param {FeedItems} feedItems - the feed items\n * @param {string} itemId - feed item id\n * @return {boolean}\n */\n isActiveEntryInFeed = (feedItems: FeedItems, itemId: string): boolean =>\n !!(this.getFocusableFeedItemById(feedItems, itemId) || this.getCommentFeedItemByReplyId(feedItems, itemId));\n\n isItemTypeFocusable = (type?: FeedItemType | FocusableFeedItem | CommentFeedItemType): boolean =>\n type === FEED_ITEM_TYPE_ANNOTATION || type === FEED_ITEM_TYPE_COMMENT || type === FEED_ITEM_TYPE_TASK;\n\n isItemTypeComment = (type?: FeedItemType | FocusableFeedItem | CommentFeedItemType): boolean =>\n type === FEED_ITEM_TYPE_ANNOTATION || type === FEED_ITEM_TYPE_COMMENT;\n\n /**\n * Returns active entry data (id, type) based on the activeFeedEntryId and activeFeedEntryType values\n * (it can be existing item or parent if the active entry id belongs to a reply)\n *\n * @param {FeedItems} feedItems - the feed items\n * @return {Promise<{ id: string, type?: FocusableFeedItemType }>}\n */\n getActiveFeedEntryData = (feedItems: FeedItems): Promise<{ id?: string, type?: FeedItemType }> => {\n const { activeFeedEntryId, activeFeedEntryType, api, file } = this.props;\n return new Promise((resolve, reject) => {\n if (!activeFeedEntryId || !activeFeedEntryType || !this.isItemTypeFocusable(activeFeedEntryType)) {\n resolve({});\n return;\n }\n\n // Check if the active entry is a first level Feed item\n const firstLevelItem = this.getFocusableFeedItemById(feedItems, activeFeedEntryId);\n if (firstLevelItem) {\n const { id, type } = firstLevelItem;\n resolve({ id, type });\n return;\n }\n\n // Check if the active entry is within replies of any first level Feed items\n const firstLevelItemWithActiveReply = this.getCommentFeedItemByReplyId(feedItems, activeFeedEntryId);\n if (firstLevelItemWithActiveReply) {\n const { id, type } = firstLevelItemWithActiveReply;\n resolve({ id, type });\n return;\n }\n\n // If the active entry could not be found within feed items, it's most likely a reply that\n // is not yet visible in feed and we need to fetch its data in order to find parent\n api.getFeedAPI(false).fetchThreadedComment(\n file,\n activeFeedEntryId,\n ({ parent }) => {\n const parentItem = this.getFocusableFeedItemById(feedItems, parent?.id);\n const { id, type } = parentItem || {};\n resolve({ id, type });\n },\n (error: ElementsXhrError) => {\n if (error.status === 404) {\n resolve({});\n } else {\n reject(error);\n }\n },\n );\n });\n };\n\n getActiveCommentPath(commentId?: string): string {\n if (!commentId) {\n return '/activity';\n }\n\n return generatePath('/:sidebar/comments/:commentId?', {\n sidebar: 'activity',\n commentId,\n });\n }\n\n /**\n * Fetches replies (comments) of a comment or annotation\n *\n * @param {string} id - id of the feed item\n * @param {CommentFeedItemType} type - type of the feed item\n * @return {void}\n */\n getReplies = (id: string, type: CommentFeedItemType): void => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).fetchReplies(file, id, type, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Gets the user avatar URL\n *\n * @param {string} userId the user id\n * @param {string} fileId the file id\n * @return the user avatar URL string for a given user with access token attached\n */\n getAvatarUrl = async (userId: string): Promise<?string> => {\n const { file, api } = this.props;\n\n return api.getUsersAPI(false).getAvatarUrlWithAccessToken(userId, file.id);\n };\n\n handleAnnotationSelect = (annotation: Annotation): void => {\n const { file_version, id: nextActiveAnnotationId } = annotation;\n const {\n emitActiveAnnotationChangeEvent,\n file,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n location,\n onAnnotationSelect,\n } = this.props;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const match = getAnnotationsMatchPath(location);\n const selectedFileVersionId = getProp(match, 'params.fileVersionId', currentFileVersionId);\n\n emitActiveAnnotationChangeEvent(nextActiveAnnotationId);\n\n if (annotationFileVersionId && annotationFileVersionId !== selectedFileVersionId) {\n history.push(getAnnotationsPath(annotationFileVersionId, nextActiveAnnotationId));\n }\n\n onAnnotationSelect(annotation);\n };\n\n handleItemsFiltered = (status?: ActivityFilterItemType) => {\n const { onFilterChange } = this.props;\n\n this.setState({ feedItemsStatusFilter: status });\n onFilterChange(status);\n };\n\n getFilteredFeedItems = (): FeedItems | typeof undefined => {\n const { feedItems, feedItemsStatusFilter } = this.state;\n if (!feedItems || !feedItemsStatusFilter || feedItemsStatusFilter === ACTIVITY_FILTER_OPTION_ALL) {\n return feedItems;\n }\n // Filter is completed on two properties (status and type) because filtering on comments (resolved vs. unresolved)\n // requires looking at item status to see if it is open or resolved. To filter all tasks, we need to look at the\n // item type. Item type is also used to keep versions in the feed. Task also has a status but it's status will be\n // \"NOT_STARTED\" or \"COMPLETED\" so it will not conflict with comment's status.\n return feedItems.filter(item => {\n return (\n item.status === feedItemsStatusFilter ||\n item.type === FEED_ITEM_TYPE_VERSION ||\n item.type === feedItemsStatusFilter\n );\n });\n };\n\n onTaskModalClose = () => {\n this.setState({\n approverSelectorContacts: [],\n });\n };\n\n refresh(shouldRefreshCache: boolean = true): void {\n this.fetchFeedItems(shouldRefreshCache);\n }\n\n renderAddTaskButton = () => {\n const { isDisabled, hasTasks } = this.props;\n const { approverSelectorContacts } = this.state;\n const { getApprover, getAvatarUrl, createTask, onTaskModalClose } = this;\n\n if (!hasTasks) {\n return null;\n }\n\n return (\n <AddTaskButton\n isDisabled={isDisabled}\n onTaskModalClose={onTaskModalClose}\n taskFormProps={{\n approvers: [],\n approverSelectorContacts,\n completionRule: TASK_COMPLETION_RULE_ALL,\n createTask,\n getApproverWithQuery: getApprover,\n getAvatarUrl,\n id: '',\n message: '',\n }}\n />\n );\n };\n\n renderActivitySidebarFilter = () => {\n const { features, hasTasks } = this.props;\n const { feedItemsStatusFilter } = this.state;\n const shouldShowActivityFeedFilter = isFeatureEnabled(features, 'activityFeed.filter.enabled');\n const shouldShowAdditionalFilterOptions = isFeatureEnabled(features, 'activityFeed.newThreadedReplies.enabled');\n\n if (!shouldShowActivityFeedFilter) {\n return null;\n }\n\n const activityFilterOptions: ActivityFilterOption[] = [\n ACTIVITY_FILTER_OPTION_ALL,\n ACTIVITY_FILTER_OPTION_UNRESOLVED,\n ];\n if (shouldShowAdditionalFilterOptions) {\n // Determine which filter options to show based on what activity types are available in current context\n activityFilterOptions.push(ACTIVITY_FILTER_OPTION_RESOLVED);\n if (hasTasks) {\n activityFilterOptions.push(ACTIVITY_FILTER_OPTION_TASKS);\n }\n }\n\n return (\n <ActivitySidebarFilter\n activityFilterOptions={activityFilterOptions}\n feedItemType={feedItemsStatusFilter}\n onFeedItemTypeClick={selectedStatus => {\n this.handleItemsFiltered(selectedStatus);\n }}\n />\n );\n };\n\n renderActions = () => (\n <>\n {this.renderActivitySidebarFilter()}\n {this.renderAddTaskButton()}\n </>\n );\n\n renderTitle = () => {\n const { features } = this.props;\n const shouldHideTitle = isFeatureEnabled(features, 'activityFeed.filter.enabled');\n\n if (shouldHideTitle) {\n return null;\n }\n return <FormattedMessage {...messages.sidebarActivityTitle} />;\n };\n\n render() {\n const {\n activeFeedEntryId,\n activeFeedEntryType,\n currentUser,\n currentUserError,\n elementId,\n features,\n file,\n hasReplies,\n hasVersions,\n isDisabled = false,\n onVersionHistoryClick,\n getUserProfileUrl,\n onTaskView,\n } = this.props;\n const { activityFeedError, approverSelectorContacts, contactsLoaded, mentionSelectorContacts } = this.state;\n const isNewThreadedRepliesEnabled = isFeatureEnabled(features, 'activityFeed.newThreadedReplies.enabled');\n const shouldUseUAA = isFeatureEnabled(features, 'activityFeed.uaaIntegration.enabled');\n\n return (\n <SidebarContent\n actions={this.renderActions()}\n className={classNames('bcs-activity', { 'bcs-activity--full': hasReplies })}\n elementId={elementId}\n sidebarView={SIDEBAR_VIEW_ACTIVITY}\n title={this.renderTitle()}\n >\n <ActivityFeed\n activeFeedEntryId={activeFeedEntryId}\n activeFeedEntryType={activeFeedEntryType}\n activityFeedError={activityFeedError}\n approverSelectorContacts={approverSelectorContacts}\n currentUser={currentUser}\n currentUserError={currentUserError}\n feedItems={this.getFilteredFeedItems()}\n file={file}\n getApproverWithQuery={this.getApprover}\n getAvatarUrl={this.getAvatarUrl}\n getMentionWithQuery={this.getMention}\n getUserProfileUrl={getUserProfileUrl}\n hasNewThreadedReplies={isNewThreadedRepliesEnabled}\n hasReplies={hasReplies}\n hasVersions={hasVersions}\n isDisabled={isDisabled}\n mentionSelectorContacts={mentionSelectorContacts}\n contactsLoaded={contactsLoaded}\n onAnnotationDelete={this.handleAnnotationDelete}\n onAnnotationEdit={this.handleAnnotationEdit}\n onAnnotationSelect={this.handleAnnotationSelect}\n onAnnotationStatusChange={this.handleAnnotationStatusChange}\n onAppActivityDelete={this.deleteAppActivity}\n onCommentCreate={this.createComment}\n onCommentDelete={this.deleteComment}\n onCommentUpdate={this.updateComment}\n onHideReplies={this.updateReplies}\n onReplyCreate={this.createReply}\n onReplyDelete={this.deleteReply}\n onReplyUpdate={this.updateReply}\n onShowReplies={this.getReplies}\n onTaskAssignmentUpdate={this.updateTaskAssignment}\n onTaskCreate={this.createTask}\n onTaskDelete={this.deleteTask}\n onTaskModalClose={this.onTaskModalClose}\n onTaskUpdate={this.updateTask}\n onTaskView={onTaskView}\n onVersionHistoryClick={onVersionHistoryClick}\n shouldUseUAA={shouldUseUAA}\n />\n </SidebarContent>\n );\n }\n}\n\nexport type ActivitySidebarProps = ExternalProps;\nexport { ActivitySidebar as ActivitySidebarComponent };\nexport default flow([\n withLogger(ORIGIN_ACTIVITY_SIDEBAR),\n withErrorBoundary(ORIGIN_ACTIVITY_SIDEBAR),\n withAPIContext,\n withFeatureConsumer,\n withAnnotatorContext,\n withRouterAndRef,\n])(ActivitySidebar);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ActivitySidebar.js","names":["React","classNames","debounce","flow","getProp","noop","uniqueId","FormattedMessage","generatePath","ActivityFeed","AddTaskButton","API","messages","SidebarContent","EVENT_DATA_READY","EVENT_JS_READY","getBadUserError","mark","withAnnotatorContext","withAPIContext","withErrorBoundary","withFeatureConsumer","isFeatureEnabled","withLogger","withRouterAndRef","ActivitySidebarFilter","ViewType","FeedEntryType","ACTIVITY_FILTER_OPTION_ALL","ACTIVITY_FILTER_OPTION_RESOLVED","ACTIVITY_FILTER_OPTION_TASKS","ACTIVITY_FILTER_OPTION_UNRESOLVED","DEFAULT_COLLAB_DEBOUNCE","ERROR_CODE_FETCH_ACTIVITY","FEED_ITEM_TYPE_ANNOTATION","FEED_ITEM_TYPE_COMMENT","FEED_ITEM_TYPE_TASK","FEED_ITEM_TYPE_VERSION","ORIGIN_ACTIVITY_SIDEBAR","SIDEBAR_VIEW_ACTIVITY","TASK_COMPLETION_RULE_ALL","METRIC_TYPE_UAA_PARITY_METRIC","activityFeedInlineError","inlineError","title","errorOccured","content","activityFeedItemApiError","MARK_NAME_DATA_LOADING","MARK_NAME_DATA_READY","MARK_NAME_JS_READY","ActivitySidebar","PureComponent","constructor","props","_defineProperty","id","permissions","api","emitAnnotationRemoveEvent","file","getFeedAPI","deleteAnnotation","deleteAnnotationSuccess","bind","feedErrorCallback","fetchFeedItems","text","emitAnnotationUpdateEvent","description","message","updateAnnotation","undefined","annotation","feedSuccessCallback","status","e","code","contextInfo","errorCallback","assignees","taskType","dueAt","completionRule","onSuccess","onError","currentUser","successCallback","createTaskNew","task","onTaskDelete","deleteTaskNew","taskId","onTaskUpdate","updateTaskNew","taskAssignmentId","onTaskAssignmentUpdate","updateTaskCollaborator","hasReplies","onCommentDelete","comment","deleteThreadedComment","deleteComment","parentId","emitAnnotationReplyDeleteEvent","deleteReply","deleteReplySuccessCallback","hasMention","onCommentUpdate","updateThreadedComment","updateComment","emitAnnotationReplyUpdateEvent","tagged_message","updateReply","updateReplySuccessCallback","error","replies","activeFeedEntryId","history","internalSidebarNavigationHandler","routerDisabled","feedItems","state","feedAPI","length","some","item","getCommentFeedItemByReplyId","sidebar","ACTIVITY","replace","getActiveCommentPath","updateFeedItem","reply","onCommentCreate","createThreadedComment","createComment","parentType","emitAnnotationReplyCreateEvent","eventRequestId","createReply","createReplySuccessCallback","deleteAppActivity","getActiveFeedEntryData","then","type","isActiveEntryInFeed","isItemTypeComment","Promise","resolve","getFeedItemsWithReplies","updatedItems","fetchFeedItemsSuccessCallback","catch","fetchFeedItemsErrorCallback","fileId","logger","onDataReadyMetric","endMarkName","startMarkName","setState","activityFeedError","parityData","onPreviewMetric","errors","Array","isArray","Error","showNotification","map","feedItem","_objectSpread","reject","fetchReplies","updatedFeedItems","getCommentFeedItemWithReplies","console","collaborators","entries","approverSelectorContacts","contactsLoaded","mentionSelectorContacts","searchStr","getFileCollaboratorsAPI","getCollaboratorsWithQuery","getApproverContactsSuccessCallback","includeGroups","getMentionContactsSuccessCallback","itemId","find","isItemTypeFocusable","replyId","getFocusableFeedItemById","activeFeedEntryType","firstLevelItem","firstLevelItemWithActiveReply","fetchThreadedComment","parent","parentItem","userId","getUsersAPI","getAvatarUrlWithAccessToken","file_version","nextActiveAnnotationId","emitActiveAnnotationChangeEvent","getAnnotationsMatchPath","getAnnotationsPath","internalSidebarNavigation","location","onAnnotationSelect","annotationFileVersionId","currentFileVersionId","selectedFileVersionId","match","ANNOTATIONS","fileVersionId","push","onFilterChange","feedItemsStatusFilter","filter","isDisabled","hasTasks","getApprover","getAvatarUrl","createTask","onTaskModalClose","createElement","taskFormProps","approvers","getApproverWithQuery","features","shouldShowActivityFeedFilter","shouldShowAdditionalFilterOptions","activityFilterOptions","feedItemType","onFeedItemTypeClick","selectedStatus","handleItemsFiltered","Fragment","renderActivitySidebarFilter","renderAddTaskButton","shouldHideTitle","sidebarActivityTitle","onReadyMetric","componentDidMount","shouldRefreshCache","shouldDestroy","shouldShowReplies","shouldShowTasks","hasVersions","shouldShowVersions","shouldFetchReplies","shouldShowAppActivity","shouldShowAnnotations","shouldUseUAA","fetchRepliesForFeedItems","logAPIParity","commentId","refresh","render","currentUserError","elementId","onVersionHistoryClick","getUserProfileUrl","onTaskView","isNewThreadedRepliesEnabled","actions","renderActions","className","sidebarView","renderTitle","getFilteredFeedItems","getMentionWithQuery","getMention","hasNewThreadedReplies","onAnnotationDelete","handleAnnotationDelete","onAnnotationEdit","handleAnnotationEdit","handleAnnotationSelect","onAnnotationStatusChange","handleAnnotationStatusChange","onAppActivityDelete","onHideReplies","updateReplies","onReplyCreate","onReplyDelete","onReplyUpdate","onShowReplies","getReplies","updateTaskAssignment","onTaskCreate","deleteTask","updateTask","annotatorState","onVersionChange","ActivitySidebarComponent"],"sources":["../../../src/elements/content-sidebar/ActivitySidebar.js"],"sourcesContent":["/**\n * @flow\n * @file Activity feed sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueId from 'lodash/uniqueId';\nimport { FormattedMessage } from 'react-intl';\nimport { generatePath, type ContextRouter } from 'react-router-dom';\nimport ActivityFeed from './activity-feed';\nimport AddTaskButton from './AddTaskButton';\nimport API from '../../api';\nimport messages from '../common/messages';\nimport SidebarContent from './SidebarContent';\nimport { EVENT_DATA_READY, EVENT_JS_READY } from '../common/logger/constants';\nimport { getBadUserError } from '../../utils/error';\nimport { mark } from '../../utils/performance';\nimport { withAnnotatorContext } from '../common/annotator-context';\nimport { withAPIContext } from '../common/api-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withFeatureConsumer, isFeatureEnabled } from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\nimport { withRouterAndRef } from '../common/routing';\nimport ActivitySidebarFilter from './ActivitySidebarFilter';\nimport { ViewType, FeedEntryType } from '../common/types/SidebarNavigation';\nimport {\n ACTIVITY_FILTER_OPTION_ALL,\n ACTIVITY_FILTER_OPTION_RESOLVED,\n ACTIVITY_FILTER_OPTION_TASKS,\n ACTIVITY_FILTER_OPTION_UNRESOLVED,\n DEFAULT_COLLAB_DEBOUNCE,\n ERROR_CODE_FETCH_ACTIVITY,\n FEED_ITEM_TYPE_ANNOTATION,\n FEED_ITEM_TYPE_COMMENT,\n FEED_ITEM_TYPE_TASK,\n FEED_ITEM_TYPE_VERSION,\n ORIGIN_ACTIVITY_SIDEBAR,\n SIDEBAR_VIEW_ACTIVITY,\n TASK_COMPLETION_RULE_ALL,\n METRIC_TYPE_UAA_PARITY_METRIC,\n} from '../../constants';\nimport type {\n TaskCompletionRule,\n TaskType,\n TaskNew,\n TaskUpdatePayload,\n TaskCollabStatus,\n} from '../../common/types/tasks';\nimport type {\n Annotation,\n AnnotationPermission,\n ActivityFilterItemType,\n ActivityFilterOption,\n BoxCommentPermission,\n Comment,\n CommentFeedItemType,\n FocusableFeedItem,\n FocusableFeedItemType,\n FeedItem,\n FeedItems,\n FeedItemStatus,\n FeedItemType,\n} from '../../common/types/feed';\nimport type { ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { SelectorItems, User, UserMini, GroupMini, BoxItem } from '../../common/types/core';\nimport type { Errors, GetProfileUrlCallback } from '../common/flowTypes';\nimport type { Translations } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport type { WithAnnotatorContextProps } from '../common/annotator-context';\nimport './ActivitySidebar.scss';\n\nimport type { OnAnnotationEdit, OnAnnotationStatusChange } from './activity-feed/comment/types';\nimport type { InternalSidebarNavigation, InternalSidebarNavigationHandler } from '../common/types/SidebarNavigation';\n\ntype ExternalProps = {\n activeFeedEntryId?: string,\n activeFeedEntryType?: FocusableFeedItemType,\n currentUser?: User,\n currentUserError?: Errors,\n getUserProfileUrl?: GetProfileUrlCallback,\n hasReplies?: boolean,\n hasTasks?: boolean,\n hasVersions?: boolean,\n internalSidebarNavigation?: InternalSidebarNavigation,\n internalSidebarNavigationHandler?: InternalSidebarNavigationHandler,\n onCommentCreate: Function,\n onCommentDelete: (comment: Comment) => any,\n onCommentUpdate: () => any,\n onTaskAssignmentUpdate: Function,\n onTaskCreate: Function,\n onTaskDelete: (id: string) => any,\n onTaskUpdate: () => any,\n onTaskView: (id: string, isCreator: boolean) => any,\n routerDisabled?: boolean,\n} & ErrorContextProps &\n WithAnnotatorContextProps;\n\ntype PropsWithoutContext = {\n elementId: string,\n file: BoxItem,\n hasSidebarInitialized?: boolean,\n isDisabled: boolean,\n onAnnotationSelect: Function,\n onFilterChange: (status?: ActivityFilterItemType) => void,\n onVersionChange: Function,\n onVersionHistoryClick?: Function,\n translations?: Translations,\n} & ExternalProps &\n WithLoggerProps &\n ContextRouter;\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n} & PropsWithoutContext;\n\ntype State = {\n activityFeedError?: Errors,\n approverSelectorContacts: SelectorItems<UserMini | GroupMini>,\n contactsLoaded?: boolean,\n feedItems?: FeedItems,\n feedItemsStatusFilter?: ActivityFilterItemType,\n mentionSelectorContacts?: SelectorItems<UserMini>,\n};\n\nexport const activityFeedInlineError: Errors = {\n inlineError: {\n title: messages.errorOccured,\n content: messages.activityFeedItemApiError,\n },\n};\n\nconst MARK_NAME_DATA_LOADING = `${ORIGIN_ACTIVITY_SIDEBAR}_data_loading`;\nconst MARK_NAME_DATA_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_DATA_READY}`;\nconst MARK_NAME_JS_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ActivitySidebar extends React.PureComponent<Props, State> {\n static defaultProps = {\n annotatorState: {},\n emitActiveAnnotationChangeEvent: noop,\n emitAnnotationRemoveEvent: noop,\n emitAnnotationReplyCreateEvent: noop,\n emitAnnotationReplyDeleteEvent: noop,\n emitAnnotationReplyUpdateEvent: noop,\n emitAnnotationUpdateEvent: noop,\n getAnnotationsMatchPath: noop,\n getAnnotationsPath: noop,\n hasReplies: false,\n hasTasks: true,\n hasVersions: true,\n isDisabled: false,\n onAnnotationSelect: noop,\n onCommentCreate: noop,\n onCommentDelete: noop,\n onCommentUpdate: noop,\n onFilterChange: noop,\n onTaskAssignmentUpdate: noop,\n onTaskCreate: noop,\n onTaskDelete: noop,\n onTaskUpdate: noop,\n onVersionChange: noop,\n onVersionHistoryClick: noop,\n };\n\n constructor(props: Props) {\n super(props);\n // eslint-disable-next-line react/prop-types\n const { logger } = this.props;\n\n mark(MARK_NAME_DATA_LOADING);\n\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n this.state = {};\n }\n\n componentDidMount() {\n this.fetchFeedItems(true);\n }\n\n handleAnnotationDelete = ({ id, permissions }: { id: string, permissions: AnnotationPermission }) => {\n const { api, emitAnnotationRemoveEvent, file } = this.props;\n\n emitAnnotationRemoveEvent(id, true);\n api.getFeedAPI(false).deleteAnnotation(\n file,\n id,\n permissions,\n this.deleteAnnotationSuccess.bind(this, id),\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationEdit: OnAnnotationEdit = ({ id, text, permissions }) => {\n const { api, emitAnnotationUpdateEvent, file } = this.props;\n\n emitAnnotationUpdateEvent(\n {\n id,\n description: {\n message: text,\n },\n },\n true,\n );\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n text,\n undefined,\n permissions,\n (annotation: Annotation) => {\n emitAnnotationUpdateEvent(annotation);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationStatusChange: OnAnnotationStatusChange = ({ id, permissions, status }) => {\n const { api, emitAnnotationUpdateEvent, file } = this.props;\n\n emitAnnotationUpdateEvent({ id, status }, true);\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n undefined,\n status,\n permissions,\n (annotation: Annotation) => {\n emitAnnotationUpdateEvent(annotation);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n deleteAnnotationSuccess(id: string) {\n const { emitAnnotationRemoveEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationRemoveEvent(id);\n }\n\n /**\n * Success callback for fetching feed items\n */\n feedSuccessCallback = (): void => {\n this.fetchFeedItems();\n };\n\n /**\n * Error callback for fetching feed items\n *\n * @param {Error} e - the error which occured\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n */\n feedErrorCallback = (e: ElementsXhrError, code: string, contextInfo?: Object) => {\n this.errorCallback(e, code, contextInfo);\n this.fetchFeedItems();\n };\n\n createTask = (\n message: string,\n assignees: SelectorItems<>,\n taskType: TaskType,\n dueAt: ?string,\n completionRule: TaskCompletionRule,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, currentUser, file } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n const errorCallback = (e, code, contextInfo) => {\n if (onError) {\n onError(e, code, contextInfo);\n }\n this.feedErrorCallback(e, code, contextInfo);\n };\n const successCallback = () => {\n if (onSuccess) {\n onSuccess();\n }\n this.feedSuccessCallback();\n };\n\n api.getFeedAPI(false).createTaskNew(\n file,\n currentUser,\n message,\n assignees,\n taskType,\n dueAt,\n completionRule,\n successCallback,\n errorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n deleteTask = (task: TaskNew): void => {\n const { file, api, onTaskDelete } = this.props;\n api.getFeedAPI(false).deleteTaskNew(\n file,\n task,\n (taskId: string) => {\n this.feedSuccessCallback();\n onTaskDelete(taskId);\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTask = (task: TaskUpdatePayload, onSuccess: ?Function, onError: ?Function): void => {\n const { api, file, onTaskUpdate } = this.props;\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n const successCallback = () => {\n this.feedSuccessCallback();\n\n if (onSuccess) {\n onSuccess();\n }\n\n onTaskUpdate();\n };\n\n api.getFeedAPI(false).updateTaskNew(file, task, successCallback, errorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTaskAssignment = (taskId: string, taskAssignmentId: string, status: TaskCollabStatus): void => {\n const { api, currentUser = {}, file, onTaskAssignmentUpdate } = this.props;\n\n const successCallback = () => {\n this.feedSuccessCallback();\n onTaskAssignmentUpdate(taskId, taskAssignmentId, status, currentUser.id);\n };\n\n api.getFeedAPI(false).updateTaskCollaborator(\n file,\n taskId,\n taskAssignmentId,\n status,\n successCallback,\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a comment via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteComment = ({ id, permissions }: { id: string, permissions: BoxCommentPermission }): void => {\n const { api, file, hasReplies, onCommentDelete } = this.props;\n\n const successCallback = (comment: Comment) => {\n this.feedSuccessCallback();\n onCommentDelete(comment);\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).deleteThreadedComment(file, id, permissions, successCallback, this.feedErrorCallback);\n } else {\n api.getFeedAPI(false).deleteComment(file, id, permissions, successCallback, this.feedErrorCallback);\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a reply via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteReply = ({\n id,\n parentId,\n permissions,\n }: {\n id: string,\n parentId: string,\n permissions: BoxCommentPermission,\n }): void => {\n const { api, emitAnnotationReplyDeleteEvent, file } = this.props;\n\n emitAnnotationReplyDeleteEvent(id, parentId, true);\n api.getFeedAPI(false).deleteReply(\n file,\n id,\n parentId,\n permissions,\n this.deleteReplySuccessCallback.bind(this, id, parentId),\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful deletion of a reply\n *\n * @private\n * @param {string} id - The id of the reply\n * @param {string} parentId - The id of the reply's parent item\n * @return {void}\n */\n deleteReplySuccessCallback = (id: string, parentId: string) => {\n const { emitAnnotationReplyDeleteEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyDeleteEvent(id, parentId);\n };\n\n updateComment = (\n id: string,\n text?: string,\n status?: FeedItemStatus,\n hasMention: boolean,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, file, hasReplies, onCommentUpdate } = this.props;\n\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n\n const successCallback = () => {\n this.feedSuccessCallback();\n if (onSuccess) {\n onSuccess();\n }\n onCommentUpdate();\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).updateThreadedComment(\n file,\n id,\n text,\n status,\n permissions,\n successCallback,\n errorCallback,\n );\n } else {\n api.getFeedAPI(false).updateComment(\n file,\n id,\n text || '',\n hasMention,\n permissions,\n successCallback,\n errorCallback,\n );\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Updates a reply\n *\n * @param {string} id - id of the reply\n * @param {string} parentId - id of the parent item\n * @param {string} text - the reply updated text\n * @param {BoxCommentPermission} permissions - permissions associated with the reply\n * @param {Function} onSuccess - the success callback\n * @param {Function} onError - the error callback\n * @return {void}\n */\n updateReply = (\n id: string,\n parentId: string,\n text: string,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, emitAnnotationReplyUpdateEvent, file } = this.props;\n\n emitAnnotationReplyUpdateEvent({ id, tagged_message: text }, parentId, true);\n api.getFeedAPI(false).updateReply(\n file,\n id,\n parentId,\n text,\n permissions,\n this.updateReplySuccessCallback.bind(this, parentId, onSuccess),\n (error, code) => {\n if (onError) {\n onError(error, code);\n }\n this.feedErrorCallback(error, code);\n },\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Updates replies of a comment or annotation in the Feed\n *\n * @param {string} id - id of the feed item\n * @param {Array<Comment>} replies - replies\n * @return {void}\n */\n updateReplies = (id: string, replies: Array<Comment>) => {\n const { activeFeedEntryId, api, file, history, internalSidebarNavigationHandler, routerDisabled } = this.props;\n const { feedItems } = this.state;\n\n if (!feedItems) {\n return;\n }\n\n const feedAPI = api.getFeedAPI(false);\n feedAPI.file = file;\n\n // Detect if replies are being hidden and activeFeedEntryId belongs to a reply\n // that is in currently being updated parent, in order to disable active item\n if (\n activeFeedEntryId &&\n replies.length === 1 &&\n feedItems.some(\n (item: FeedItem) =>\n item.id === id && item === this.getCommentFeedItemByReplyId(feedItems, activeFeedEntryId),\n )\n ) {\n if (routerDisabled && internalSidebarNavigationHandler) {\n internalSidebarNavigationHandler(\n {\n sidebar: ViewType.ACTIVITY,\n },\n true,\n );\n } else {\n history.replace(this.getActiveCommentPath());\n }\n }\n\n feedAPI.updateFeedItem({ replies }, id);\n\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful update of a reply\n *\n * @private\n * @param {string} parentId - The id of the reply's parent item\n * @param {Function} onSuccess - the success callback\n * @param {Comment} reply - The reply comment object\n * @return {void}\n */\n updateReplySuccessCallback = (parentId: string, onSuccess: ?Function, reply: Comment) => {\n const { emitAnnotationReplyUpdateEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyUpdateEvent(reply, parentId);\n if (onSuccess) {\n onSuccess();\n }\n };\n\n /**\n * Posts a new comment to the API\n *\n * @param {string} text - The comment's text\n * @param {boolean} hasMention - The comment's text\n * @return {void}\n */\n createComment = (text: string, hasMention: boolean): void => {\n const { api, currentUser, file, hasReplies, onCommentCreate } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const successCallback = (comment: Comment) => {\n onCommentCreate(comment);\n this.feedSuccessCallback();\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).createThreadedComment(\n file,\n currentUser,\n text,\n successCallback,\n this.feedErrorCallback,\n );\n } else {\n api.getFeedAPI(false).createComment(\n file,\n currentUser,\n text,\n hasMention,\n successCallback,\n this.feedErrorCallback,\n );\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Posts a new reply to the API\n *\n * @param {string} parentId - The id of the parent item\n * @param {CommentFeedItemType} parentType - The type of the parent item\n * @param {string} text - The text of reply\n * @return {void}\n */\n createReply = (parentId: string, parentType: CommentFeedItemType, text: string): void => {\n const { api, currentUser, emitAnnotationReplyCreateEvent, file } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const eventRequestId = uniqueId('comment_');\n emitAnnotationReplyCreateEvent({ tagged_message: text }, eventRequestId, parentId, true);\n api.getFeedAPI(false).createReply(\n file,\n currentUser,\n parentId,\n parentType,\n text,\n this.createReplySuccessCallback.bind(this, eventRequestId, parentId),\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful creation of a reply\n *\n * @private\n * @param {string} eventRequestId - The id of the parent item\n * @param {string} parentId - The id of the reply's parent item\n * @param {Comment} reply - The reply comment object\n * @return {void}\n */\n createReplySuccessCallback = (eventRequestId: string, parentId: string, reply: Comment) => {\n const { emitAnnotationReplyCreateEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyCreateEvent(reply, eventRequestId, parentId);\n };\n\n /**\n * Deletes an app activity item via the API.\n *\n * @param {Object} args - A subset of the app activity\n * @return void\n */\n deleteAppActivity = ({ id }: { id: string }): void => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).deleteAppActivity(file, id, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Fetches the feed items for the sidebar\n *\n * @param {boolean} shouldRefreshCache true if the cache should be refreshed\n * @param {boolean} shouldDestroy true if the api factory should be destroyed\n */\n fetchFeedItems(shouldRefreshCache: boolean = false, shouldDestroy: boolean = false) {\n const {\n activeFeedEntryId,\n activeFeedEntryType,\n api,\n file,\n features,\n hasReplies: shouldShowReplies,\n hasTasks: shouldShowTasks,\n hasVersions: shouldShowVersions,\n } = this.props;\n const shouldFetchReplies =\n shouldRefreshCache &&\n shouldShowReplies &&\n activeFeedEntryId &&\n activeFeedEntryType === FEED_ITEM_TYPE_COMMENT;\n const shouldShowAppActivity = isFeatureEnabled(features, 'activityFeed.appActivity.enabled');\n const shouldShowAnnotations = isFeatureEnabled(features, 'activityFeed.annotations.enabled');\n const shouldUseUAA = isFeatureEnabled(features, 'activityFeed.uaaIntegration.enabled');\n\n api.getFeedAPI(shouldDestroy).feedItems(\n file,\n shouldRefreshCache,\n shouldFetchReplies ? this.fetchRepliesForFeedItems : this.fetchFeedItemsSuccessCallback,\n this.fetchFeedItemsErrorCallback,\n this.errorCallback,\n {\n shouldShowAnnotations,\n shouldShowAppActivity,\n shouldShowReplies,\n shouldShowTasks,\n shouldShowVersions,\n shouldUseUAA,\n },\n shouldUseUAA ? this.logAPIParity : undefined,\n );\n }\n\n fetchRepliesForFeedItems = (feedItems: FeedItems) => {\n const { activeFeedEntryId } = this.props;\n\n if (!activeFeedEntryId) {\n return;\n }\n\n this.getActiveFeedEntryData(feedItems)\n .then(({ id, type }) => {\n if (\n !id ||\n !type ||\n this.isActiveEntryInFeed(feedItems, activeFeedEntryId) ||\n !this.isItemTypeComment(type)\n ) {\n return Promise.resolve(feedItems);\n }\n\n const parentType: CommentFeedItemType =\n type === FEED_ITEM_TYPE_COMMENT ? FEED_ITEM_TYPE_COMMENT : FEED_ITEM_TYPE_ANNOTATION;\n\n return this.getFeedItemsWithReplies(feedItems, id, parentType);\n })\n .then(updatedItems => this.fetchFeedItemsSuccessCallback(updatedItems))\n .catch(error => this.fetchFeedItemsErrorCallback(feedItems, [error]));\n };\n\n /**\n * Handles a successful feed API fetch\n *\n * @private\n * @param {Array} feedItems - the feed items\n * @return {void}\n */\n fetchFeedItemsSuccessCallback = (feedItems: FeedItems): void => {\n const {\n file: { id: fileId },\n logger,\n } = this.props;\n\n mark(MARK_NAME_DATA_READY);\n\n // Only emit metric if has >1 activity feed items (there should always at least be the current version)\n if (feedItems.length > 1) {\n logger.onDataReadyMetric(\n {\n endMarkName: MARK_NAME_DATA_READY,\n startMarkName: MARK_NAME_DATA_LOADING,\n },\n fileId,\n );\n }\n\n this.setState({ feedItems, activityFeedError: undefined });\n };\n\n /**\n * Logs diff between UAA and v2 API data\n *\n * @param {{}[]} responseParity array of aggragated responses from UAA and v2\n * @param {{}} parsedDataParity parsed data from UAA and v2\n * @return {void}\n */\n logAPIParity = (parityData: { uaaFeedItems: FeedItems, v2FeedItems: FeedItems }): void => {\n const { logger } = this.props;\n\n logger.onPreviewMetric({\n parityData,\n type: METRIC_TYPE_UAA_PARITY_METRIC,\n });\n };\n\n /**\n * Handles a failed feed item fetch\n *\n * @private\n * @param {Error} e - API error\n * @return {void}\n */\n fetchFeedItemsErrorCallback = (feedItems: FeedItems, errors: ElementsXhrError[]): void => {\n const { onError } = this.props;\n\n this.setState({\n feedItems,\n activityFeedError: activityFeedInlineError,\n });\n\n if (Array.isArray(errors) && errors.length) {\n onError(new Error('Fetch feed items error'), ERROR_CODE_FETCH_ACTIVITY, {\n showNotification: true,\n errors: errors.map(({ code }) => code),\n });\n }\n };\n\n getCommentFeedItemWithReplies = <T: { replies?: Array<Comment> }>(feedItem: T, replies: Array<Comment>): T => ({\n ...feedItem,\n replies,\n });\n\n getFeedItemsWithReplies = (feedItems: FeedItems, id?: string, type?: CommentFeedItemType): Promise<FeedItems> => {\n const { api, file } = this.props;\n\n return new Promise((resolve, reject) => {\n if (!id || !type) {\n resolve(feedItems);\n return;\n }\n api.getFeedAPI(false).fetchReplies(\n file,\n id,\n type,\n replies => {\n const updatedFeedItems = feedItems.map(item => {\n if (item.id === id && this.isItemTypeComment(item.type)) {\n if (item.type === FEED_ITEM_TYPE_ANNOTATION) {\n return this.getCommentFeedItemWithReplies<Annotation>(item, replies);\n }\n if (item.type === FEED_ITEM_TYPE_COMMENT) {\n return this.getCommentFeedItemWithReplies<Comment>(item, replies);\n }\n }\n return item;\n });\n resolve(updatedFeedItems);\n },\n error => {\n reject(error);\n },\n );\n });\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string, contextInfo: Object = {}): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n // eslint-disable-next-line react/prop-types\n this.props.onError(error, code, contextInfo);\n };\n\n /**\n * File approver contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getApproverContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ approverSelectorContacts: entries });\n };\n\n /**\n * File @mention contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getMentionContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ contactsLoaded: false }, () =>\n this.setState({\n contactsLoaded: true,\n mentionSelectorContacts: entries,\n }),\n );\n };\n\n /**\n * Fetches file @mention's with groups\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getApprover = debounce((searchStr: string) => {\n const { file, api } = this.props;\n api.getFileCollaboratorsAPI(false).getCollaboratorsWithQuery(\n file.id,\n this.getApproverContactsSuccessCallback,\n this.errorCallback,\n searchStr,\n {\n includeGroups: true,\n },\n );\n }, DEFAULT_COLLAB_DEBOUNCE);\n\n /**\n * Fetches file @mention's\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getMention = debounce((searchStr: string) => {\n const { file, api } = this.props;\n api.getFileCollaboratorsAPI(false).getCollaboratorsWithQuery(\n file.id,\n this.getMentionContactsSuccessCallback,\n this.errorCallback,\n searchStr,\n );\n }, DEFAULT_COLLAB_DEBOUNCE);\n\n /**\n * Returns feed item based on the item id\n *\n * @param {FeedItems} feedItems - the feed items\n * @param {string} itemId - feed item id\n * @return {FeedItem | undefined}\n */\n getFocusableFeedItemById = (feedItems: FeedItems, itemId?: string): FeedItem | typeof undefined => {\n if (!itemId) {\n return undefined;\n }\n return feedItems.find(({ id, type }) => id === itemId && this.isItemTypeFocusable(type));\n };\n\n /**\n * Returns parent feed item based on the reply id\n *\n * @param {FeedItems} feedItems - the feed items\n * @param {string} replyId - feed item's reply id\n * @return {FeedItem | undefined}\n */\n getCommentFeedItemByReplyId = (feedItems: FeedItems, replyId?: string): FeedItem | typeof undefined => {\n if (!replyId) {\n return undefined;\n }\n return feedItems.find(item => {\n if ((item.type !== FEED_ITEM_TYPE_ANNOTATION && item.type !== FEED_ITEM_TYPE_COMMENT) || !item.replies) {\n return false;\n }\n return item.replies.some(({ id }) => id === replyId);\n });\n };\n\n /**\n * Returns true if item (based on given item id) is found within feed items or its replies and it, or its parent, can be active (focusable)\n *\n * @param {FeedItems} feedItems - the feed items\n * @param {string} itemId - feed item id\n * @return {boolean}\n */\n isActiveEntryInFeed = (feedItems: FeedItems, itemId: string): boolean =>\n !!(this.getFocusableFeedItemById(feedItems, itemId) || this.getCommentFeedItemByReplyId(feedItems, itemId));\n\n isItemTypeFocusable = (type?: FeedItemType | FocusableFeedItem | CommentFeedItemType): boolean =>\n type === FEED_ITEM_TYPE_ANNOTATION || type === FEED_ITEM_TYPE_COMMENT || type === FEED_ITEM_TYPE_TASK;\n\n isItemTypeComment = (type?: FeedItemType | FocusableFeedItem | CommentFeedItemType): boolean =>\n type === FEED_ITEM_TYPE_ANNOTATION || type === FEED_ITEM_TYPE_COMMENT;\n\n /**\n * Returns active entry data (id, type) based on the activeFeedEntryId and activeFeedEntryType values\n * (it can be existing item or parent if the active entry id belongs to a reply)\n *\n * @param {FeedItems} feedItems - the feed items\n * @return {Promise<{ id: string, type?: FocusableFeedItemType }>}\n */\n getActiveFeedEntryData = (feedItems: FeedItems): Promise<{ id?: string, type?: FeedItemType }> => {\n const { activeFeedEntryId, activeFeedEntryType, api, file } = this.props;\n return new Promise((resolve, reject) => {\n if (!activeFeedEntryId || !activeFeedEntryType || !this.isItemTypeFocusable(activeFeedEntryType)) {\n resolve({});\n return;\n }\n\n // Check if the active entry is a first level Feed item\n const firstLevelItem = this.getFocusableFeedItemById(feedItems, activeFeedEntryId);\n if (firstLevelItem) {\n const { id, type } = firstLevelItem;\n resolve({ id, type });\n return;\n }\n\n // Check if the active entry is within replies of any first level Feed items\n const firstLevelItemWithActiveReply = this.getCommentFeedItemByReplyId(feedItems, activeFeedEntryId);\n if (firstLevelItemWithActiveReply) {\n const { id, type } = firstLevelItemWithActiveReply;\n resolve({ id, type });\n return;\n }\n\n // If the active entry could not be found within feed items, it's most likely a reply that\n // is not yet visible in feed and we need to fetch its data in order to find parent\n api.getFeedAPI(false).fetchThreadedComment(\n file,\n activeFeedEntryId,\n ({ parent }) => {\n const parentItem = this.getFocusableFeedItemById(feedItems, parent?.id);\n const { id, type } = parentItem || {};\n resolve({ id, type });\n },\n (error: ElementsXhrError) => {\n if (error.status === 404) {\n resolve({});\n } else {\n reject(error);\n }\n },\n );\n });\n };\n\n getActiveCommentPath(commentId?: string): string {\n if (!commentId) {\n return '/activity';\n }\n\n return generatePath('/:sidebar/comments/:commentId?', {\n sidebar: 'activity',\n commentId,\n });\n }\n\n /**\n * Fetches replies (comments) of a comment or annotation\n *\n * @param {string} id - id of the feed item\n * @param {CommentFeedItemType} type - type of the feed item\n * @return {void}\n */\n getReplies = (id: string, type: CommentFeedItemType): void => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).fetchReplies(file, id, type, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Gets the user avatar URL\n *\n * @param {string} userId the user id\n * @param {string} fileId the file id\n * @return the user avatar URL string for a given user with access token attached\n */\n getAvatarUrl = async (userId: string): Promise<?string> => {\n const { file, api } = this.props;\n\n return api.getUsersAPI(false).getAvatarUrlWithAccessToken(userId, file.id);\n };\n\n handleAnnotationSelect = (annotation: Annotation): void => {\n const { file_version, id: nextActiveAnnotationId } = annotation;\n const {\n emitActiveAnnotationChangeEvent,\n file,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n internalSidebarNavigation,\n internalSidebarNavigationHandler,\n location,\n onAnnotationSelect,\n routerDisabled,\n } = this.props;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n\n let selectedFileVersionId = currentFileVersionId;\n if (routerDisabled && internalSidebarNavigation) {\n selectedFileVersionId = getProp(internalSidebarNavigation, 'fileVersionId', currentFileVersionId);\n } else {\n const match = getAnnotationsMatchPath(location);\n selectedFileVersionId = getProp(match, 'params.fileVersionId', currentFileVersionId);\n }\n\n emitActiveAnnotationChangeEvent(nextActiveAnnotationId);\n\n if (annotationFileVersionId && annotationFileVersionId !== selectedFileVersionId) {\n if (routerDisabled && internalSidebarNavigationHandler) {\n internalSidebarNavigationHandler({\n sidebar: ViewType.ACTIVITY,\n activeFeedEntryId: nextActiveAnnotationId,\n activeFeedEntryType: FeedEntryType.ANNOTATIONS,\n fileVersionId: annotationFileVersionId,\n });\n } else {\n history.push(getAnnotationsPath(annotationFileVersionId, nextActiveAnnotationId));\n }\n }\n\n onAnnotationSelect(annotation);\n };\n\n handleItemsFiltered = (status?: ActivityFilterItemType) => {\n const { onFilterChange } = this.props;\n\n this.setState({ feedItemsStatusFilter: status });\n onFilterChange(status);\n };\n\n getFilteredFeedItems = (): FeedItems | typeof undefined => {\n const { feedItems, feedItemsStatusFilter } = this.state;\n if (!feedItems || !feedItemsStatusFilter || feedItemsStatusFilter === ACTIVITY_FILTER_OPTION_ALL) {\n return feedItems;\n }\n // Filter is completed on two properties (status and type) because filtering on comments (resolved vs. unresolved)\n // requires looking at item status to see if it is open or resolved. To filter all tasks, we need to look at the\n // item type. Item type is also used to keep versions in the feed. Task also has a status but it's status will be\n // \"NOT_STARTED\" or \"COMPLETED\" so it will not conflict with comment's status.\n return feedItems.filter(item => {\n return (\n item.status === feedItemsStatusFilter ||\n item.type === FEED_ITEM_TYPE_VERSION ||\n item.type === feedItemsStatusFilter\n );\n });\n };\n\n onTaskModalClose = () => {\n this.setState({\n approverSelectorContacts: [],\n });\n };\n\n refresh(shouldRefreshCache: boolean = true): void {\n this.fetchFeedItems(shouldRefreshCache);\n }\n\n renderAddTaskButton = () => {\n const { isDisabled, hasTasks, internalSidebarNavigation, internalSidebarNavigationHandler, routerDisabled } =\n this.props;\n const { approverSelectorContacts } = this.state;\n const { getApprover, getAvatarUrl, createTask, onTaskModalClose } = this;\n\n if (!hasTasks) {\n return null;\n }\n\n return (\n <AddTaskButton\n internalSidebarNavigation={internalSidebarNavigation}\n internalSidebarNavigationHandler={internalSidebarNavigationHandler}\n isDisabled={isDisabled}\n onTaskModalClose={onTaskModalClose}\n routerDisabled={routerDisabled}\n taskFormProps={{\n approvers: [],\n approverSelectorContacts,\n completionRule: TASK_COMPLETION_RULE_ALL,\n createTask,\n getApproverWithQuery: getApprover,\n getAvatarUrl,\n id: '',\n message: '',\n }}\n />\n );\n };\n\n renderActivitySidebarFilter = () => {\n const { features, hasTasks } = this.props;\n const { feedItemsStatusFilter } = this.state;\n const shouldShowActivityFeedFilter = isFeatureEnabled(features, 'activityFeed.filter.enabled');\n const shouldShowAdditionalFilterOptions = isFeatureEnabled(features, 'activityFeed.newThreadedReplies.enabled');\n\n if (!shouldShowActivityFeedFilter) {\n return null;\n }\n\n const activityFilterOptions: ActivityFilterOption[] = [\n ACTIVITY_FILTER_OPTION_ALL,\n ACTIVITY_FILTER_OPTION_UNRESOLVED,\n ];\n if (shouldShowAdditionalFilterOptions) {\n // Determine which filter options to show based on what activity types are available in current context\n activityFilterOptions.push(ACTIVITY_FILTER_OPTION_RESOLVED);\n if (hasTasks) {\n activityFilterOptions.push(ACTIVITY_FILTER_OPTION_TASKS);\n }\n }\n\n return (\n <ActivitySidebarFilter\n activityFilterOptions={activityFilterOptions}\n feedItemType={feedItemsStatusFilter}\n onFeedItemTypeClick={selectedStatus => {\n this.handleItemsFiltered(selectedStatus);\n }}\n />\n );\n };\n\n renderActions = () => (\n <>\n {this.renderActivitySidebarFilter()}\n {this.renderAddTaskButton()}\n </>\n );\n\n renderTitle = () => {\n const { features } = this.props;\n const shouldHideTitle = isFeatureEnabled(features, 'activityFeed.filter.enabled');\n\n if (shouldHideTitle) {\n return null;\n }\n return <FormattedMessage {...messages.sidebarActivityTitle} />;\n };\n\n render() {\n const {\n activeFeedEntryId,\n activeFeedEntryType,\n currentUser,\n currentUserError,\n elementId,\n features,\n file,\n hasReplies,\n hasVersions,\n isDisabled = false,\n onVersionHistoryClick,\n getUserProfileUrl,\n onTaskView,\n } = this.props;\n const { activityFeedError, approverSelectorContacts, contactsLoaded, mentionSelectorContacts } = this.state;\n const isNewThreadedRepliesEnabled = isFeatureEnabled(features, 'activityFeed.newThreadedReplies.enabled');\n const shouldUseUAA = isFeatureEnabled(features, 'activityFeed.uaaIntegration.enabled');\n\n return (\n <SidebarContent\n actions={this.renderActions()}\n className={classNames('bcs-activity', { 'bcs-activity--full': hasReplies })}\n elementId={elementId}\n sidebarView={SIDEBAR_VIEW_ACTIVITY}\n title={this.renderTitle()}\n >\n <ActivityFeed\n activeFeedEntryId={activeFeedEntryId}\n activeFeedEntryType={activeFeedEntryType}\n activityFeedError={activityFeedError}\n approverSelectorContacts={approverSelectorContacts}\n currentUser={currentUser}\n currentUserError={currentUserError}\n feedItems={this.getFilteredFeedItems()}\n file={file}\n getApproverWithQuery={this.getApprover}\n getAvatarUrl={this.getAvatarUrl}\n getMentionWithQuery={this.getMention}\n getUserProfileUrl={getUserProfileUrl}\n hasNewThreadedReplies={isNewThreadedRepliesEnabled}\n hasReplies={hasReplies}\n hasVersions={hasVersions}\n isDisabled={isDisabled}\n mentionSelectorContacts={mentionSelectorContacts}\n contactsLoaded={contactsLoaded}\n onAnnotationDelete={this.handleAnnotationDelete}\n onAnnotationEdit={this.handleAnnotationEdit}\n onAnnotationSelect={this.handleAnnotationSelect}\n onAnnotationStatusChange={this.handleAnnotationStatusChange}\n onAppActivityDelete={this.deleteAppActivity}\n onCommentCreate={this.createComment}\n onCommentDelete={this.deleteComment}\n onCommentUpdate={this.updateComment}\n onHideReplies={this.updateReplies}\n onReplyCreate={this.createReply}\n onReplyDelete={this.deleteReply}\n onReplyUpdate={this.updateReply}\n onShowReplies={this.getReplies}\n onTaskAssignmentUpdate={this.updateTaskAssignment}\n onTaskCreate={this.createTask}\n onTaskDelete={this.deleteTask}\n onTaskModalClose={this.onTaskModalClose}\n onTaskUpdate={this.updateTask}\n onTaskView={onTaskView}\n onVersionHistoryClick={onVersionHistoryClick}\n shouldUseUAA={shouldUseUAA}\n />\n </SidebarContent>\n );\n }\n}\n\nexport type ActivitySidebarProps = ExternalProps;\nexport { ActivitySidebar as ActivitySidebarComponent };\nexport default flow([\n withLogger(ORIGIN_ACTIVITY_SIDEBAR),\n withErrorBoundary(ORIGIN_ACTIVITY_SIDEBAR),\n withAPIContext,\n withFeatureConsumer,\n withAnnotatorContext,\n withRouterAndRef,\n])(ActivitySidebar);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export declare enum ViewType {
|
|
2
|
-
BOXAI = "boxai",
|
|
3
2
|
SKILLS = "skills",
|
|
4
|
-
ACTIVITY = "activity",
|
|
5
3
|
DETAILS = "details",
|
|
6
4
|
METADATA = "metadata",
|
|
5
|
+
METADATA_REDESIGN = "metadata_redesign",
|
|
6
|
+
BOXAI = "boxai",
|
|
7
|
+
ACTIVITY = "activity",
|
|
8
|
+
VERSIONS = "versions",
|
|
7
9
|
DOCGEN = "docgen"
|
|
8
10
|
}
|
|
9
11
|
export declare enum FeedEntryType {
|
|
@@ -15,11 +17,15 @@ type VersionSidebarView = {
|
|
|
15
17
|
sidebar: ViewType.ACTIVITY | ViewType.DETAILS;
|
|
16
18
|
versionId: string;
|
|
17
19
|
};
|
|
20
|
+
export type MetadataSidebarView = {
|
|
21
|
+
sidebar: ViewType.METADATA | ViewType.METADATA_REDESIGN;
|
|
22
|
+
filteredTemplateIds?: string;
|
|
23
|
+
};
|
|
18
24
|
export type ActivityAnnotationsSidebarView = {
|
|
19
25
|
sidebar: ViewType.ACTIVITY;
|
|
20
26
|
activeFeedEntryType: FeedEntryType.ANNOTATIONS;
|
|
21
27
|
fileVersionId: string;
|
|
22
|
-
activeFeedEntryId
|
|
28
|
+
activeFeedEntryId?: string;
|
|
23
29
|
};
|
|
24
30
|
type ActivityCommentsSidebarView = {
|
|
25
31
|
sidebar: ViewType.ACTIVITY;
|
|
@@ -28,7 +34,7 @@ type ActivityCommentsSidebarView = {
|
|
|
28
34
|
};
|
|
29
35
|
export type SidebarNavigation = {
|
|
30
36
|
sidebar: ViewType;
|
|
31
|
-
} | VersionSidebarView | ActivityCommentsSidebarView | ActivityAnnotationsSidebarView;
|
|
37
|
+
} | VersionSidebarView | MetadataSidebarView | ActivityCommentsSidebarView | ActivityAnnotationsSidebarView;
|
|
32
38
|
export type InternalSidebarNavigation = SidebarNavigation & {
|
|
33
39
|
open?: boolean;
|
|
34
40
|
};
|
package/i18n/bn-IN.js
CHANGED
|
@@ -612,8 +612,8 @@ export default {
|
|
|
612
612
|
"boxui.metadataInstanceEditor.cannotApplyCascadePolicyText": "এই মুহূর্তে কাসকেড নীতি কাস্টম মেটাডেটায় প্রযোজ্য হবে না।",
|
|
613
613
|
"boxui.metadataInstanceEditor.cascadePolicyLearnMore": "আরও জানুন",
|
|
614
614
|
"boxui.metadataInstanceEditor.cascadePolicyModeQuestion": "এই টেমপ্লেটটি এবং এর মান বিদ্যমান আইটেমগুলোতে প্রয়োগ করার সময় অসুবিধা হলে আপনি কী করতে চাইবেন? এটি একবার করতে হবে।",
|
|
615
|
-
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice": "
|
|
616
|
-
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "
|
|
615
|
+
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice": "এই ক্যাসকেড নীতি সম্পাদনা করা যাবে না। এটি সংশোধন করতে, বর্তমান নীতি নিষ্ক্রিয় করুন এবং তারপর একটি নতুন সেটআপ করতে এটি পুনরায় সক্রিয় করুন।",
|
|
616
|
+
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "নিষ্ক্রিয় ক্যাসকেড বিকল্পের তথ্য",
|
|
617
617
|
"boxui.metadataInstanceEditor.cascadePolicyOverwriteMode": "সমস্ত বিদ্যমান টেমপ্লেটের মান ওভাররাইট করুন",
|
|
618
618
|
"boxui.metadataInstanceEditor.cascadePolicySkipMode": "স্কিপ করে সমস্ত বিদ্যমান টেমপ্লেটের মান রাখুন",
|
|
619
619
|
"boxui.metadataInstanceEditor.customAdd": "যোগ করুন",
|
package/i18n/bn-IN.properties
CHANGED
|
@@ -1224,6 +1224,10 @@ boxui.metadataInstanceEditor.cannotApplyCascadePolicyText = এই মুহূ
|
|
|
1224
1224
|
boxui.metadataInstanceEditor.cascadePolicyLearnMore = আরও জানুন
|
|
1225
1225
|
# Tooltip text that asks the user what they want to do when applying cascading to their metadata policy
|
|
1226
1226
|
boxui.metadataInstanceEditor.cascadePolicyModeQuestion = এই টেমপ্লেটটি এবং এর মান বিদ্যমান আইটেমগুলোতে প্রয়োগ করার সময় অসুবিধা হলে আপনি কী করতে চাইবেন? এটি একবার করতে হবে।
|
|
1227
|
+
# Notice that explains that the cascade policy cannot be edited
|
|
1228
|
+
boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice = এই ক্যাসকেড নীতি সম্পাদনা করা যাবে না। এটি সংশোধন করতে, বর্তমান নীতি নিষ্ক্রিয় করুন এবং তারপর একটি নতুন সেটআপ করতে এটি পুনরায় সক্রিয় করুন।
|
|
1229
|
+
# Aria label for the disabled cascade options information icon
|
|
1230
|
+
boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel = নিষ্ক্রিয় ক্যাসকেড বিকল্পের তথ্য
|
|
1227
1231
|
# Label for radio button that selects overwrite mode for cascading policy
|
|
1228
1232
|
boxui.metadataInstanceEditor.cascadePolicyOverwriteMode = সমস্ত বিদ্যমান টেমপ্লেটের মান ওভাররাইট করুন
|
|
1229
1233
|
# Label for radio button that selects skip mode for cascading policy
|
|
@@ -1258,6 +1262,8 @@ boxui.metadataInstanceEditor.editTooltip = মেটাডেটা সম্প
|
|
|
1258
1262
|
boxui.metadataInstanceEditor.enableAIAutofill = Box AI অটোফিল
|
|
1259
1263
|
# Label for enable cascade policy toggle switch
|
|
1260
1264
|
boxui.metadataInstanceEditor.enableCascadePolicy = ক্যাসকেড নীতি সক্ষম করুন
|
|
1265
|
+
# Name of the enhanced AI agent
|
|
1266
|
+
boxui.metadataInstanceEditor.enhancedAgentName = Enhanced
|
|
1261
1267
|
# Message for users who may attempt to remove a custom metadata instance for a file. Also non-recoverable
|
|
1262
1268
|
boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm = আপনি কি এই কাস্টম মেটাডেটা এবং এর সমস্ত মান মুছতে চাওয়ার বিষয়ে নিশ্চিত?
|
|
1263
1269
|
# Message for users who may attempt to remove a metadata instance for a file, which is non-recoverable
|
|
@@ -1284,6 +1290,8 @@ boxui.metadataInstanceEditor.noMetadataAddTemplate = এই আইটেমে
|
|
|
1284
1290
|
boxui.metadataInstanceEditor.operationNotImmediate = এই ক্রিয়াকলাপটি সঙ্গে সঙ্গে ঘটবে না এবং এটি কিছু সময় নিতে পারে।
|
|
1285
1291
|
# Label to remove a template
|
|
1286
1292
|
boxui.metadataInstanceEditor.removeTemplate = অপসারণ করুন
|
|
1293
|
+
# Name of the standard AI agent
|
|
1294
|
+
boxui.metadataInstanceEditor.standardAgentName = Standard
|
|
1287
1295
|
# Label to add a template
|
|
1288
1296
|
boxui.metadataInstanceEditor.templateAdd = যোগ করুন
|
|
1289
1297
|
# Placeholder to search for all templates
|
package/i18n/da-DK.js
CHANGED
|
@@ -612,8 +612,8 @@ export default {
|
|
|
612
612
|
"boxui.metadataInstanceEditor.cannotApplyCascadePolicyText": "Cascade-politik kan ikke anvendes til brugerdefinerede metadata på dette tidspunkt.",
|
|
613
613
|
"boxui.metadataInstanceEditor.cascadePolicyLearnMore": "Få mere at vide",
|
|
614
614
|
"boxui.metadataInstanceEditor.cascadePolicyModeQuestion": "Hvad vil du gøre i tilfælde af konflikter ved anvendelse af denne skabelon og dens værdier på eksisterende elementer? Denne handling skal kun udføres én gang.",
|
|
615
|
-
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice": "
|
|
616
|
-
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "
|
|
615
|
+
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice": "Denne kaskadepolitik kan ikke redigeres. For at ændre dette, skal du deaktivere den aktuelle politik og derefter aktivere den igen for at oprette en ny.",
|
|
616
|
+
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "Oplysninger om deaktiverede kaskadeindstillinger",
|
|
617
617
|
"boxui.metadataInstanceEditor.cascadePolicyOverwriteMode": "Overskriv alle eksisterende skabelonværdier",
|
|
618
618
|
"boxui.metadataInstanceEditor.cascadePolicySkipMode": "Spring over, og behold alle eksisterende skabelonværdier",
|
|
619
619
|
"boxui.metadataInstanceEditor.customAdd": "Tilføj",
|
package/i18n/da-DK.properties
CHANGED
|
@@ -1224,6 +1224,10 @@ boxui.metadataInstanceEditor.cannotApplyCascadePolicyText = Cascade-politik kan
|
|
|
1224
1224
|
boxui.metadataInstanceEditor.cascadePolicyLearnMore = Få mere at vide
|
|
1225
1225
|
# Tooltip text that asks the user what they want to do when applying cascading to their metadata policy
|
|
1226
1226
|
boxui.metadataInstanceEditor.cascadePolicyModeQuestion = Hvad vil du gøre i tilfælde af konflikter ved anvendelse af denne skabelon og dens værdier på eksisterende elementer? Denne handling skal kun udføres én gang.
|
|
1227
|
+
# Notice that explains that the cascade policy cannot be edited
|
|
1228
|
+
boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice = Denne kaskadepolitik kan ikke redigeres. For at ændre dette, skal du deaktivere den aktuelle politik og derefter aktivere den igen for at oprette en ny.
|
|
1229
|
+
# Aria label for the disabled cascade options information icon
|
|
1230
|
+
boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel = Oplysninger om deaktiverede kaskadeindstillinger
|
|
1227
1231
|
# Label for radio button that selects overwrite mode for cascading policy
|
|
1228
1232
|
boxui.metadataInstanceEditor.cascadePolicyOverwriteMode = Overskriv alle eksisterende skabelonværdier
|
|
1229
1233
|
# Label for radio button that selects skip mode for cascading policy
|
|
@@ -1258,6 +1262,8 @@ boxui.metadataInstanceEditor.editTooltip = Rediger metadata
|
|
|
1258
1262
|
boxui.metadataInstanceEditor.enableAIAutofill = Box AI automatisk udfyldning
|
|
1259
1263
|
# Label for enable cascade policy toggle switch
|
|
1260
1264
|
boxui.metadataInstanceEditor.enableCascadePolicy = Aktivér cascade-politik
|
|
1265
|
+
# Name of the enhanced AI agent
|
|
1266
|
+
boxui.metadataInstanceEditor.enhancedAgentName = Enhanced
|
|
1261
1267
|
# Message for users who may attempt to remove a custom metadata instance for a file. Also non-recoverable
|
|
1262
1268
|
boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm = Er du sikker på, at du vil slette disse brugerdefinerede metadata og alle deres værdier fra denne fil?
|
|
1263
1269
|
# Message for users who may attempt to remove a metadata instance for a file, which is non-recoverable
|
|
@@ -1284,6 +1290,8 @@ boxui.metadataInstanceEditor.noMetadataAddTemplate = Klik på "Tilføj" øverst
|
|
|
1284
1290
|
boxui.metadataInstanceEditor.operationNotImmediate = Denne handling er ikke øjeblikkelig og kan tage et stykke tid.
|
|
1285
1291
|
# Label to remove a template
|
|
1286
1292
|
boxui.metadataInstanceEditor.removeTemplate = Fjern
|
|
1293
|
+
# Name of the standard AI agent
|
|
1294
|
+
boxui.metadataInstanceEditor.standardAgentName = Standard
|
|
1287
1295
|
# Label to add a template
|
|
1288
1296
|
boxui.metadataInstanceEditor.templateAdd = Tilføj
|
|
1289
1297
|
# Placeholder to search for all templates
|
package/i18n/de-DE.js
CHANGED
|
@@ -612,8 +612,8 @@ export default {
|
|
|
612
612
|
"boxui.metadataInstanceEditor.cannotApplyCascadePolicyText": "Kaskadenrichtlinie kann zu diesem Zeitpunkt nicht auf benutzerdefinierte Metadaten angewendet werden.",
|
|
613
613
|
"boxui.metadataInstanceEditor.cascadePolicyLearnMore": "Mehr erfahren",
|
|
614
614
|
"boxui.metadataInstanceEditor.cascadePolicyModeQuestion": "Wie möchten Sie vorgehen, wenn Konflikte bei der Anwendung dieser Vorlage und ihrer Werte auf vorhandene Elemente auftreten? Dies ist eine einmalige Aktion.",
|
|
615
|
-
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice": "
|
|
616
|
-
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "
|
|
615
|
+
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice": "Diese Kaskaden-Richtlinie kann nicht bearbeitet werden. Um die Richtlinie zu ändern, deaktivieren Sie die aktuelle Richtlinie und aktivieren Sie sie dann erneut, um eine neue Richtlinie einzurichten.",
|
|
616
|
+
"boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "Informationen zu deaktivierten Optionen in der Kaskade",
|
|
617
617
|
"boxui.metadataInstanceEditor.cascadePolicyOverwriteMode": "Alle vorhandenen Vorlagenwerte überschreiben",
|
|
618
618
|
"boxui.metadataInstanceEditor.cascadePolicySkipMode": "Alle vorhandenen Vorlagenwerte überspringen und behalten",
|
|
619
619
|
"boxui.metadataInstanceEditor.customAdd": "Hinzufügen",
|
package/i18n/de-DE.properties
CHANGED
|
@@ -1224,6 +1224,10 @@ boxui.metadataInstanceEditor.cannotApplyCascadePolicyText = Kaskadenrichtlinie k
|
|
|
1224
1224
|
boxui.metadataInstanceEditor.cascadePolicyLearnMore = Mehr erfahren
|
|
1225
1225
|
# Tooltip text that asks the user what they want to do when applying cascading to their metadata policy
|
|
1226
1226
|
boxui.metadataInstanceEditor.cascadePolicyModeQuestion = Wie möchten Sie vorgehen, wenn Konflikte bei der Anwendung dieser Vorlage und ihrer Werte auf vorhandene Elemente auftreten? Dies ist eine einmalige Aktion.
|
|
1227
|
+
# Notice that explains that the cascade policy cannot be edited
|
|
1228
|
+
boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice = Diese Kaskaden-Richtlinie kann nicht bearbeitet werden. Um die Richtlinie zu ändern, deaktivieren Sie die aktuelle Richtlinie und aktivieren Sie sie dann erneut, um eine neue Richtlinie einzurichten.
|
|
1229
|
+
# Aria label for the disabled cascade options information icon
|
|
1230
|
+
boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel = Informationen zu deaktivierten Optionen in der Kaskade
|
|
1227
1231
|
# Label for radio button that selects overwrite mode for cascading policy
|
|
1228
1232
|
boxui.metadataInstanceEditor.cascadePolicyOverwriteMode = Alle vorhandenen Vorlagenwerte überschreiben
|
|
1229
1233
|
# Label for radio button that selects skip mode for cascading policy
|
|
@@ -1258,6 +1262,8 @@ boxui.metadataInstanceEditor.editTooltip = Metadaten bearbeiten
|
|
|
1258
1262
|
boxui.metadataInstanceEditor.enableAIAutofill = Box AI automatischen Ausfüllen
|
|
1259
1263
|
# Label for enable cascade policy toggle switch
|
|
1260
1264
|
boxui.metadataInstanceEditor.enableCascadePolicy = Kaskadenrichtlinie aktivieren
|
|
1265
|
+
# Name of the enhanced AI agent
|
|
1266
|
+
boxui.metadataInstanceEditor.enhancedAgentName = Enhanced
|
|
1261
1267
|
# Message for users who may attempt to remove a custom metadata instance for a file. Also non-recoverable
|
|
1262
1268
|
boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm = Möchten Sie diese benutzerdefinierten Metadaten und ihre gesamten Werte aus dieser Datei wirklich löschen?
|
|
1263
1269
|
# Message for users who may attempt to remove a metadata instance for a file, which is non-recoverable
|
|
@@ -1284,6 +1290,8 @@ boxui.metadataInstanceEditor.noMetadataAddTemplate = Klicken Sie oben rechts auf
|
|
|
1284
1290
|
boxui.metadataInstanceEditor.operationNotImmediate = Dieser Vorgang wird nicht sofort ausgeführt und dauert möglicherweise eine Weile.
|
|
1285
1291
|
# Label to remove a template
|
|
1286
1292
|
boxui.metadataInstanceEditor.removeTemplate = Entfernen
|
|
1293
|
+
# Name of the standard AI agent
|
|
1294
|
+
boxui.metadataInstanceEditor.standardAgentName = Standard
|
|
1287
1295
|
# Label to add a template
|
|
1288
1296
|
boxui.metadataInstanceEditor.templateAdd = Hinzufügen
|
|
1289
1297
|
# Placeholder to search for all templates
|
package/i18n/en-AU.properties
CHANGED
|
@@ -1224,6 +1224,10 @@ boxui.metadataInstanceEditor.cannotApplyCascadePolicyText = Cascade policy canno
|
|
|
1224
1224
|
boxui.metadataInstanceEditor.cascadePolicyLearnMore = Learn more
|
|
1225
1225
|
# Tooltip text that asks the user what they want to do when applying cascading to their metadata policy
|
|
1226
1226
|
boxui.metadataInstanceEditor.cascadePolicyModeQuestion = In the event of conflicts when applying this template and its values to existing items, what would you prefer to do? This is a one-time action.
|
|
1227
|
+
# Notice that explains that the cascade policy cannot be edited
|
|
1228
|
+
boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice = This cascade policy cannot be edited. To modify it, deactivate the current policy and then re-enable it to set up a new one.
|
|
1229
|
+
# Aria label for the disabled cascade options information icon
|
|
1230
|
+
boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel = Disabled cascade options information
|
|
1227
1231
|
# Label for radio button that selects overwrite mode for cascading policy
|
|
1228
1232
|
boxui.metadataInstanceEditor.cascadePolicyOverwriteMode = Overwrite all existing template values
|
|
1229
1233
|
# Label for radio button that selects skip mode for cascading policy
|
|
@@ -1258,6 +1262,8 @@ boxui.metadataInstanceEditor.editTooltip = Edit metadata
|
|
|
1258
1262
|
boxui.metadataInstanceEditor.enableAIAutofill = Box AI Autofill
|
|
1259
1263
|
# Label for enable cascade policy toggle switch
|
|
1260
1264
|
boxui.metadataInstanceEditor.enableCascadePolicy = Enable Cascade Policy
|
|
1265
|
+
# Name of the enhanced AI agent
|
|
1266
|
+
boxui.metadataInstanceEditor.enhancedAgentName = Enhanced
|
|
1261
1267
|
# Message for users who may attempt to remove a custom metadata instance for a file. Also non-recoverable
|
|
1262
1268
|
boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm = Are you sure you want to delete this custom metadata and all of its values from this file?
|
|
1263
1269
|
# Message for users who may attempt to remove a metadata instance for a file, which is non-recoverable
|
|
@@ -1284,6 +1290,8 @@ boxui.metadataInstanceEditor.noMetadataAddTemplate = Click 'Add' in the top righ
|
|
|
1284
1290
|
boxui.metadataInstanceEditor.operationNotImmediate = This operation is not immediate and may take some time.
|
|
1285
1291
|
# Label to remove a template
|
|
1286
1292
|
boxui.metadataInstanceEditor.removeTemplate = Remove
|
|
1293
|
+
# Name of the standard AI agent
|
|
1294
|
+
boxui.metadataInstanceEditor.standardAgentName = Standard
|
|
1287
1295
|
# Label to add a template
|
|
1288
1296
|
boxui.metadataInstanceEditor.templateAdd = Add
|
|
1289
1297
|
# Placeholder to search for all templates
|