@stoker-platform/web-app 0.5.194 → 0.5.196
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 +12 -0
- package/package.json +1 -1
- package/src/Collection.tsx +1 -4
- package/src/Images.tsx +17 -7
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
package/src/Collection.tsx
CHANGED
|
@@ -375,9 +375,6 @@ function Collection({
|
|
|
375
375
|
}, [serverList])
|
|
376
376
|
|
|
377
377
|
useEffect(() => {
|
|
378
|
-
if (isAssigning !== undefined) {
|
|
379
|
-
setBackToStartKey((prev) => prev + 1)
|
|
380
|
-
}
|
|
381
378
|
if (!relationList || !isInitialized) return
|
|
382
379
|
setFilters((prev) => {
|
|
383
380
|
let next = prev
|
|
@@ -397,7 +394,7 @@ function Collection({
|
|
|
397
394
|
}
|
|
398
395
|
return next
|
|
399
396
|
})
|
|
400
|
-
}, [isAssigning])
|
|
397
|
+
}, [isAssigning, isInitialized])
|
|
401
398
|
|
|
402
399
|
// This is to ensure that the optimistic list is set in cases where cached documents exactly match the downloaded server documents
|
|
403
400
|
// In this case, the cache-only snapshot listener does not fire a second time when the cache has loaded because there is no change to the list
|
package/src/Images.tsx
CHANGED
|
@@ -53,31 +53,36 @@ interface RowImageProps {
|
|
|
53
53
|
|
|
54
54
|
const RowImage = memo(
|
|
55
55
|
({ src, alt }: RowImageProps) => {
|
|
56
|
-
const
|
|
56
|
+
const imgRef = useRef<HTMLImageElement | null>(null)
|
|
57
|
+
const [loadedSrc, setLoadedSrc] = useState<string | null>(null)
|
|
57
58
|
const [showSpinner, setShowSpinner] = useState(false)
|
|
59
|
+
const isLoaded = loadedSrc === src
|
|
58
60
|
|
|
59
61
|
useEffect(() => {
|
|
60
|
-
|
|
62
|
+
if (imgRef.current?.complete && imgRef.current.naturalWidth > 0) {
|
|
63
|
+
setLoadedSrc(src)
|
|
64
|
+
setShowSpinner(false)
|
|
65
|
+
return
|
|
66
|
+
}
|
|
61
67
|
setShowSpinner(false)
|
|
62
68
|
const timer = setTimeout(() => {
|
|
63
|
-
|
|
69
|
+
setShowSpinner(true)
|
|
64
70
|
}, 500)
|
|
65
71
|
return () => clearTimeout(timer)
|
|
66
72
|
}, [src])
|
|
67
73
|
|
|
68
|
-
useEffect(() => {
|
|
69
|
-
if (isLoaded) setShowSpinner(false)
|
|
70
|
-
}, [isLoaded])
|
|
71
74
|
return (
|
|
72
75
|
<>
|
|
73
76
|
<img
|
|
77
|
+
key={src}
|
|
78
|
+
ref={imgRef}
|
|
74
79
|
alt={alt}
|
|
75
80
|
className={cn(
|
|
76
81
|
"max-w-full max-h-full object-contain rounded-md ease-in-out duration-300 transition-opacity-transform hover:scale-95",
|
|
77
82
|
{ "opacity-0": !isLoaded, "opacity-100": isLoaded },
|
|
78
83
|
)}
|
|
79
84
|
src={getSafeUrl(src)}
|
|
80
|
-
onLoad={() =>
|
|
85
|
+
onLoad={() => setLoadedSrc(src)}
|
|
81
86
|
/>
|
|
82
87
|
{!isLoaded && showSpinner && (
|
|
83
88
|
<div className="absolute inset-0 flex items-center justify-center">
|
|
@@ -370,6 +375,8 @@ export const Images = memo(
|
|
|
370
375
|
const [orderByField, setOrderByField] = useState<string | undefined>(undefined)
|
|
371
376
|
const [orderByDirection, setOrderByDirection] = useState<"asc" | "desc" | undefined>(undefined)
|
|
372
377
|
|
|
378
|
+
const infiniteLoaderRef = useRef<InfiniteLoader>(null)
|
|
379
|
+
|
|
373
380
|
const backToStart = useCallback(
|
|
374
381
|
(
|
|
375
382
|
latestConstraints?: QueryConstraint[],
|
|
@@ -377,6 +384,7 @@ export const Images = memo(
|
|
|
377
384
|
latestOrderByDirection?: "asc" | "desc",
|
|
378
385
|
) => {
|
|
379
386
|
return new Promise<void>((resolve) => {
|
|
387
|
+
infiniteLoaderRef.current?.resetloadMoreItemsCache()
|
|
380
388
|
setServerList({})
|
|
381
389
|
setList({})
|
|
382
390
|
const newQuery = {
|
|
@@ -659,6 +667,7 @@ export const Images = memo(
|
|
|
659
667
|
|
|
660
668
|
useEffect(() => {
|
|
661
669
|
setIsFirstLoad(true)
|
|
670
|
+
setPrevIds(new Set())
|
|
662
671
|
}, [filters, orderByField, orderByDirection])
|
|
663
672
|
|
|
664
673
|
useEffect(() => {
|
|
@@ -838,6 +847,7 @@ export const Images = memo(
|
|
|
838
847
|
>
|
|
839
848
|
{!formList && (meta?.title || collectionTitle) && <Meta />}
|
|
840
849
|
<InfiniteLoader
|
|
850
|
+
ref={infiniteLoaderRef}
|
|
841
851
|
isItemLoaded={(index) => index < itemCount}
|
|
842
852
|
itemCount={100000}
|
|
843
853
|
loadMoreItems={loadMoreItems}
|