// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import { RootState } from 'store/store'; import { connect } from 'react-redux'; import { Dispatch } from 'redux'; import { ApiClientAuthorization } from 'models/api-client-authorization'; import { filterResources } from 'store/resources/resources'; import { ResourceKind } from 'models/resource'; import { SharingURLsComponent, SharingURLsComponentActionProps, SharingURLsComponentDataProps } from './sharing-urls-component'; import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions'; import { deleteSharingToken } from 'store/sharing-dialog/sharing-dialog-actions'; const mapStateToProps = (state: RootState, ownProps: { uuid: string }): SharingURLsComponentDataProps => { const sharingTokens = filterResources( (resource: ApiClientAuthorization) => resource.kind === ResourceKind.API_CLIENT_AUTHORIZATION && resource.scopes.includes(`GET /arvados/v1/collections/${ownProps.uuid}`) && resource.scopes.includes(`GET /arvados/v1/collections/${ownProps.uuid}/`) && resource.scopes.includes('GET /arvados/v1/keep_services/accessible') )(state.resources) as ApiClientAuthorization[]; const sharingURLsPrefix = state.auth.config.keepWebInlineServiceUrl; return { collectionUuid: ownProps.uuid, sharingTokens, sharingURLsPrefix, } } const mapDispatchToProps = (dispatch: Dispatch): SharingURLsComponentActionProps => ({ onDeleteSharingToken(uuid: string) { dispatch(deleteSharingToken(uuid)); }, onCopy(message: string) { dispatch(snackbarActions.OPEN_SNACKBAR({ message, hideDuration: 2000, kind: SnackbarKind.SUCCESS })); }, }) export const SharingURLsContent = connect(mapStateToProps, mapDispatchToProps)(SharingURLsComponent)