@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
- setIsLoading(true);
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
- // append instead of replacing
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
- if (!response.next_page || response.gallery.length === 0) {
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
- setIsLoading(false);
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 (!isLoading && hasMore) {
151
+ if (!isFetchingMore && hasMore) {
144
152
  loadImages(page + 1);
145
153
  }
146
- }, [isLoading, hasMore, page, loadImages]);
147
- // Extract selected image IDs for other operations (like applying bulk adjustments)
148
- useEffect(() => {
149
- if (eventID && firebaseUid) {
150
- setIsLoading(true);
151
- setError(null);
152
- controller.getImageList(firebaseUid, eventID, page + 1)
153
- .then(response => {
154
- // TODO need do pagination for this one
155
- batchActions.syncAdjustment(response.gallery.map(mapToImageAdjustmentConfig));
156
- setImageCollection(response.gallery);
157
- })
158
- .catch(err => {
159
- console.error("Failed to fetch image list:", err);
160
- setError("Could not load images.");
161
- })
162
- .finally(() => {
163
- setIsLoading(false);
164
- });
165
- console.log("Image data FROM USEHONCHOBULK: ", imageData);
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
- setImageCollection([]); // reset when event changes
177
+ // Reset state when the event changes
178
+ setImageCollection([]);
171
179
  setPage(1);
172
- loadImages(1);
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
- // Gallery Handlers
191
+ isFetchingMore,
183
192
  handleBackCallbackBulk,
184
193
  selectedBulkPreset,
185
194
  handleToggleImageSelection: batchActions.toggleSelection,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yogiswara/honcho-editor-ui",
3
- "version": "2.5.4",
3
+ "version": "2.5.6",
4
4
  "description": "A complete UI component library for the Honcho photo editor.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",