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.
Files changed (70) hide show
  1. package/dist/explorer.js +1 -1
  2. package/dist/preview.js +1 -1
  3. package/dist/sidebar.js +1 -1
  4. package/es/elements/common/types/SidebarNavigation.js +4 -2
  5. package/es/elements/common/types/SidebarNavigation.js.flow +7 -4
  6. package/es/elements/common/types/SidebarNavigation.js.map +1 -1
  7. package/es/elements/content-preview/PreviewNavigation.js +65 -2
  8. package/es/elements/content-preview/PreviewNavigation.js.flow +86 -2
  9. package/es/elements/content-preview/PreviewNavigation.js.map +1 -1
  10. package/es/elements/content-sidebar/ActivitySidebar.js +39 -7
  11. package/es/elements/content-sidebar/ActivitySidebar.js.flow +42 -6
  12. package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
  13. package/es/src/elements/common/types/SidebarNavigation.d.ts +10 -4
  14. package/i18n/bn-IN.js +2 -2
  15. package/i18n/bn-IN.properties +8 -0
  16. package/i18n/da-DK.js +2 -2
  17. package/i18n/da-DK.properties +8 -0
  18. package/i18n/de-DE.js +2 -2
  19. package/i18n/de-DE.properties +8 -0
  20. package/i18n/en-AU.properties +8 -0
  21. package/i18n/en-CA.properties +8 -0
  22. package/i18n/en-GB.properties +8 -0
  23. package/i18n/en-x-pseudo.js +1020 -1020
  24. package/i18n/en-x-pseudo.properties +1024 -1016
  25. package/i18n/es-419.js +2 -2
  26. package/i18n/es-419.properties +8 -0
  27. package/i18n/es-ES.js +2 -2
  28. package/i18n/es-ES.properties +8 -0
  29. package/i18n/fi-FI.js +2 -2
  30. package/i18n/fi-FI.properties +8 -0
  31. package/i18n/fr-CA.js +2 -2
  32. package/i18n/fr-CA.properties +8 -0
  33. package/i18n/fr-FR.js +2 -2
  34. package/i18n/fr-FR.properties +8 -0
  35. package/i18n/hi-IN.js +2 -2
  36. package/i18n/hi-IN.properties +8 -0
  37. package/i18n/it-IT.js +2 -2
  38. package/i18n/it-IT.properties +8 -0
  39. package/i18n/ja-JP.properties +8 -0
  40. package/i18n/ko-KR.js +2 -2
  41. package/i18n/ko-KR.properties +8 -0
  42. package/i18n/nb-NO.js +2 -2
  43. package/i18n/nb-NO.properties +8 -0
  44. package/i18n/nl-NL.js +2 -2
  45. package/i18n/nl-NL.properties +8 -0
  46. package/i18n/pl-PL.js +2 -2
  47. package/i18n/pl-PL.properties +8 -0
  48. package/i18n/pt-BR.js +2 -2
  49. package/i18n/pt-BR.properties +8 -0
  50. package/i18n/ru-RU.js +2 -2
  51. package/i18n/ru-RU.properties +8 -0
  52. package/i18n/sv-SE.js +2 -2
  53. package/i18n/sv-SE.properties +8 -0
  54. package/i18n/tr-TR.js +2 -2
  55. package/i18n/tr-TR.properties +8 -0
  56. package/i18n/zh-CN.js +2 -2
  57. package/i18n/zh-CN.properties +8 -0
  58. package/i18n/zh-TW.js +2 -2
  59. package/i18n/zh-TW.properties +8 -0
  60. package/package.json +1 -1
  61. package/src/elements/common/types/SidebarNavigation.js.flow +7 -4
  62. package/src/elements/common/types/SidebarNavigation.ts +11 -3
  63. package/src/elements/content-preview/PreviewNavigation.js +86 -2
  64. package/src/elements/content-preview/__tests__/PreviewNavigation.test.js +202 -62
  65. package/src/elements/content-sidebar/ActivitySidebar.js +42 -6
  66. package/src/elements/content-sidebar/__tests__/ActivitySidebar.rtl.test.js +521 -0
  67. package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +1 -123
  68. package/src/elements/content-sidebar/__tests__/AddTaskButton.test.js +6 -5
  69. package/src/elements/content-sidebar/versions/__tests__/StaticVersionSidebar.test.js +3 -5
  70. 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: string;
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": "This cascade policy cannot be edited. To modify it, deactivate the current policy and then re-enable it to set up a new one.",
616
- "boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "Disabled cascade options information",
615
+ "boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNotice": "এই ক্যাসকেড নীতি সম্পাদনা করা যাবে না। এটি সংশোধন করতে, বর্তমান নীতি নিষ্ক্রিয় করুন এবং তারপর একটি নতুন সেটআপ করতে এটি পুনরায় সক্রিয় করুন।",
616
+ "boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "নিষ্ক্রিয় ক্যাসকেড বিকল্পের তথ্য",
617
617
  "boxui.metadataInstanceEditor.cascadePolicyOverwriteMode": "সমস্ত বিদ্যমান টেমপ্লেটের মান ওভাররাইট করুন",
618
618
  "boxui.metadataInstanceEditor.cascadePolicySkipMode": "স্কিপ করে সমস্ত বিদ্যমান টেমপ্লেটের মান রাখুন",
619
619
  "boxui.metadataInstanceEditor.customAdd": "যোগ করুন",
@@ -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": "This cascade policy cannot be edited. To modify it, deactivate the current policy and then re-enable it to set up a new one.",
616
- "boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "Disabled cascade options information",
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",
@@ -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": "This cascade policy cannot be edited. To modify it, deactivate the current policy and then re-enable it to set up a new one.",
616
- "boxui.metadataInstanceEditor.cascadePolicyOptionsDisabledNoticeIconAriaLabel": "Disabled cascade options information",
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",
@@ -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
@@ -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