/********************************************************************************************************************* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * * * Permission is hereby granted, free of charge, to any person obtaining a copy of * * this software and associated documentation files (the "Software"), to deal in * * the Software without restriction, including without limitation the rights to * * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * * the Software, and to permit persons to whom the Software is furnished to do so. * * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * *********************************************************************************************************************/ import { FunctionComponent, useCallback, useState } from 'react' import { Button, Column, ColumnLayout, Container, Inline, KeyValuePair, Link, Stack, DeleteConfirmationDialog, Text, } from 'aws-northstar' import { useHistory, useParams } from 'react-router-dom' import NotFound from '../../../components/NotFound' import { useAssetContext } from '../../../contexts/AssetContext' import { appvars } from '../../../config' import { downloadFile } from '../../../services/download' export const AssetDetails: FunctionComponent = () => { const history = useHistory() const { assetId } = useParams<{ assetId: string }>() const [{ assets }, { deleteAsset }] = useAssetContext() const currentItem = assets.find((_a) => _a.Id === assetId) const [showDeleteModal, setShowDeleteModal] = useState(false) const onDeleteClick = useCallback(async () => { console.debug(`[AssetDetails] :: onDeleteClick :: selected item: ${JSON.stringify(currentItem)}`) setShowDeleteModal(true) }, [currentItem]) const onEditClick = useCallback(() => { if (currentItem == null) { throw new Error('AssetData is null') } history.push(`/${appvars.URL.ASSET}/${currentItem.Id}/edit`) }, [currentItem, history]) const proceedWithDelete = useCallback(async () => { if (currentItem == null) { throw new Error('AssetData is null') } await deleteAsset(currentItem.Id) history.push(`/${appvars.URL.ASSET}`) }, [deleteAsset, history, currentItem]) const downloadCsv = useCallback(() => { if (currentItem == null) { return } downloadFile('csv', currentItem.ticker) }, [currentItem]) if (currentItem == null) { return } const actionGroup = ( ) return ( <> setShowDeleteModal(false)} onDeleteClicked={proceedWithDelete} > <> Are you sure you want to delete {currentItem.ticker} asset?
This will remove all related data to this asset!
Download ) : ( '-' ) } /> ) }