@yogiswara/honcho-editor-ui 2.5.4 → 2.5.6
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.
|
@@ -28,6 +28,7 @@ export declare function useHonchoEditorBulk(controller: Controller, eventID: str
|
|
|
28
28
|
selectedIds: string[];
|
|
29
29
|
hasMore: boolean;
|
|
30
30
|
loadMoreImages: () => void;
|
|
31
|
+
isFetchingMore: boolean;
|
|
31
32
|
handleBackCallbackBulk: () => void;
|
|
32
33
|
selectedBulkPreset: string;
|
|
33
34
|
handleToggleImageSelection: (imageId: string) => void;
|
|
@@ -45,6 +45,7 @@ export function useHonchoEditorBulk(controller, eventID, firebaseUid) {
|
|
|
45
45
|
const [isLoading, setIsLoading] = useState(true);
|
|
46
46
|
const [error, setError] = useState(null);
|
|
47
47
|
const [page, setPage] = useState(1);
|
|
48
|
+
const [isFetchingMore, setIsFetchingMore] = useState(false);
|
|
48
49
|
const [hasMore, setHasMore] = useState(true);
|
|
49
50
|
const [selectedBulkPreset, setSelectedBulkPreset] = useState('preset1');
|
|
50
51
|
const imageData = useMemo(() => {
|
|
@@ -116,60 +117,68 @@ export function useHonchoEditorBulk(controller, eventID, firebaseUid) {
|
|
|
116
117
|
const handleBulkSharpnessIncrease = createRelativeAdjuster('sharpnessScore', 5);
|
|
117
118
|
const handleBulkSharpnessIncreaseMax = createRelativeAdjuster('sharpnessScore', 20);
|
|
118
119
|
const loadImages = useCallback(async (pageNum) => {
|
|
119
|
-
|
|
120
|
+
// Use the correct loading state
|
|
121
|
+
if (pageNum === 1) {
|
|
122
|
+
setIsLoading(true);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
setIsFetchingMore(true);
|
|
126
|
+
}
|
|
127
|
+
setError(null);
|
|
120
128
|
try {
|
|
121
129
|
const response = await controller.getImageList(firebaseUid, eventID, pageNum);
|
|
130
|
+
// Sync adjustments for the new images with the batch history
|
|
122
131
|
batchActions.syncAdjustment(response.gallery.map(mapToImageAdjustmentConfig));
|
|
123
|
-
//
|
|
124
|
-
setImageCollection(prev => [...prev, ...response.gallery]);
|
|
125
|
-
// track page & "more" status
|
|
132
|
+
// Append new images for page > 1, otherwise replace
|
|
133
|
+
setImageCollection(prev => pageNum === 1 ? response.gallery : [...prev, ...response.gallery]);
|
|
126
134
|
setPage(response.current_page);
|
|
127
|
-
|
|
128
|
-
setHasMore(false);
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
setHasMore(true);
|
|
132
|
-
}
|
|
135
|
+
setHasMore(response.next_page > 0 && response.gallery.length > 0);
|
|
133
136
|
}
|
|
134
137
|
catch (err) {
|
|
135
138
|
console.error("Failed to fetch image list:", err);
|
|
136
|
-
setError("Could not load images.");
|
|
139
|
+
setError(err.message || "Could not load images.");
|
|
137
140
|
}
|
|
138
141
|
finally {
|
|
139
|
-
|
|
142
|
+
if (pageNum === 1) {
|
|
143
|
+
setIsLoading(false);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
setIsFetchingMore(false);
|
|
147
|
+
}
|
|
140
148
|
}
|
|
141
149
|
}, [controller, firebaseUid, eventID, batchActions]);
|
|
142
150
|
const loadMoreImages = useCallback(() => {
|
|
143
|
-
if (!
|
|
151
|
+
if (!isFetchingMore && hasMore) {
|
|
144
152
|
loadImages(page + 1);
|
|
145
153
|
}
|
|
146
|
-
}, [
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}, [eventID, firebaseUid, controller]);
|
|
154
|
+
}, [isFetchingMore, hasMore, page, loadImages]);
|
|
155
|
+
// useEffect(() => {
|
|
156
|
+
// if (eventID && firebaseUid) {
|
|
157
|
+
// setIsLoading(true);
|
|
158
|
+
// setError(null);
|
|
159
|
+
// controller.getImageList(firebaseUid, eventID, 2)
|
|
160
|
+
// .then(response => {
|
|
161
|
+
// // TODO need do pagination for this one
|
|
162
|
+
// batchActions.syncAdjustment(response.gallery.map(mapToImageAdjustmentConfig));
|
|
163
|
+
// setImageCollection(response.gallery);
|
|
164
|
+
// })
|
|
165
|
+
// .catch(err => {
|
|
166
|
+
// console.error("Failed to fetch image list:", err);
|
|
167
|
+
// setError("Could not load images.");
|
|
168
|
+
// })
|
|
169
|
+
// .finally(() => {
|
|
170
|
+
// setIsLoading(false);
|
|
171
|
+
// });
|
|
172
|
+
// console.log("Image data FROM USEHONCHOBULK: ", imageData);
|
|
173
|
+
// }
|
|
174
|
+
// }, [eventID, firebaseUid, controller]);
|
|
168
175
|
useEffect(() => {
|
|
169
176
|
if (eventID && firebaseUid) {
|
|
170
|
-
|
|
177
|
+
// Reset state when the event changes
|
|
178
|
+
setImageCollection([]);
|
|
171
179
|
setPage(1);
|
|
172
|
-
|
|
180
|
+
setHasMore(true);
|
|
181
|
+
loadImages(1); // Load the first page
|
|
173
182
|
}
|
|
174
183
|
}, [eventID, firebaseUid, loadImages]);
|
|
175
184
|
return {
|
|
@@ -179,7 +188,7 @@ export function useHonchoEditorBulk(controller, eventID, firebaseUid) {
|
|
|
179
188
|
selectedIds,
|
|
180
189
|
hasMore,
|
|
181
190
|
loadMoreImages,
|
|
182
|
-
|
|
191
|
+
isFetchingMore,
|
|
183
192
|
handleBackCallbackBulk,
|
|
184
193
|
selectedBulkPreset,
|
|
185
194
|
handleToggleImageSelection: batchActions.toggleSelection,
|