@replyke/core 7.0.2 → 7.0.3-beta.1
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/dist/cjs/hooks/collections/useCollectionEntitiesWrapper.js +9 -10
- package/dist/cjs/hooks/collections/useCollectionEntitiesWrapper.js.map +1 -1
- package/dist/cjs/hooks/collections/useCollections.d.ts +2 -1
- package/dist/cjs/hooks/collections/useCollections.js +4 -4
- package/dist/cjs/hooks/collections/useCollections.js.map +1 -1
- package/dist/cjs/hooks/collections/useCollectionsActions.d.ts +3 -2
- package/dist/cjs/hooks/collections/useCollectionsActions.js +22 -11
- package/dist/cjs/hooks/collections/useCollectionsActions.js.map +1 -1
- package/dist/cjs/hooks/relationships/follows/useFetchFollowStatus.js +1 -1
- package/dist/cjs/hooks/relationships/follows/useFetchFollowStatus.js.map +1 -1
- package/dist/cjs/hooks/relationships/follows/useFollowManager.js +5 -2
- package/dist/cjs/hooks/relationships/follows/useFollowManager.js.map +1 -1
- package/dist/cjs/store/slices/collectionsSlice.d.ts +8180 -1
- package/dist/cjs/store/slices/collectionsSlice.js +46 -2
- package/dist/cjs/store/slices/collectionsSlice.js.map +1 -1
- package/dist/esm/hooks/collections/useCollectionEntitiesWrapper.js +9 -10
- package/dist/esm/hooks/collections/useCollectionEntitiesWrapper.js.map +1 -1
- package/dist/esm/hooks/collections/useCollections.d.ts +2 -1
- package/dist/esm/hooks/collections/useCollections.js +4 -4
- package/dist/esm/hooks/collections/useCollections.js.map +1 -1
- package/dist/esm/hooks/collections/useCollectionsActions.d.ts +3 -2
- package/dist/esm/hooks/collections/useCollectionsActions.js +25 -14
- package/dist/esm/hooks/collections/useCollectionsActions.js.map +1 -1
- package/dist/esm/hooks/relationships/follows/useFetchFollowStatus.js +1 -1
- package/dist/esm/hooks/relationships/follows/useFetchFollowStatus.js.map +1 -1
- package/dist/esm/hooks/relationships/follows/useFollowManager.js +6 -3
- package/dist/esm/hooks/relationships/follows/useFollowManager.js.map +1 -1
- package/dist/esm/store/slices/collectionsSlice.d.ts +8180 -1
- package/dist/esm/store/slices/collectionsSlice.js +44 -1
- package/dist/esm/store/slices/collectionsSlice.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.selectCurrentCollectionId = exports.selectCurrentProjectId = exports.selectCollectionsById = exports.selectSubCollectionsMap = exports.selectCollectionHistory = exports.selectCollectionsLoading = exports.selectSubCollections = exports.selectCurrentCollection = exports.handleError = exports.resetCollections = exports.handleCollectionDeletion = exports.removeCollectionFromSubCollections = exports.addNewCollectionAndNavigate = exports.updateCollectionInSubCollections = exports.updateCurrentCollection = exports.setSubCollections = exports.setCurrentCollection = exports.goToRoot = exports.goBack = exports.openCollection = exports.setLoading = exports.setProjectContext = exports.collectionsSlice = void 0;
|
|
4
|
+
exports.selectCollectionEntities = exports.selectCurrentCollectionId = exports.selectCurrentProjectId = exports.selectCollectionsById = exports.selectSubCollectionsMap = exports.selectCollectionHistory = exports.selectCollectionsLoading = exports.selectSubCollections = exports.selectCurrentCollection = exports.handleError = exports.resetCollections = exports.insertCollectionEntityAt = exports.removeCollectionEntity = exports.prependCollectionEntity = exports.appendCollectionEntities = exports.setCollectionEntities = exports.handleCollectionDeletion = exports.removeCollectionFromSubCollections = exports.addNewCollectionAndNavigate = exports.updateCollectionInSubCollections = exports.updateCurrentCollection = exports.setSubCollections = exports.setCurrentCollection = exports.goToRoot = exports.goBack = exports.openCollection = exports.setLoading = exports.setProjectContext = exports.collectionsSlice = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
6
|
// Initial state
|
|
7
7
|
const initialState = {
|
|
@@ -11,6 +11,7 @@ const initialState = {
|
|
|
11
11
|
collectionHistory: [],
|
|
12
12
|
loading: false,
|
|
13
13
|
currentProjectId: undefined,
|
|
14
|
+
entitiesByCollectionId: {},
|
|
14
15
|
};
|
|
15
16
|
// Create the slice
|
|
16
17
|
exports.collectionsSlice = (0, toolkit_1.createSlice)({
|
|
@@ -131,6 +132,8 @@ exports.collectionsSlice = (0, toolkit_1.createSlice)({
|
|
|
131
132
|
delete state.collectionsById[collectionId];
|
|
132
133
|
// Remove its own sub-collections mapping
|
|
133
134
|
delete state.subcollectionsMap[collectionId];
|
|
135
|
+
// Remove its entity list
|
|
136
|
+
delete state.entitiesByCollectionId[collectionId];
|
|
134
137
|
// If deleted collection is current collection, go back
|
|
135
138
|
if (state.currentCollectionId === collectionId) {
|
|
136
139
|
if (state.collectionHistory.length === 0) {
|
|
@@ -145,6 +148,40 @@ exports.collectionsSlice = (0, toolkit_1.createSlice)({
|
|
|
145
148
|
state.currentCollectionId = previousCollectionId;
|
|
146
149
|
}
|
|
147
150
|
},
|
|
151
|
+
// Entity list management (shared state for optimistic add/remove)
|
|
152
|
+
setCollectionEntities: (state, action) => {
|
|
153
|
+
const { collectionId, entities } = action.payload;
|
|
154
|
+
state.entitiesByCollectionId[collectionId] = entities;
|
|
155
|
+
},
|
|
156
|
+
appendCollectionEntities: (state, action) => {
|
|
157
|
+
const { collectionId, entities } = action.payload;
|
|
158
|
+
if (!state.entitiesByCollectionId[collectionId]) {
|
|
159
|
+
state.entitiesByCollectionId[collectionId] = [];
|
|
160
|
+
}
|
|
161
|
+
state.entitiesByCollectionId[collectionId].push(...entities);
|
|
162
|
+
},
|
|
163
|
+
prependCollectionEntity: (state, action) => {
|
|
164
|
+
const { collectionId, entity } = action.payload;
|
|
165
|
+
if (!state.entitiesByCollectionId[collectionId]) {
|
|
166
|
+
state.entitiesByCollectionId[collectionId] = [];
|
|
167
|
+
}
|
|
168
|
+
state.entitiesByCollectionId[collectionId].unshift(entity);
|
|
169
|
+
},
|
|
170
|
+
removeCollectionEntity: (state, action) => {
|
|
171
|
+
const { collectionId, entityId } = action.payload;
|
|
172
|
+
if (state.entitiesByCollectionId[collectionId]) {
|
|
173
|
+
state.entitiesByCollectionId[collectionId] =
|
|
174
|
+
state.entitiesByCollectionId[collectionId].filter((e) => e.id !== entityId);
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
insertCollectionEntityAt: (state, action) => {
|
|
178
|
+
const { collectionId, entity, index } = action.payload;
|
|
179
|
+
if (!state.entitiesByCollectionId[collectionId]) {
|
|
180
|
+
state.entitiesByCollectionId[collectionId] = [];
|
|
181
|
+
}
|
|
182
|
+
const clamped = Math.min(index, state.entitiesByCollectionId[collectionId].length);
|
|
183
|
+
state.entitiesByCollectionId[collectionId].splice(clamped, 0, entity);
|
|
184
|
+
},
|
|
148
185
|
// Reset all collections data
|
|
149
186
|
resetCollections: (state) => {
|
|
150
187
|
state.collectionsById = {};
|
|
@@ -152,6 +189,7 @@ exports.collectionsSlice = (0, toolkit_1.createSlice)({
|
|
|
152
189
|
state.currentCollectionId = null;
|
|
153
190
|
state.collectionHistory = [];
|
|
154
191
|
state.loading = false;
|
|
192
|
+
state.entitiesByCollectionId = {};
|
|
155
193
|
},
|
|
156
194
|
// Handle errors by stopping loading
|
|
157
195
|
handleError: (state) => {
|
|
@@ -160,7 +198,7 @@ exports.collectionsSlice = (0, toolkit_1.createSlice)({
|
|
|
160
198
|
},
|
|
161
199
|
});
|
|
162
200
|
// Export actions
|
|
163
|
-
_a = exports.collectionsSlice.actions, exports.setProjectContext = _a.setProjectContext, exports.setLoading = _a.setLoading, exports.openCollection = _a.openCollection, exports.goBack = _a.goBack, exports.goToRoot = _a.goToRoot, exports.setCurrentCollection = _a.setCurrentCollection, exports.setSubCollections = _a.setSubCollections, exports.updateCurrentCollection = _a.updateCurrentCollection, exports.updateCollectionInSubCollections = _a.updateCollectionInSubCollections, exports.addNewCollectionAndNavigate = _a.addNewCollectionAndNavigate, exports.removeCollectionFromSubCollections = _a.removeCollectionFromSubCollections, exports.handleCollectionDeletion = _a.handleCollectionDeletion, exports.resetCollections = _a.resetCollections, exports.handleError = _a.handleError;
|
|
201
|
+
_a = exports.collectionsSlice.actions, exports.setProjectContext = _a.setProjectContext, exports.setLoading = _a.setLoading, exports.openCollection = _a.openCollection, exports.goBack = _a.goBack, exports.goToRoot = _a.goToRoot, exports.setCurrentCollection = _a.setCurrentCollection, exports.setSubCollections = _a.setSubCollections, exports.updateCurrentCollection = _a.updateCurrentCollection, exports.updateCollectionInSubCollections = _a.updateCollectionInSubCollections, exports.addNewCollectionAndNavigate = _a.addNewCollectionAndNavigate, exports.removeCollectionFromSubCollections = _a.removeCollectionFromSubCollections, exports.handleCollectionDeletion = _a.handleCollectionDeletion, exports.setCollectionEntities = _a.setCollectionEntities, exports.appendCollectionEntities = _a.appendCollectionEntities, exports.prependCollectionEntity = _a.prependCollectionEntity, exports.removeCollectionEntity = _a.removeCollectionEntity, exports.insertCollectionEntityAt = _a.insertCollectionEntityAt, exports.resetCollections = _a.resetCollections, exports.handleError = _a.handleError;
|
|
164
202
|
// Export reducer
|
|
165
203
|
exports.default = exports.collectionsSlice.reducer;
|
|
166
204
|
// Selectors - use namespaced state for dual-mode support
|
|
@@ -198,4 +236,10 @@ exports.selectCurrentProjectId = selectCurrentProjectId;
|
|
|
198
236
|
// Selector for current collection ID
|
|
199
237
|
const selectCurrentCollectionId = (state) => state.replyke.collections.currentCollectionId;
|
|
200
238
|
exports.selectCurrentCollectionId = selectCurrentCollectionId;
|
|
239
|
+
const EMPTY_ENTITIES = [];
|
|
240
|
+
// Selector for entities in a specific collection
|
|
241
|
+
const selectCollectionEntities = (collectionId) => (state) => collectionId
|
|
242
|
+
? (state.replyke.collections.entitiesByCollectionId[collectionId] ?? EMPTY_ENTITIES)
|
|
243
|
+
: EMPTY_ENTITIES;
|
|
244
|
+
exports.selectCollectionEntities = selectCollectionEntities;
|
|
201
245
|
//# sourceMappingURL=collectionsSlice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectionsSlice.js","sourceRoot":"","sources":["../../../../src/store/slices/collectionsSlice.ts"],"names":[],"mappings":";;;;AAAA,8CAA8E;
|
|
1
|
+
{"version":3,"file":"collectionsSlice.js","sourceRoot":"","sources":["../../../../src/store/slices/collectionsSlice.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,17 @@ import { useLazyFetchCollectionEntitiesQuery } from "../../store/api/collections
|
|
|
3
3
|
import { handleError } from "../../utils/handleError";
|
|
4
4
|
import useProject from "../projects/useProject";
|
|
5
5
|
import useCollections from "./useCollections";
|
|
6
|
+
import { useReplykeDispatch, useReplykeSelector } from "../../store/hooks";
|
|
7
|
+
import { setCollectionEntities, appendCollectionEntities, selectCollectionEntities, } from "../../store/slices/collectionsSlice";
|
|
6
8
|
function useCollectionEntitiesWrapper(props) {
|
|
7
9
|
const { collectionId: passedCollectionId, limit = 20, defaultSortBy = "added", defaultSortDir = "desc", include, } = props;
|
|
10
|
+
const dispatch = useReplykeDispatch();
|
|
8
11
|
const { projectId } = useProject();
|
|
9
12
|
const { currentCollection } = useCollections();
|
|
10
13
|
const [fetchCollectionEntitiesQuery] = useLazyFetchCollectionEntitiesQuery();
|
|
11
|
-
// Use passed collectionId if provided, otherwise default to current collection
|
|
12
14
|
const effectiveCollectionId = passedCollectionId ?? currentCollection?.id;
|
|
13
|
-
//
|
|
15
|
+
// Read entities from shared Redux state — written here and by useCollectionsActions for optimistic updates
|
|
16
|
+
const entities = useReplykeSelector(selectCollectionEntities(effectiveCollectionId));
|
|
14
17
|
const includeString = useMemo(() => (Array.isArray(include) ? include.join(",") : include), [include]);
|
|
15
18
|
const loading = useRef(false);
|
|
16
19
|
const [loadingState, setLoadingState] = useState(false);
|
|
@@ -19,8 +22,6 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
19
22
|
const [sortBy, setSortBy] = useState(defaultSortBy);
|
|
20
23
|
const [sortDir, setSortDir] = useState(defaultSortDir);
|
|
21
24
|
const [page, setPage] = useState(1);
|
|
22
|
-
const [entities, setEntities] = useState([]);
|
|
23
|
-
// Reset entities when filters or collection change
|
|
24
25
|
const resetEntities = useCallback(async () => {
|
|
25
26
|
if (!projectId || !effectiveCollectionId) {
|
|
26
27
|
return;
|
|
@@ -42,7 +43,7 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
42
43
|
}).unwrap();
|
|
43
44
|
if (response) {
|
|
44
45
|
const { data: newEntities, pagination } = response;
|
|
45
|
-
|
|
46
|
+
dispatch(setCollectionEntities({ collectionId: effectiveCollectionId, entities: newEntities }));
|
|
46
47
|
hasMore.current = pagination.hasMore;
|
|
47
48
|
setHasMoreState(pagination.hasMore);
|
|
48
49
|
}
|
|
@@ -55,6 +56,7 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
55
56
|
setLoadingState(false);
|
|
56
57
|
}
|
|
57
58
|
}, [
|
|
59
|
+
dispatch,
|
|
58
60
|
fetchCollectionEntitiesQuery,
|
|
59
61
|
projectId,
|
|
60
62
|
effectiveCollectionId,
|
|
@@ -63,17 +65,14 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
63
65
|
sortDir,
|
|
64
66
|
includeString,
|
|
65
67
|
]);
|
|
66
|
-
// Load more entities
|
|
67
68
|
const loadMore = useCallback(() => {
|
|
68
69
|
if (loading.current || !hasMore.current)
|
|
69
70
|
return;
|
|
70
71
|
setPage((prevPage) => prevPage + 1);
|
|
71
72
|
}, []);
|
|
72
|
-
// Initial load
|
|
73
73
|
useEffect(() => {
|
|
74
74
|
resetEntities();
|
|
75
75
|
}, [resetEntities]);
|
|
76
|
-
// Load more pages
|
|
77
76
|
useEffect(() => {
|
|
78
77
|
const loadMoreEntities = async () => {
|
|
79
78
|
if (!projectId || !effectiveCollectionId) {
|
|
@@ -93,7 +92,7 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
93
92
|
}).unwrap();
|
|
94
93
|
if (response) {
|
|
95
94
|
const { data: newEntities, pagination } = response;
|
|
96
|
-
|
|
95
|
+
dispatch(appendCollectionEntities({ collectionId: effectiveCollectionId, entities: newEntities }));
|
|
97
96
|
hasMore.current = pagination.hasMore;
|
|
98
97
|
setHasMoreState(pagination.hasMore);
|
|
99
98
|
}
|
|
@@ -106,12 +105,12 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
106
105
|
setLoadingState(false);
|
|
107
106
|
}
|
|
108
107
|
};
|
|
109
|
-
// Only load more if page > 1 (not initial load)
|
|
110
108
|
if (page > 1 && hasMore.current && !loading.current) {
|
|
111
109
|
loadMoreEntities();
|
|
112
110
|
}
|
|
113
111
|
}, [
|
|
114
112
|
page,
|
|
113
|
+
dispatch,
|
|
115
114
|
fetchCollectionEntitiesQuery,
|
|
116
115
|
projectId,
|
|
117
116
|
effectiveCollectionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCollectionEntitiesWrapper.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollectionEntitiesWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,cAAc,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useCollectionEntitiesWrapper.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollectionEntitiesWrapper.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Entity } from "../../interfaces/models/Entity";
|
|
1
2
|
import type { Collection } from "../../interfaces/models/Collection";
|
|
2
3
|
export interface UseCollectionsProps {
|
|
3
4
|
}
|
|
@@ -14,7 +15,7 @@ export interface DeleteCollectionProps {
|
|
|
14
15
|
collection: Collection;
|
|
15
16
|
}
|
|
16
17
|
export interface AddToCollectionProps {
|
|
17
|
-
|
|
18
|
+
entity: Entity;
|
|
18
19
|
}
|
|
19
20
|
export interface RemoveFromCollectionProps {
|
|
20
21
|
entityId: string;
|
|
@@ -123,9 +123,9 @@ function useCollections(_ = {}) {
|
|
|
123
123
|
}
|
|
124
124
|
await deleteCollectionAction({ projectId, collection });
|
|
125
125
|
}, [deleteCollectionAction, projectId]);
|
|
126
|
-
const handleAddToCollection = useCallback(async ({
|
|
127
|
-
if (!
|
|
128
|
-
console.error("No
|
|
126
|
+
const handleAddToCollection = useCallback(async ({ entity }) => {
|
|
127
|
+
if (!entity?.id) {
|
|
128
|
+
console.error("No entity provided.");
|
|
129
129
|
return;
|
|
130
130
|
}
|
|
131
131
|
if (!currentCollection) {
|
|
@@ -139,7 +139,7 @@ function useCollections(_ = {}) {
|
|
|
139
139
|
await addToCollectionAction({
|
|
140
140
|
projectId,
|
|
141
141
|
collectionId: currentCollection.id,
|
|
142
|
-
|
|
142
|
+
entity,
|
|
143
143
|
});
|
|
144
144
|
}, [addToCollectionAction, currentCollection, projectId]);
|
|
145
145
|
const handleRemoveFromCollection = useCallback(async ({ entityId }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCollections.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"useCollections.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollections.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Collection } from "../../interfaces/models/Collection";
|
|
2
|
+
import type { Entity } from "../../interfaces/models/Entity";
|
|
2
3
|
export interface UseCollectionsActionsValues {
|
|
3
4
|
openCollection: (collection: Collection) => void;
|
|
4
5
|
goBack: () => void;
|
|
@@ -26,10 +27,10 @@ export interface UseCollectionsActionsValues {
|
|
|
26
27
|
projectId: string;
|
|
27
28
|
collection: Collection;
|
|
28
29
|
}) => Promise<void>;
|
|
29
|
-
addToCollection: ({ projectId, collectionId,
|
|
30
|
+
addToCollection: ({ projectId, collectionId, entity }: {
|
|
30
31
|
projectId: string;
|
|
31
32
|
collectionId: string;
|
|
32
|
-
|
|
33
|
+
entity: Entity;
|
|
33
34
|
}) => Promise<void>;
|
|
34
35
|
removeFromCollection: ({ projectId, collectionId, entityId }: {
|
|
35
36
|
projectId: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { useCallback, useMemo } from "react";
|
|
2
|
-
import { useReplykeDispatch } from "../../store/hooks";
|
|
3
|
-
import { setLoading, openCollection, goBack, goToRoot, setCurrentCollection, setSubCollections, updateCollectionInSubCollections, addNewCollectionAndNavigate, handleCollectionDeletion, resetCollections, handleError, } from "../../store/slices/collectionsSlice";
|
|
1
|
+
import { useCallback, useMemo, useRef } from "react";
|
|
2
|
+
import { useReplykeDispatch, useReplykeSelector } from "../../store/hooks";
|
|
3
|
+
import { setLoading, openCollection, goBack, goToRoot, setCurrentCollection, setSubCollections, updateCollectionInSubCollections, addNewCollectionAndNavigate, handleCollectionDeletion, prependCollectionEntity, removeCollectionEntity, insertCollectionEntityAt, resetCollections, handleError, } from "../../store/slices/collectionsSlice";
|
|
4
4
|
import { useLazyFetchRootCollectionQuery, useLazyFetchSubCollectionsQuery, useCreateCollectionMutation, useUpdateCollectionMutation, useDeleteCollectionMutation, useAddToCollectionMutation, useRemoveFromCollectionMutation, } from "../../store/api/collectionsApi";
|
|
5
5
|
import { handleError as handleErrorUtil } from "../../utils/handleError";
|
|
6
6
|
/**
|
|
@@ -9,6 +9,10 @@ import { handleError as handleErrorUtil } from "../../utils/handleError";
|
|
|
9
9
|
*/
|
|
10
10
|
export function useCollectionsActions() {
|
|
11
11
|
const dispatch = useReplykeDispatch();
|
|
12
|
+
// Use a ref so removeFromCollection can read the latest entities without being in deps
|
|
13
|
+
const entitiesByCollectionId = useReplykeSelector((state) => state.replyke.collections.entitiesByCollectionId);
|
|
14
|
+
const entitiesByCollectionIdRef = useRef(entitiesByCollectionId);
|
|
15
|
+
entitiesByCollectionIdRef.current = entitiesByCollectionId;
|
|
12
16
|
// RTK Query hooks
|
|
13
17
|
const [fetchRootCollectionQuery] = useLazyFetchRootCollectionQuery();
|
|
14
18
|
const [fetchSubCollectionsQuery] = useLazyFetchSubCollectionsQuery();
|
|
@@ -129,44 +133,51 @@ export function useCollectionsActions() {
|
|
|
129
133
|
handleErrorUtil(err, "Failed to delete collection");
|
|
130
134
|
}
|
|
131
135
|
}, [deleteCollectionMutation, dispatch]);
|
|
132
|
-
// Add entity to collection
|
|
133
|
-
const addToCollection = useCallback(async ({ projectId, collectionId,
|
|
134
|
-
if (!projectId || !collectionId || !
|
|
136
|
+
// Add entity to collection — optimistically prepends to Redux state, reverts on error
|
|
137
|
+
const addToCollection = useCallback(async ({ projectId, collectionId, entity, }) => {
|
|
138
|
+
if (!projectId || !collectionId || !entity?.id) {
|
|
135
139
|
console.error("Missing required parameters for adding to collection.");
|
|
136
140
|
return;
|
|
137
141
|
}
|
|
142
|
+
dispatch(prependCollectionEntity({ collectionId, entity }));
|
|
138
143
|
try {
|
|
139
144
|
await addToCollectionMutation({
|
|
140
145
|
projectId,
|
|
141
146
|
collectionId,
|
|
142
|
-
entityId,
|
|
147
|
+
entityId: entity.id,
|
|
143
148
|
}).unwrap();
|
|
144
|
-
// Note: Entity data is no longer stored in collections.
|
|
145
|
-
// RTK Query will handle cache invalidation for CollectionEntities.
|
|
146
149
|
}
|
|
147
150
|
catch (err) {
|
|
151
|
+
dispatch(removeCollectionEntity({ collectionId, entityId: entity.id }));
|
|
148
152
|
handleErrorUtil(err, "Failed to add entity to collection");
|
|
153
|
+
throw err;
|
|
149
154
|
}
|
|
150
|
-
}, [addToCollectionMutation]);
|
|
151
|
-
// Remove entity from collection
|
|
155
|
+
}, [addToCollectionMutation, dispatch]);
|
|
156
|
+
// Remove entity from collection — optimistically removes from Redux state, reverts on error
|
|
152
157
|
const removeFromCollection = useCallback(async ({ projectId, collectionId, entityId, }) => {
|
|
153
158
|
if (!projectId || !collectionId || !entityId) {
|
|
154
159
|
console.error("Missing required parameters for removing from collection.");
|
|
155
160
|
return;
|
|
156
161
|
}
|
|
162
|
+
const currentList = entitiesByCollectionIdRef.current[collectionId] ?? [];
|
|
163
|
+
const originalIndex = currentList.findIndex((e) => e.id === entityId);
|
|
164
|
+
const entityToRestore = originalIndex !== -1 ? currentList[originalIndex] : undefined;
|
|
165
|
+
dispatch(removeCollectionEntity({ collectionId, entityId }));
|
|
157
166
|
try {
|
|
158
167
|
await removeFromCollectionMutation({
|
|
159
168
|
projectId,
|
|
160
169
|
collectionId,
|
|
161
170
|
entityId,
|
|
162
171
|
}).unwrap();
|
|
163
|
-
// Note: Entity data is no longer stored in collections.
|
|
164
|
-
// RTK Query will handle cache invalidation for CollectionEntities.
|
|
165
172
|
}
|
|
166
173
|
catch (err) {
|
|
174
|
+
if (entityToRestore) {
|
|
175
|
+
dispatch(insertCollectionEntityAt({ collectionId, entity: entityToRestore, index: originalIndex }));
|
|
176
|
+
}
|
|
167
177
|
handleErrorUtil(err, "Failed to remove entity from collection");
|
|
178
|
+
throw err;
|
|
168
179
|
}
|
|
169
|
-
}, [removeFromCollectionMutation]);
|
|
180
|
+
}, [removeFromCollectionMutation, dispatch]);
|
|
170
181
|
// Reset collections
|
|
171
182
|
const resetCollectionsAction = useCallback(() => {
|
|
172
183
|
dispatch(resetCollections());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCollectionsActions.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollectionsActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useCollectionsActions.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollectionsActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ function useFetchFollowStatus() {
|
|
|
22
22
|
}
|
|
23
23
|
const response = await axios.get(`/${projectId}/users/${userId}/follow`);
|
|
24
24
|
return response.data;
|
|
25
|
-
}, [axios, projectId, user]);
|
|
25
|
+
}, [axios, projectId, user?.id]);
|
|
26
26
|
return fetchFollowStatus;
|
|
27
27
|
}
|
|
28
28
|
export default useFetchFollowStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchFollowStatus.js","sourceRoot":"","sources":["../../../../../src/hooks/relationships/follows/useFetchFollowStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAC9D,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAYrC,SAAS,oBAAoB;IAC3B,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAE3B,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EAAE,KAA6B,EAAE,EAAE;QACtC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,MAAM,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,UAAU,MAAM,SAAS,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,IAA4B,CAAC;IAC/C,CAAC,EACD,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"useFetchFollowStatus.js","sourceRoot":"","sources":["../../../../../src/hooks/relationships/follows/useFetchFollowStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAC9D,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAYrC,SAAS,oBAAoB;IAC3B,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAE3B,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EAAE,KAA6B,EAAE,EAAE;QACtC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,MAAM,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,UAAU,MAAM,SAAS,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,IAA4B,CAAC;IAC/C,CAAC,EACD,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAC7B,CAAC;IAEF,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback } from "react";
|
|
1
|
+
import { useState, useEffect, useCallback, useRef } from "react";
|
|
2
2
|
import useFollowUser from "./useFollowUser";
|
|
3
3
|
import useUnfollowUserByUserId from "./useUnfollowUserByUserId";
|
|
4
4
|
import useFetchFollowStatus from "./useFetchFollowStatus";
|
|
@@ -10,11 +10,14 @@ function useFollowManager({ userId }) {
|
|
|
10
10
|
const followUser = useFollowUser();
|
|
11
11
|
const unfollowUserByUserId = useUnfollowUserByUserId();
|
|
12
12
|
const fetchFollowStatus = useFetchFollowStatus();
|
|
13
|
+
// Keep a ref so the effect always calls the latest version without being in deps
|
|
14
|
+
const fetchFollowStatusRef = useRef(fetchFollowStatus);
|
|
15
|
+
fetchFollowStatusRef.current = fetchFollowStatus;
|
|
13
16
|
useEffect(() => {
|
|
14
17
|
const loadFollowStatus = async () => {
|
|
15
18
|
try {
|
|
16
19
|
setIsLoading(true);
|
|
17
|
-
const result = await
|
|
20
|
+
const result = await fetchFollowStatusRef.current({ userId });
|
|
18
21
|
setIsFollowing(result.isFollowing);
|
|
19
22
|
}
|
|
20
23
|
catch (error) {
|
|
@@ -28,7 +31,7 @@ function useFollowManager({ userId }) {
|
|
|
28
31
|
if (userId && user?.id !== userId) {
|
|
29
32
|
loadFollowStatus();
|
|
30
33
|
}
|
|
31
|
-
}, [userId,
|
|
34
|
+
}, [userId, user?.id]);
|
|
32
35
|
const toggleFollow = useCallback(async () => {
|
|
33
36
|
if (isFollowing === null || isLoading || user?.id === userId)
|
|
34
37
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFollowManager.js","sourceRoot":"","sources":["../../../../../src/hooks/relationships/follows/useFollowManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useFollowManager.js","sourceRoot":"","sources":["../../../../../src/hooks/relationships/follows/useFollowManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,OAAO,MAAM,oBAAoB,CAAC;AAYzC,SAAS,gBAAgB,CAAC,EAAE,MAAM,EAAwB;IACxD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAE3B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,oBAAoB,GAAG,uBAAuB,EAAE,CAAC;IACvD,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IAEjD,iFAAiF;IACjF,MAAM,oBAAoB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvD,oBAAoB,CAAC,OAAO,GAAG,iBAAiB,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC;gBACH,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9D,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;gBACvD,cAAc,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,MAAM,IAAI,IAAI,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;YAClC,gBAAgB,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAEvB,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI,WAAW,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,EAAE,KAAK,MAAM;YAAE,OAAO;QAErE,IAAI,CAAC;YACH,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvC,cAAc,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7B,cAAc,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAEvE,OAAO;QACL,WAAW;QACX,SAAS;QACT,YAAY;KACb,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
|