import React, {
useCallback, useEffect, useMemo, useState,
} from 'react';
import PropTypes from 'prop-types';
import { TabContent, TabPane } from 'reactstrap';
import loggerFactory from '~/utils/logger';
import { withUnstatedContainers } from '../../UnstatedUtils';
import { toastError } from '~/client/util/apiNotification';
import { toArrayIfNot } from '~/utils/array-utils';
import { withLoadingSppiner } from '../../SuspenseUtils';
import AdminNotificationContainer from '~/client/services/AdminNotificationContainer';
import { CustomNavTab } from '../../CustomNavigation/CustomNav';
import UserTriggerNotification from './UserTriggerNotification';
import GlobalNotification from './GlobalNotification';
const logger = loggerFactory('growi:NotificationSetting');
let retrieveErrors = null;
function NotificationSetting(props) {
const { adminNotificationContainer } = props;
const [activeTab, setActiveTab] = useState('user_trigger_notification');
const [activeComponents, setActiveComponents] = useState(new Set(['user_trigger_notification']));
const switchActiveTab = (selectedTab) => {
setActiveTab(selectedTab);
setActiveComponents(activeComponents.add(selectedTab));
};
const fetchData = useCallback(async() => {
try {
await adminNotificationContainer.retrieveNotificationData();
}
catch (err) {
const errs = toArrayIfNot(err);
toastError(errs);
logger.error(errs);
retrieveErrors = errs;
}
}, [adminNotificationContainer]);
useEffect(() => {
fetchData();
}, [fetchData]);
const navTabMapping = useMemo(() => {
return {
user_trigger_notification: {
Icon: () => ,
i18n: 'User trigger notification',
index: 0,
},
global_notification: {
Icon: () => ,
i18n: 'Global notification',
index: 1,
},
};
}, []);
return (
<>
{activeComponents.has('user_trigger_notification') && }
{activeComponents.has('global_notification') && }
>
);
}
const NotificationSettingWithUnstatedContainer = withUnstatedContainers(withLoadingSppiner(NotificationSetting), [AdminNotificationContainer]);
NotificationSetting.propTypes = {
adminNotificationContainer: PropTypes.instanceOf(AdminNotificationContainer).isRequired,
};
export default NotificationSettingWithUnstatedContainer;