| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import { useCallback, useState } from 'react'
- import { Trans, useTranslation } from 'react-i18next'
- import { postJSON } from '../../../../infrastructure/fetch-json'
- import { useSubscriptionDashboardContext } from '../../context/subscription-dashboard-context'
- import { Institution } from './managed-institutions'
- import { RowLink } from './row-link'
- type ManagedInstitutionProps = {
- institution: Institution
- }
- export default function ManagedInstitution({
- institution,
- }: ManagedInstitutionProps) {
- const { t } = useTranslation()
- const [subscriptionChanging, setSubscriptionChanging] = useState(false)
- const { updateManagedInstitution } = useSubscriptionDashboardContext()
- const changeInstitutionalEmailSubscription = useCallback(
- (e, institutionId: Institution['v1Id']) => {
- const updateSubscription = async (institutionId: Institution['v1Id']) => {
- setSubscriptionChanging(true)
- try {
- const data = await postJSON<string[]>(
- `/institutions/${institutionId}/emailSubscription`
- )
- institution.metricsEmail.optedOutUserIds = data
- updateManagedInstitution(institution)
- } catch (error) {
- console.error(error)
- }
- setSubscriptionChanging(false)
- }
- e.preventDefault()
- updateSubscription(institutionId)
- },
- [institution, updateManagedInstitution]
- )
- return (
- <div>
- <p>
- <Trans
- i18nKey="you_are_a_manager_of_commons_at_institution_x"
- components={[<strong />]} // eslint-disable-line react/jsx-key
- values={{
- institutionName: institution.name || '',
- }}
- />
- </p>
- <RowLink
- href={`/metrics/institutions/${institution.v1Id}`}
- heading={t('view_metrics')}
- subtext={t('view_metrics_commons_subtext')}
- icon="insights"
- />
- <RowLink
- href={`/institutions/${institution.v1Id}/hub`}
- heading={t('view_hub')}
- subtext={t('view_hub_subtext')}
- icon="account_circle"
- />
- <RowLink
- href={`/manage/institutions/${institution.v1Id}/managers`}
- heading={t('manage_institution_managers')}
- subtext={t('manage_managers_subtext')}
- icon="manage_accounts"
- />
- <div>
- <p>
- <span>Monthly metrics emails: </span>
- {subscriptionChanging ? (
- <i className="fa fa-spin fa-refresh" />
- ) : (
- <button
- className="btn-inline-link"
- style={{ border: 0 }}
- onClick={e =>
- changeInstitutionalEmailSubscription(e, institution.v1Id)
- }
- >
- {institution.metricsEmail.optedOutUserIds.includes(
- window.user_id!
- )
- ? t('subscribe')
- : t('unsubscribe')}
- </button>
- )}
- </p>
- </div>
- <hr />
- </div>
- )
- }
|