@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
|
@@ -8,14 +8,17 @@ const collectionsApi_1 = require("../../store/api/collectionsApi");
|
|
|
8
8
|
const handleError_1 = require("../../utils/handleError");
|
|
9
9
|
const useProject_1 = __importDefault(require("../projects/useProject"));
|
|
10
10
|
const useCollections_1 = __importDefault(require("./useCollections"));
|
|
11
|
+
const hooks_1 = require("../../store/hooks");
|
|
12
|
+
const collectionsSlice_1 = require("../../store/slices/collectionsSlice");
|
|
11
13
|
function useCollectionEntitiesWrapper(props) {
|
|
12
14
|
const { collectionId: passedCollectionId, limit = 20, defaultSortBy = "added", defaultSortDir = "desc", include, } = props;
|
|
15
|
+
const dispatch = (0, hooks_1.useReplykeDispatch)();
|
|
13
16
|
const { projectId } = (0, useProject_1.default)();
|
|
14
17
|
const { currentCollection } = (0, useCollections_1.default)();
|
|
15
18
|
const [fetchCollectionEntitiesQuery] = (0, collectionsApi_1.useLazyFetchCollectionEntitiesQuery)();
|
|
16
|
-
// Use passed collectionId if provided, otherwise default to current collection
|
|
17
19
|
const effectiveCollectionId = passedCollectionId ?? currentCollection?.id;
|
|
18
|
-
//
|
|
20
|
+
// Read entities from shared Redux state — written here and by useCollectionsActions for optimistic updates
|
|
21
|
+
const entities = (0, hooks_1.useReplykeSelector)((0, collectionsSlice_1.selectCollectionEntities)(effectiveCollectionId));
|
|
19
22
|
const includeString = (0, react_1.useMemo)(() => (Array.isArray(include) ? include.join(",") : include), [include]);
|
|
20
23
|
const loading = (0, react_1.useRef)(false);
|
|
21
24
|
const [loadingState, setLoadingState] = (0, react_1.useState)(false);
|
|
@@ -24,8 +27,6 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
24
27
|
const [sortBy, setSortBy] = (0, react_1.useState)(defaultSortBy);
|
|
25
28
|
const [sortDir, setSortDir] = (0, react_1.useState)(defaultSortDir);
|
|
26
29
|
const [page, setPage] = (0, react_1.useState)(1);
|
|
27
|
-
const [entities, setEntities] = (0, react_1.useState)([]);
|
|
28
|
-
// Reset entities when filters or collection change
|
|
29
30
|
const resetEntities = (0, react_1.useCallback)(async () => {
|
|
30
31
|
if (!projectId || !effectiveCollectionId) {
|
|
31
32
|
return;
|
|
@@ -47,7 +48,7 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
47
48
|
}).unwrap();
|
|
48
49
|
if (response) {
|
|
49
50
|
const { data: newEntities, pagination } = response;
|
|
50
|
-
|
|
51
|
+
dispatch((0, collectionsSlice_1.setCollectionEntities)({ collectionId: effectiveCollectionId, entities: newEntities }));
|
|
51
52
|
hasMore.current = pagination.hasMore;
|
|
52
53
|
setHasMoreState(pagination.hasMore);
|
|
53
54
|
}
|
|
@@ -60,6 +61,7 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
60
61
|
setLoadingState(false);
|
|
61
62
|
}
|
|
62
63
|
}, [
|
|
64
|
+
dispatch,
|
|
63
65
|
fetchCollectionEntitiesQuery,
|
|
64
66
|
projectId,
|
|
65
67
|
effectiveCollectionId,
|
|
@@ -68,17 +70,14 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
68
70
|
sortDir,
|
|
69
71
|
includeString,
|
|
70
72
|
]);
|
|
71
|
-
// Load more entities
|
|
72
73
|
const loadMore = (0, react_1.useCallback)(() => {
|
|
73
74
|
if (loading.current || !hasMore.current)
|
|
74
75
|
return;
|
|
75
76
|
setPage((prevPage) => prevPage + 1);
|
|
76
77
|
}, []);
|
|
77
|
-
// Initial load
|
|
78
78
|
(0, react_1.useEffect)(() => {
|
|
79
79
|
resetEntities();
|
|
80
80
|
}, [resetEntities]);
|
|
81
|
-
// Load more pages
|
|
82
81
|
(0, react_1.useEffect)(() => {
|
|
83
82
|
const loadMoreEntities = async () => {
|
|
84
83
|
if (!projectId || !effectiveCollectionId) {
|
|
@@ -98,7 +97,7 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
98
97
|
}).unwrap();
|
|
99
98
|
if (response) {
|
|
100
99
|
const { data: newEntities, pagination } = response;
|
|
101
|
-
|
|
100
|
+
dispatch((0, collectionsSlice_1.appendCollectionEntities)({ collectionId: effectiveCollectionId, entities: newEntities }));
|
|
102
101
|
hasMore.current = pagination.hasMore;
|
|
103
102
|
setHasMoreState(pagination.hasMore);
|
|
104
103
|
}
|
|
@@ -111,12 +110,12 @@ function useCollectionEntitiesWrapper(props) {
|
|
|
111
110
|
setLoadingState(false);
|
|
112
111
|
}
|
|
113
112
|
};
|
|
114
|
-
// Only load more if page > 1 (not initial load)
|
|
115
113
|
if (page > 1 && hasMore.current && !loading.current) {
|
|
116
114
|
loadMoreEntities();
|
|
117
115
|
}
|
|
118
116
|
}, [
|
|
119
117
|
page,
|
|
118
|
+
dispatch,
|
|
120
119
|
fetchCollectionEntitiesQuery,
|
|
121
120
|
projectId,
|
|
122
121
|
effectiveCollectionId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCollectionEntitiesWrapper.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollectionEntitiesWrapper.tsx"],"names":[],"mappings":";;;;;AAAA,iCAA0E;AAE1E,mEAAqF;AACrF,yDAAsD;AACtD,wEAAgD;AAChD,sEAA8C;
|
|
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;
|
|
@@ -128,9 +128,9 @@ function useCollections(_ = {}) {
|
|
|
128
128
|
}
|
|
129
129
|
await deleteCollectionAction({ projectId, collection });
|
|
130
130
|
}, [deleteCollectionAction, projectId]);
|
|
131
|
-
const handleAddToCollection = (0, react_1.useCallback)(async ({
|
|
132
|
-
if (!
|
|
133
|
-
console.error("No
|
|
131
|
+
const handleAddToCollection = (0, react_1.useCallback)(async ({ entity }) => {
|
|
132
|
+
if (!entity?.id) {
|
|
133
|
+
console.error("No entity provided.");
|
|
134
134
|
return;
|
|
135
135
|
}
|
|
136
136
|
if (!currentCollection) {
|
|
@@ -144,7 +144,7 @@ function useCollections(_ = {}) {
|
|
|
144
144
|
await addToCollectionAction({
|
|
145
145
|
projectId,
|
|
146
146
|
collectionId: currentCollection.id,
|
|
147
|
-
|
|
147
|
+
entity,
|
|
148
148
|
});
|
|
149
149
|
}, [addToCollectionAction, currentCollection, projectId]);
|
|
150
150
|
const handleRemoveFromCollection = (0, react_1.useCallback)(async ({ entityId }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCollections.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollections.ts"],"names":[],"mappings":";;;;;AAAA,iCAAwD;AACxD,6CAA2E;
|
|
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;
|
|
@@ -12,6 +12,10 @@ const handleError_1 = require("../../utils/handleError");
|
|
|
12
12
|
*/
|
|
13
13
|
function useCollectionsActions() {
|
|
14
14
|
const dispatch = (0, hooks_1.useReplykeDispatch)();
|
|
15
|
+
// Use a ref so removeFromCollection can read the latest entities without being in deps
|
|
16
|
+
const entitiesByCollectionId = (0, hooks_1.useReplykeSelector)((state) => state.replyke.collections.entitiesByCollectionId);
|
|
17
|
+
const entitiesByCollectionIdRef = (0, react_1.useRef)(entitiesByCollectionId);
|
|
18
|
+
entitiesByCollectionIdRef.current = entitiesByCollectionId;
|
|
15
19
|
// RTK Query hooks
|
|
16
20
|
const [fetchRootCollectionQuery] = (0, collectionsApi_1.useLazyFetchRootCollectionQuery)();
|
|
17
21
|
const [fetchSubCollectionsQuery] = (0, collectionsApi_1.useLazyFetchSubCollectionsQuery)();
|
|
@@ -132,44 +136,51 @@ function useCollectionsActions() {
|
|
|
132
136
|
(0, handleError_1.handleError)(err, "Failed to delete collection");
|
|
133
137
|
}
|
|
134
138
|
}, [deleteCollectionMutation, dispatch]);
|
|
135
|
-
// Add entity to collection
|
|
136
|
-
const addToCollection = (0, react_1.useCallback)(async ({ projectId, collectionId,
|
|
137
|
-
if (!projectId || !collectionId || !
|
|
139
|
+
// Add entity to collection — optimistically prepends to Redux state, reverts on error
|
|
140
|
+
const addToCollection = (0, react_1.useCallback)(async ({ projectId, collectionId, entity, }) => {
|
|
141
|
+
if (!projectId || !collectionId || !entity?.id) {
|
|
138
142
|
console.error("Missing required parameters for adding to collection.");
|
|
139
143
|
return;
|
|
140
144
|
}
|
|
145
|
+
dispatch((0, collectionsSlice_1.prependCollectionEntity)({ collectionId, entity }));
|
|
141
146
|
try {
|
|
142
147
|
await addToCollectionMutation({
|
|
143
148
|
projectId,
|
|
144
149
|
collectionId,
|
|
145
|
-
entityId,
|
|
150
|
+
entityId: entity.id,
|
|
146
151
|
}).unwrap();
|
|
147
|
-
// Note: Entity data is no longer stored in collections.
|
|
148
|
-
// RTK Query will handle cache invalidation for CollectionEntities.
|
|
149
152
|
}
|
|
150
153
|
catch (err) {
|
|
154
|
+
dispatch((0, collectionsSlice_1.removeCollectionEntity)({ collectionId, entityId: entity.id }));
|
|
151
155
|
(0, handleError_1.handleError)(err, "Failed to add entity to collection");
|
|
156
|
+
throw err;
|
|
152
157
|
}
|
|
153
|
-
}, [addToCollectionMutation]);
|
|
154
|
-
// Remove entity from collection
|
|
158
|
+
}, [addToCollectionMutation, dispatch]);
|
|
159
|
+
// Remove entity from collection — optimistically removes from Redux state, reverts on error
|
|
155
160
|
const removeFromCollection = (0, react_1.useCallback)(async ({ projectId, collectionId, entityId, }) => {
|
|
156
161
|
if (!projectId || !collectionId || !entityId) {
|
|
157
162
|
console.error("Missing required parameters for removing from collection.");
|
|
158
163
|
return;
|
|
159
164
|
}
|
|
165
|
+
const currentList = entitiesByCollectionIdRef.current[collectionId] ?? [];
|
|
166
|
+
const originalIndex = currentList.findIndex((e) => e.id === entityId);
|
|
167
|
+
const entityToRestore = originalIndex !== -1 ? currentList[originalIndex] : undefined;
|
|
168
|
+
dispatch((0, collectionsSlice_1.removeCollectionEntity)({ collectionId, entityId }));
|
|
160
169
|
try {
|
|
161
170
|
await removeFromCollectionMutation({
|
|
162
171
|
projectId,
|
|
163
172
|
collectionId,
|
|
164
173
|
entityId,
|
|
165
174
|
}).unwrap();
|
|
166
|
-
// Note: Entity data is no longer stored in collections.
|
|
167
|
-
// RTK Query will handle cache invalidation for CollectionEntities.
|
|
168
175
|
}
|
|
169
176
|
catch (err) {
|
|
177
|
+
if (entityToRestore) {
|
|
178
|
+
dispatch((0, collectionsSlice_1.insertCollectionEntityAt)({ collectionId, entity: entityToRestore, index: originalIndex }));
|
|
179
|
+
}
|
|
170
180
|
(0, handleError_1.handleError)(err, "Failed to remove entity from collection");
|
|
181
|
+
throw err;
|
|
171
182
|
}
|
|
172
|
-
}, [removeFromCollectionMutation]);
|
|
183
|
+
}, [removeFromCollectionMutation, dispatch]);
|
|
173
184
|
// Reset collections
|
|
174
185
|
const resetCollectionsAction = (0, react_1.useCallback)(() => {
|
|
175
186
|
dispatch((0, collectionsSlice_1.resetCollections)());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCollectionsActions.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollectionsActions.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useCollectionsActions.js","sourceRoot":"","sources":["../../../../src/hooks/collections/useCollectionsActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ function useFetchFollowStatus() {
|
|
|
27
27
|
}
|
|
28
28
|
const response = await axios.get(`/${projectId}/users/${userId}/follow`);
|
|
29
29
|
return response.data;
|
|
30
|
-
}, [axios, projectId, user]);
|
|
30
|
+
}, [axios, projectId, user?.id]);
|
|
31
31
|
return fetchFollowStatus;
|
|
32
32
|
}
|
|
33
33
|
exports.default = useFetchFollowStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchFollowStatus.js","sourceRoot":"","sources":["../../../../../src/hooks/relationships/follows/useFetchFollowStatus.tsx"],"names":[],"mappings":";;;;;AAAA,iCAAoC;AACpC,sFAA8D;AAC9D,2EAAmD;AACnD,qCAAqC;AAYrC,SAAS,oBAAoB;IAC3B,MAAM,KAAK,GAAG,IAAA,yBAAe,GAAE,CAAC;IAChC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,oBAAU,GAAE,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,cAAO,GAAE,CAAC;IAE3B,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EACnC,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,iCAAoC;AACpC,sFAA8D;AAC9D,2EAAmD;AACnD,qCAAqC;AAYrC,SAAS,oBAAoB;IAC3B,MAAM,KAAK,GAAG,IAAA,yBAAe,GAAE,CAAC;IAChC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,oBAAU,GAAE,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,cAAO,GAAE,CAAC;IAE3B,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EACnC,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,kBAAe,oBAAoB,CAAC"}
|
|
@@ -15,11 +15,14 @@ function useFollowManager({ userId }) {
|
|
|
15
15
|
const followUser = (0, useFollowUser_1.default)();
|
|
16
16
|
const unfollowUserByUserId = (0, useUnfollowUserByUserId_1.default)();
|
|
17
17
|
const fetchFollowStatus = (0, useFetchFollowStatus_1.default)();
|
|
18
|
+
// Keep a ref so the effect always calls the latest version without being in deps
|
|
19
|
+
const fetchFollowStatusRef = (0, react_1.useRef)(fetchFollowStatus);
|
|
20
|
+
fetchFollowStatusRef.current = fetchFollowStatus;
|
|
18
21
|
(0, react_1.useEffect)(() => {
|
|
19
22
|
const loadFollowStatus = async () => {
|
|
20
23
|
try {
|
|
21
24
|
setIsLoading(true);
|
|
22
|
-
const result = await
|
|
25
|
+
const result = await fetchFollowStatusRef.current({ userId });
|
|
23
26
|
setIsFollowing(result.isFollowing);
|
|
24
27
|
}
|
|
25
28
|
catch (error) {
|
|
@@ -33,7 +36,7 @@ function useFollowManager({ userId }) {
|
|
|
33
36
|
if (userId && user?.id !== userId) {
|
|
34
37
|
loadFollowStatus();
|
|
35
38
|
}
|
|
36
|
-
}, [userId,
|
|
39
|
+
}, [userId, user?.id]);
|
|
37
40
|
const toggleFollow = (0, react_1.useCallback)(async () => {
|
|
38
41
|
if (isFollowing === null || isLoading || user?.id === userId)
|
|
39
42
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFollowManager.js","sourceRoot":"","sources":["../../../../../src/hooks/relationships/follows/useFollowManager.tsx"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"useFollowManager.js","sourceRoot":"","sources":["../../../../../src/hooks/relationships/follows/useFollowManager.tsx"],"names":[],"mappings":";;;;;AAAA,iCAAiE;AACjE,oEAA4C;AAC5C,wFAAgE;AAChE,kFAA0D;AAC1D,iEAAyC;AAYzC,SAAS,gBAAgB,CAAC,EAAE,MAAM,EAAwB;IACxD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,iBAAO,GAAE,CAAC;IAE3B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAiB,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAEjD,MAAM,UAAU,GAAG,IAAA,uBAAa,GAAE,CAAC;IACnC,MAAM,oBAAoB,GAAG,IAAA,iCAAuB,GAAE,CAAC;IACvD,MAAM,iBAAiB,GAAG,IAAA,8BAAoB,GAAE,CAAC;IAEjD,iFAAiF;IACjF,MAAM,oBAAoB,GAAG,IAAA,cAAM,EAAC,iBAAiB,CAAC,CAAC;IACvD,oBAAoB,CAAC,OAAO,GAAG,iBAAiB,CAAC;IAEjD,IAAA,iBAAS,EAAC,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,IAAA,mBAAW,EAAC,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,kBAAe,gBAAgB,CAAC"}
|