Repository URL to install this package:
|
Version:
3.12.20 ▾
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import { useEffect, useState } from 'react';
import { useDispatch } from 'react-redux';
import handlePromise from '@filerobot/utils/lib/handlePromise';
import Styled from './ActivityTab.styled';
import { groupObjectsByYear } from './ActivityTab.utils';
import ActivityTabSkeleton from './ActivityTabSkeleton';
import YearActivities from './YearActivities';
import { getFileActivityHistory } from './ActivityTab.thunks';
import { jsx as _jsx } from "react/jsx-runtime";
import { Fragment as _Fragment } from "react/jsx-runtime";
var _isUnMounting = false;
var ActivityTab = function ActivityTab(_ref) {
var originalFile = _ref.originalFile,
file = _ref.previewedFile,
i18n = _ref.i18n;
var dispatch = useDispatch();
var _useState = useState([]),
_useState2 = _slicedToArray(_useState, 2),
toggledYearsAccordions = _useState2[0],
setToggledYearsAccordions = _useState2[1];
var _useState3 = useState([]),
_useState4 = _slicedToArray(_useState3, 2),
activities = _useState4[0],
setActivities = _useState4[1];
var _useState5 = useState(false),
_useState6 = _slicedToArray(_useState5, 2),
isLoading = _useState6[0],
setIsLoading = _useState6[1];
// setting file uuid as user uuid to match the change object coming from BE
var originalCreatedAction = {
action: 'H_CREATED',
changed_at: file.created_at,
file: {
uuid: file.uuid
},
user: {
uuid: file.uuid
},
props: {
name: file.name
}
};
useEffect(function () {
_isUnMounting = false;
setIsLoading(true);
setToggledYearsAccordions([]);
var promise;
if (originalFile.uuid) {
// check if we have file uuid first to avoind un necessary requests
promise = handlePromise(dispatch(getFileActivityHistory(originalFile.uuid)), function (changes) {
if (_isUnMounting) return;
setActivities(groupObjectsByYear([].concat(_toConsumableArray(changes), [originalCreatedAction])));
}, undefined, stopLoading);
}
return function () {
_isUnMounting = true;
if (promise) {
promise.abort();
}
};
}, [originalFile]);
// if activities array return empty from backend, we shall add 'file created object' else
// if current year exists in the array, toggle the activity with current year else toggle the only exists activity
useEffect(function () {
if (activities.length === 0) {
setActivities(groupObjectsByYear([originalCreatedAction]));
} else {
activities.forEach(function (activity, index) {
if (activity.year === new Date().getFullYear().toString()) {
toggledYearsAccordions.push(index);
} else if (activities.length === 1) {
toggledYearsAccordions.push(index);
}
});
}
}, [activities]);
var handleToggledYearsAccordions = function handleToggledYearsAccordions(item) {
if (toggledYearsAccordions.includes(item)) {
setToggledYearsAccordions(toggledYearsAccordions.filter(function (toggledAccordion) {
return toggledAccordion !== item;
}));
} else {
toggledYearsAccordions.push(item);
setToggledYearsAccordions(_toConsumableArray(toggledYearsAccordions));
}
};
var getActivityAccordionLabel = function getActivityAccordionLabel(activity) {
var _ref2 = activity || {},
activityYear = _ref2.year,
changesGroups = _ref2.changesGroups;
var changesCount = changesGroups === null || changesGroups === void 0 ? void 0 : changesGroups.length;
var currentYear = new Date().getFullYear().toString();
if (currentYear === activityYear) {
return i18n('activityTabAccordionActivityTitle', {
changesCount: changesCount
});
}
return i18n('activityTabAccordionYearTitle', {
activityYear: activityYear,
changesCount: changesCount
});
};
var stopLoading = function stopLoading() {
if (_isUnMounting) return;
setIsLoading(false);
};
if (isLoading) {
return /*#__PURE__*/_jsx(ActivityTabSkeleton, {});
}
return /*#__PURE__*/_jsx(_Fragment, {
children: activities.map(function (activity, index) {
return /*#__PURE__*/_jsx(Styled.YearSectionAccordion, {
expanded: toggledYearsAccordions.includes(index),
label: getActivityAccordionLabel(activity),
onChange: function onChange() {
return handleToggledYearsAccordions(index);
},
children: /*#__PURE__*/_jsx(YearActivities, {
changes: activity.changesGroups
}, index)
}, activity.year);
})
});
};
export default ActivityTab;