From c4800f74b90687f9f0d10e96bc2510f4cbbb5d44 Mon Sep 17 00:00:00 2001
From: David Nguyen
Date: Thu, 28 Dec 2023 20:07:29 +1100
Subject: [PATCH] feat: update disabled dropzone text (#787)
Update the dropzone so it will display the relevant disabled text based
on the reason it is disabled.
---
.../app/(dashboard)/documents/upload-document.tsx | 13 ++++++++++++-
packages/ui/primitives/document-dropzone.tsx | 6 +++++-
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/apps/web/src/app/(dashboard)/documents/upload-document.tsx b/apps/web/src/app/(dashboard)/documents/upload-document.tsx
index 04ba990d5..65b95f9ec 100644
--- a/apps/web/src/app/(dashboard)/documents/upload-document.tsx
+++ b/apps/web/src/app/(dashboard)/documents/upload-document.tsx
@@ -1,6 +1,6 @@
'use client';
-import { useState } from 'react';
+import { useMemo, useState } from 'react';
import Link from 'next/link';
import { useRouter } from 'next/navigation';
@@ -36,6 +36,16 @@ export const UploadDocument = ({ className }: UploadDocumentProps) => {
const { mutateAsync: createDocument } = trpc.document.createDocument.useMutation();
+ const disabledMessage = useMemo(() => {
+ if (remaining.documents === 0) {
+ return 'You have reached your document limit.';
+ }
+
+ if (!session?.user.emailVerified) {
+ return 'Verify your email to upload documents.';
+ }
+ }, [remaining.documents, session?.user.emailVerified]);
+
const onFileDrop = async (file: File) => {
try {
setIsLoading(true);
@@ -91,6 +101,7 @@ export const UploadDocument = ({ className }: UploadDocumentProps) => {
diff --git a/packages/ui/primitives/document-dropzone.tsx b/packages/ui/primitives/document-dropzone.tsx
index 8ba22109a..21337956d 100644
--- a/packages/ui/primitives/document-dropzone.tsx
+++ b/packages/ui/primitives/document-dropzone.tsx
@@ -87,6 +87,7 @@ const DocumentDescription = {
export type DocumentDropzoneProps = {
className?: string;
disabled?: boolean;
+ disabledMessage?: string;
onDrop?: (_file: File) => void | Promise;
type?: 'document' | 'template';
[key: string]: unknown;
@@ -96,6 +97,7 @@ export const DocumentDropzone = ({
className,
onDrop,
disabled,
+ disabledMessage = 'You cannot upload documents at this time.',
type = 'document',
...props
}: DocumentDropzoneProps) => {
@@ -172,7 +174,9 @@ export const DocumentDropzone = ({
{DocumentDescription[type].headline}
- Drag & drop your document here.
+
+ {disabled ? disabledMessage : 'Drag & drop your document here.'}
+