All files / libs/lti/views/participant-enrollment/src/lib/enrollment-content/widgets/document EnrollmentEmbeddedDocumentWidgetPreview.tsx

0% Statements 0/37
0% Branches 0/1
0% Functions 0/1
0% Lines 0/37

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38                                                                           
import { memo } from 'react';
import { FormattedMessage } from 'react-intl';

import { useStreamPlanDocument } from '@amalia/lti/state';
import { type LtiPlan, type LtiPlanDocument } from '@amalia/lti/types';

import { EnrollmentEmbeddedDocumentWidgetPresentation } from './EnrollmentEmbeddedDocumentWidgetPresentation';

type EnrollmentEmbeddedDocumentWidgetPreviewProps = {
  readonly document?: Partial<Pick<LtiPlanDocument, 'id'>> &
    Pick<LtiPlanDocument, 'isSignatureRequired' | 'mimeType' | 'name'>;
  readonly planId: LtiPlan['id'];
};

export const EnrollmentEmbeddedDocumentWidgetPreview = memo(function EnrollmentEmbeddedDocumentWidgetPreview({
  document,
  planId,
}: EnrollmentEmbeddedDocumentWidgetPreviewProps) {
  const hasDocument = document !== undefined;

  const { data: documentBlob, isPending } = useStreamPlanDocument(planId, document?.id, !!document);

  const isDocumentLoading = hasDocument ? isPending : false;

  return (
    <EnrollmentEmbeddedDocumentWidgetPresentation
      isSigningDisabled
      documentBlob={documentBlob}
      documentName={document?.name}
      isLoading={isDocumentLoading}
      isSignatureRequired={document?.isSignatureRequired ?? false}
      tooltipContent={
        <FormattedMessage defaultMessage="Preview mode: Document signing will be available when participants view the plan" />
      }
    />
  );
});