diff --git a/studio/components/interfaces/Storage/CreateBucketModal.tsx b/studio/components/interfaces/Storage/CreateBucketModal.tsx index 6ca95df56e7..9768b69c866 100644 --- a/studio/components/interfaces/Storage/CreateBucketModal.tsx +++ b/studio/components/interfaces/Storage/CreateBucketModal.tsx @@ -67,6 +67,10 @@ const CreateBucketModal = ({ visible, onClose }: CreateBucketModalProps) => { if (!values.name) { errors.name = 'Please provide a name for your bucket' } + if (values.name && values.name.endsWith(' ')) { + errors.name = 'The name of the bucket cannot end with a whitespace' + } + if (values.has_file_size_limit && values.formatted_size_limit < 0) { errors.formatted_size_limit = 'File size upload limit has to be at least 0' } diff --git a/studio/components/layouts/StorageLayout/BucketRow.tsx b/studio/components/layouts/StorageLayout/BucketRow.tsx index c9309c53574..2fc2f3c8dff 100644 --- a/studio/components/layouts/StorageLayout/BucketRow.tsx +++ b/studio/components/layouts/StorageLayout/BucketRow.tsx @@ -23,8 +23,8 @@ export interface BucketRowProps { bucket: Bucket projectRef?: string isSelected: boolean - onSelectDeleteBucket: (bucket: any) => void - onSelectEditBucket: (bucket: any) => void + onSelectDeleteBucket: (bucket: Bucket) => void + onSelectEditBucket: (bucket: Bucket) => void } const BucketRow = ({ @@ -44,7 +44,8 @@ const BucketRow = ({ isSelected && 'text-foreground bg-scale-300' )} > - + {/* Even though we trim whitespaces from bucket names, there may be some existing buckets with trailing whitespaces. */} +

{

)} - {buckets.map((bucket: any, idx: number) => { + {buckets.map((bucket, idx: number) => { const isSelected = bucketId === bucket.id return ( { const handlePost = async (req: NextApiRequest, res: NextApiResponse) => { const { id, public: isPublicBucket } = req.body - // To validate bucket name, can be removed once the issue is fixed in supabase lib - const regex = /^[a-z0-9.-]+$/ - if (!regex.test(id)) { - return res.status(400).json({ error: { message: 'Bucket name invalid' } }) - } - // Bucket name validation ends here - const { data, error } = await supabase.storage.createBucket(id, { public: isPublicBucket }) if (error) { return res.status(400).json({ error: { message: error.message } })