@stoker-platform/web-app 0.5.115 → 0.5.117

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @stoker-platform/web-app
2
2
 
3
+ ## 0.5.117
4
+
5
+ ### Patch Changes
6
+
7
+ - feat: re-enable parallel file uploads
8
+
9
+ ## 0.5.116
10
+
11
+ ### Patch Changes
12
+
13
+ - fix: prevent file thumbnail layout shift
14
+
3
15
  ## 0.5.115
4
16
 
5
17
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stoker-platform/web-app",
3
- "version": "0.5.115",
3
+ "version": "0.5.117",
4
4
  "type": "module",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "scripts": {
package/src/Files.tsx CHANGED
@@ -138,14 +138,16 @@ const FileImageThumbnail = ({ storage, fullPath, fileName, pathPrefix }: FileIma
138
138
  return <File className="h-5 w-5 shrink-0 text-gray-500" aria-hidden />
139
139
  }
140
140
  return (
141
- <img
142
- src={url}
143
- alt={`Thumbnail for ${fileName}`}
144
- className="max-h-12 w-12 shrink-0 rounded-md object-contain"
145
- loading="lazy"
146
- decoding="async"
147
- onError={() => setPhase("fallback")}
148
- />
141
+ <div className="h-12 w-12 shrink-0 rounded-md flex items-center justify-center">
142
+ <img
143
+ src={url}
144
+ alt={`Thumbnail for ${fileName}`}
145
+ className="rounded-md max-h-12 max-w-12 object-contain"
146
+ loading="lazy"
147
+ decoding="async"
148
+ onError={() => setPhase("fallback")}
149
+ />
150
+ </div>
149
151
  )
150
152
  }
151
153
 
@@ -379,71 +381,65 @@ export const RecordFiles = ({ collection, record }: FilesProps) => {
379
381
 
380
382
  const uploadTask = uploadBytesResumable(storageRef, uploadFile, metadata)
381
383
 
382
- await new Promise<void>((resolve) => {
383
- uploadTask.on(
384
- "state_changed",
385
- (snapshot) => {
386
- const progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100
387
- setUploadProgress((prev) =>
388
- prev.map((item) => (item.file === uploadFile ? { ...item, progress } : item)),
389
- )
390
- },
391
- (error) => {
392
- void runHooks("postFileAddError", globalConfig, customization, {
393
- record,
394
- fullPath: filePath,
395
- filename,
396
- permissions: {
397
- read: metadata.customMetadata.read,
398
- update: metadata.customMetadata.update,
399
- delete: metadata.customMetadata.delete,
400
- },
401
- error,
402
- }).catch(() => {})
403
- setUploadProgress((prev) =>
404
- prev.map((item) =>
405
- item.file === uploadFile
406
- ? { ...item, status: "error", error: error.message }
407
- : item,
408
- ),
409
- )
410
- console.error(error.message)
411
- toast({
412
- title: "Upload failed",
413
- description: `Failed to upload ${filename}`,
414
- variant: "destructive",
415
- })
416
- resolve()
417
- },
418
- async () => {
419
- setUploadProgress((prev) =>
420
- prev.map((item) =>
421
- item.file === uploadFile
422
- ? { ...item, status: "completed", completedAt: Date.now() }
423
- : item,
424
- ),
425
- )
426
- toast({
427
- title: "Upload successful",
428
- description: `${filename} uploaded successfully`,
429
- })
430
-
431
- await runHooks("postFileAdd", globalConfig, customization, {
432
- record,
433
- fullPath: filePath,
434
- filename,
435
- permissions: {
436
- read: metadata.customMetadata.read,
437
- update: metadata.customMetadata.update,
438
- delete: metadata.customMetadata.delete,
439
- },
440
- }).catch(() => {})
441
-
442
- loadDirectory(currentPath)
443
- resolve()
444
- },
445
- )
446
- })
384
+ uploadTask.on(
385
+ "state_changed",
386
+ (snapshot) => {
387
+ const progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100
388
+ setUploadProgress((prev) =>
389
+ prev.map((item) => (item.file === uploadFile ? { ...item, progress } : item)),
390
+ )
391
+ },
392
+ (error) => {
393
+ void runHooks("postFileAddError", globalConfig, customization, {
394
+ record,
395
+ fullPath: filePath,
396
+ filename,
397
+ permissions: {
398
+ read: metadata.customMetadata.read,
399
+ update: metadata.customMetadata.update,
400
+ delete: metadata.customMetadata.delete,
401
+ },
402
+ error,
403
+ }).catch(() => {})
404
+ setUploadProgress((prev) =>
405
+ prev.map((item) =>
406
+ item.file === uploadFile ? { ...item, status: "error", error: error.message } : item,
407
+ ),
408
+ )
409
+ console.error(error.message)
410
+ toast({
411
+ title: "Upload failed",
412
+ description: `Failed to upload ${filename}`,
413
+ variant: "destructive",
414
+ })
415
+ },
416
+ async () => {
417
+ setUploadProgress((prev) =>
418
+ prev.map((item) =>
419
+ item.file === uploadFile
420
+ ? { ...item, status: "completed", completedAt: Date.now() }
421
+ : item,
422
+ ),
423
+ )
424
+ toast({
425
+ title: "Upload successful",
426
+ description: `${filename} uploaded successfully`,
427
+ })
428
+
429
+ await runHooks("postFileAdd", globalConfig, customization, {
430
+ record,
431
+ fullPath: filePath,
432
+ filename,
433
+ permissions: {
434
+ read: metadata.customMetadata.read,
435
+ update: metadata.customMetadata.update,
436
+ delete: metadata.customMetadata.delete,
437
+ },
438
+ }).catch(() => {})
439
+
440
+ loadDirectory(currentPath)
441
+ },
442
+ )
447
443
  }
448
444
 
449
445
  setShowFilenameDialog(false)