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