import { useEffect } from 'react';
import { connect, ConnectedProps } from 'react-redux';
import { dateTimeFormat } from '@grafana/data';
import { LinkButton, Spinner, IconButton } from '@grafana/ui';
import { Page } from 'app/core/components/Page/Page';
import { contextSrv } from 'app/core/core';
import { Trans, t } from 'app/core/internationalization';
import { AccessControlAction, StoreState } from 'app/types';
import { loadBundles, removeBundle, checkBundles } from './state/actions';
const NewBundleButton = (
New support bundle
);
const mapStateToProps = (state: StoreState) => {
return {
supportBundles: state.supportBundles.supportBundles,
isLoading: state.supportBundles.isLoading,
};
};
const mapDispatchToProps = {
loadBundles,
removeBundle,
checkBundles,
};
const connector = connect(mapStateToProps, mapDispatchToProps);
type Props = ConnectedProps;
const SupportBundlesUnconnected = ({ supportBundles, isLoading, loadBundles, removeBundle, checkBundles }: Props) => {
const isPending = supportBundles.some((b) => b.state === 'pending');
useEffect(() => {
loadBundles();
}, [loadBundles]);
useEffect(() => {
if (isPending) {
checkBundles();
}
});
const hasAccess = contextSrv.hasPermission(AccessControlAction.ActionSupportBundlesCreate);
const hasDeleteAccess = contextSrv.hasPermission(AccessControlAction.ActionSupportBundlesDelete);
const actions = hasAccess ? NewBundleButton : undefined;
const subTitle = (
Support bundles allow you to easily collect and share Grafana logs, configuration, and data with the Grafana
Labs team.
);
return (
Created on
|
Requested by
|
Expires
|
|
|
|
{supportBundles?.map((bundle) => (
{dateTimeFormat(bundle.createdAt * 1000)} |
{bundle.creator} |
{dateTimeFormat(bundle.expiresAt * 1000)} |
{bundle.state === 'pending' && } |
Download
|
{hasDeleteAccess && (
removeBundle(bundle.uid)}
name="trash-alt"
variant="destructive"
tooltip={t('support-bundles.support-bundles-unconnected.tooltip-remove-bundle', 'Remove bundle')}
/>
)}
|
))}
);
};
export default connector(SupportBundlesUnconnected);