@stream-io/feeds-client 0.3.32 → 0.3.33
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/CHANGELOG.md +8 -0
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-bindings.js +39 -33
- package/dist/cjs/react-bindings.js.map +1 -1
- package/dist/es/index.mjs +4 -3
- package/dist/es/index.mjs.map +1 -1
- package/dist/es/react-bindings.mjs +39 -33
- package/dist/es/react-bindings.mjs.map +1 -1
- package/dist/{feeds-client-BNhvggk2.mjs → feeds-client-C-6NrDBy.mjs} +196 -182
- package/dist/feeds-client-C-6NrDBy.mjs.map +1 -0
- package/dist/{feeds-client-B9rwEWH3.js → feeds-client-CyaHg6lu.js} +196 -182
- package/dist/feeds-client-CyaHg6lu.js.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/types/activity-with-state-updates/activity-with-state-updates.d.ts +1 -1
- package/dist/types/activity-with-state-updates/activity-with-state-updates.d.ts.map +1 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/index.d.ts +1 -0
- package/dist/types/bindings/react/hooks/feed-state-hooks/index.d.ts.map +1 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.d.ts.map +1 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useOwnFollowings.d.ts +8 -0
- package/dist/types/bindings/react/hooks/feed-state-hooks/useOwnFollowings.d.ts.map +1 -0
- package/dist/types/common/types.d.ts +1 -1
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-added.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-updated.d.ts.map +1 -1
- package/dist/types/feed/feed.d.ts +2 -1
- package/dist/types/feed/feed.d.ts.map +1 -1
- package/dist/types/feeds-client/feeds-client.d.ts +7 -9
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
- package/dist/types/utils/check-own-fields-equality.d.ts +2 -0
- package/dist/types/utils/check-own-fields-equality.d.ts.map +1 -1
- package/dist/types/utils/throttling/index.d.ts +1 -1
- package/dist/types/utils/throttling/index.d.ts.map +1 -1
- package/dist/types/utils/throttling/throttled-get-batched-own-fields.d.ts +14 -0
- package/dist/types/utils/throttling/throttled-get-batched-own-fields.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/activity-with-state-updates/activity-with-state-updates.ts +7 -2
- package/src/bindings/react/hooks/feed-state-hooks/index.ts +1 -0
- package/src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts +14 -23
- package/src/bindings/react/hooks/feed-state-hooks/useOwnFollowings.ts +18 -0
- package/src/common/types.ts +1 -1
- package/src/feed/event-handlers/activity/handle-activity-added.ts +0 -6
- package/src/feed/event-handlers/activity/handle-activity-updated.ts +0 -4
- package/src/feed/feed.ts +51 -39
- package/src/feeds-client/feeds-client.ts +88 -91
- package/src/utils/check-own-fields-equality.ts +37 -10
- package/src/utils/throttling/index.ts +1 -1
- package/src/utils/throttling/{throttled-get-batched-own-capabilities.ts → throttled-get-batched-own-fields.ts} +10 -10
- package/dist/feeds-client-B9rwEWH3.js.map +0 -1
- package/dist/feeds-client-BNhvggk2.mjs.map +0 -1
- package/dist/types/utils/throttling/throttled-get-batched-own-capabilities.d.ts +0 -14
- package/dist/types/utils/throttling/throttled-get-batched-own-capabilities.d.ts.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const reactBindings = require("@stream-io/state-store/react-bindings");
|
|
4
4
|
const react = require("react");
|
|
5
|
-
const feedsClient = require("../feeds-client-
|
|
5
|
+
const feedsClient = require("../feeds-client-CyaHg6lu.js");
|
|
6
6
|
const jsxRuntime = require("react/jsx-runtime");
|
|
7
7
|
const useCreateFeedsClient = ({
|
|
8
8
|
apiKey,
|
|
@@ -48,18 +48,18 @@ const useFeedsClient = () => {
|
|
|
48
48
|
};
|
|
49
49
|
const useClientConnectedUser = () => {
|
|
50
50
|
const client = useFeedsClient();
|
|
51
|
-
const { user } = reactBindings.useStateStore(client?.state, selector$
|
|
51
|
+
const { user } = reactBindings.useStateStore(client?.state, selector$d) ?? {};
|
|
52
52
|
return user;
|
|
53
53
|
};
|
|
54
|
-
const selector$
|
|
54
|
+
const selector$d = (nextState) => ({
|
|
55
55
|
user: nextState.connected_user
|
|
56
56
|
});
|
|
57
57
|
const useWsConnectionState = () => {
|
|
58
58
|
const client = useFeedsClient();
|
|
59
|
-
const { is_healthy } = reactBindings.useStateStore(client?.state, selector$
|
|
59
|
+
const { is_healthy } = reactBindings.useStateStore(client?.state, selector$c) ?? {};
|
|
60
60
|
return { is_healthy };
|
|
61
61
|
};
|
|
62
|
-
const selector$
|
|
62
|
+
const selector$c = (nextState) => ({
|
|
63
63
|
is_healthy: nextState.is_ws_connection_healthy
|
|
64
64
|
});
|
|
65
65
|
const StreamFeedContext = react.createContext(void 0);
|
|
@@ -76,7 +76,7 @@ const useStableCallback = (callback) => {
|
|
|
76
76
|
const useFeedActivities = (feedFromProps) => {
|
|
77
77
|
const feedFromContext = useFeedContext();
|
|
78
78
|
const feed = feedFromProps ?? feedFromContext;
|
|
79
|
-
const data = reactBindings.useStateStore(feed?.state, selector$
|
|
79
|
+
const data = reactBindings.useStateStore(feed?.state, selector$b);
|
|
80
80
|
const loadNextPage = useStableCallback(async () => {
|
|
81
81
|
if (!feed || !data?.has_next_page || data?.is_loading) {
|
|
82
82
|
return;
|
|
@@ -85,7 +85,7 @@ const useFeedActivities = (feedFromProps) => {
|
|
|
85
85
|
});
|
|
86
86
|
return react.useMemo(() => ({ ...data, loadNextPage }), [data, loadNextPage]);
|
|
87
87
|
};
|
|
88
|
-
const selector$
|
|
88
|
+
const selector$b = ({
|
|
89
89
|
is_loading_activities,
|
|
90
90
|
next,
|
|
91
91
|
activities = []
|
|
@@ -134,26 +134,23 @@ function useComments({
|
|
|
134
134
|
}, [data, loadNextPage]);
|
|
135
135
|
}
|
|
136
136
|
const stableEmptyArray = [];
|
|
137
|
+
const selector$a = (currentState) => {
|
|
138
|
+
return {
|
|
139
|
+
feedOwnCapabilities: currentState.own_capabilities ?? stableEmptyArray
|
|
140
|
+
};
|
|
141
|
+
};
|
|
137
142
|
const useOwnCapabilities = (feedFromProps) => {
|
|
138
143
|
const client = useFeedsClient();
|
|
139
144
|
const feedFromContext = useFeedContext();
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
return {
|
|
148
|
-
feedOwnCapabilities: currentState.own_capabilities_by_fid[fid] ?? stableEmptyArray
|
|
149
|
-
};
|
|
150
|
-
},
|
|
151
|
-
[fid]
|
|
152
|
-
);
|
|
153
|
-
const { feedOwnCapabilities = stableEmptyArray } = reactBindings.useStateStore(client?.state, selector2) ?? {};
|
|
145
|
+
let feed = feedFromProps ?? feedFromContext;
|
|
146
|
+
if (typeof feed === "string") {
|
|
147
|
+
const [groupId, id] = feed.split(":");
|
|
148
|
+
feed = groupId && id ? client?.feed(groupId, id) : void 0;
|
|
149
|
+
}
|
|
150
|
+
const { feedOwnCapabilities = stableEmptyArray } = reactBindings.useStateStore(feed?.state, selector$a) ?? {};
|
|
154
151
|
return feedOwnCapabilities;
|
|
155
152
|
};
|
|
156
|
-
const selector$
|
|
153
|
+
const selector$9 = ({
|
|
157
154
|
follower_count,
|
|
158
155
|
followers,
|
|
159
156
|
followers_pagination
|
|
@@ -165,7 +162,7 @@ const selector$8 = ({
|
|
|
165
162
|
function useFollowers(feedFromProps) {
|
|
166
163
|
const feedFromContext = useFeedContext();
|
|
167
164
|
const feed = feedFromProps ?? feedFromContext;
|
|
168
|
-
const data = reactBindings.useStateStore(feed?.state, selector$
|
|
165
|
+
const data = reactBindings.useStateStore(feed?.state, selector$9);
|
|
169
166
|
const loadNextPage = react.useCallback(
|
|
170
167
|
(...options) => feed?.loadNextPageFollowers(...options),
|
|
171
168
|
[feed]
|
|
@@ -185,7 +182,7 @@ function useFollowers(feedFromProps) {
|
|
|
185
182
|
};
|
|
186
183
|
}, [data, loadNextPage]);
|
|
187
184
|
}
|
|
188
|
-
const selector$
|
|
185
|
+
const selector$8 = ({
|
|
189
186
|
following_count,
|
|
190
187
|
following,
|
|
191
188
|
following_pagination
|
|
@@ -197,7 +194,7 @@ const selector$7 = ({
|
|
|
197
194
|
function useFollowing(feedFromProps) {
|
|
198
195
|
const feedFromContext = useFeedContext();
|
|
199
196
|
const feed = feedFromProps ?? feedFromContext;
|
|
200
|
-
const data = reactBindings.useStateStore(feed?.state, selector$
|
|
197
|
+
const data = reactBindings.useStateStore(feed?.state, selector$8);
|
|
201
198
|
const loadNextPage = react.useCallback(
|
|
202
199
|
(...options) => feed?.loadNextPageFollowing(...options),
|
|
203
200
|
[feed]
|
|
@@ -220,9 +217,9 @@ function useFollowing(feedFromProps) {
|
|
|
220
217
|
const useFeedMetadata = (feedFromProps) => {
|
|
221
218
|
const feedFromContext = useFeedContext();
|
|
222
219
|
const feed = feedFromProps ?? feedFromContext;
|
|
223
|
-
return reactBindings.useStateStore(feed?.state, selector$
|
|
220
|
+
return reactBindings.useStateStore(feed?.state, selector$7);
|
|
224
221
|
};
|
|
225
|
-
const selector$
|
|
222
|
+
const selector$7 = ({
|
|
226
223
|
follower_count = 0,
|
|
227
224
|
following_count = 0,
|
|
228
225
|
created_by,
|
|
@@ -238,12 +235,12 @@ const selector$6 = ({
|
|
|
238
235
|
const useOwnFollows = (feedFromProps) => {
|
|
239
236
|
const feedFromContext = useFeedContext();
|
|
240
237
|
const feed = feedFromProps ?? feedFromContext;
|
|
241
|
-
return reactBindings.useStateStore(feed?.state, selector$
|
|
238
|
+
return reactBindings.useStateStore(feed?.state, selector$6);
|
|
242
239
|
};
|
|
243
|
-
const selector$
|
|
240
|
+
const selector$6 = ({ own_follows }) => ({
|
|
244
241
|
own_follows
|
|
245
242
|
});
|
|
246
|
-
const selector$
|
|
243
|
+
const selector$5 = ({ notification_status }) => ({
|
|
247
244
|
unread: notification_status?.unread ?? 0,
|
|
248
245
|
unseen: notification_status?.unseen ?? 0,
|
|
249
246
|
last_read_at: notification_status?.last_read_at,
|
|
@@ -254,9 +251,9 @@ const selector$4 = ({ notification_status }) => ({
|
|
|
254
251
|
function useNotificationStatus(feedFromProps) {
|
|
255
252
|
const feedFromContext = useFeedContext();
|
|
256
253
|
const feed = feedFromProps ?? feedFromContext;
|
|
257
|
-
return reactBindings.useStateStore(feed?.state, selector$
|
|
254
|
+
return reactBindings.useStateStore(feed?.state, selector$5);
|
|
258
255
|
}
|
|
259
|
-
const selector$
|
|
256
|
+
const selector$4 = ({
|
|
260
257
|
is_loading_activities,
|
|
261
258
|
next,
|
|
262
259
|
aggregated_activities = []
|
|
@@ -268,7 +265,7 @@ const selector$3 = ({
|
|
|
268
265
|
function useAggregatedActivities(feedFromProps) {
|
|
269
266
|
const feedFromContext = useFeedContext();
|
|
270
267
|
const feed = feedFromProps ?? feedFromContext;
|
|
271
|
-
const data = reactBindings.useStateStore(feed?.state, selector$
|
|
268
|
+
const data = reactBindings.useStateStore(feed?.state, selector$4);
|
|
272
269
|
const loadNextPage = useStableCallback(async () => {
|
|
273
270
|
if (!feed || !data?.has_next_page || data?.is_loading) {
|
|
274
271
|
return;
|
|
@@ -369,6 +366,14 @@ function useActivityComments({
|
|
|
369
366
|
};
|
|
370
367
|
}, [data, loadNextPage]);
|
|
371
368
|
}
|
|
369
|
+
const useOwnFollowings = (feedFromProps) => {
|
|
370
|
+
const feedFromContext = useFeedContext();
|
|
371
|
+
const feed = feedFromProps ?? feedFromContext;
|
|
372
|
+
return reactBindings.useStateStore(feed?.state, selector$3);
|
|
373
|
+
};
|
|
374
|
+
const selector$3 = ({ own_followings }) => ({
|
|
375
|
+
own_followings
|
|
376
|
+
});
|
|
372
377
|
const StreamSearchResultsContext = react.createContext(void 0);
|
|
373
378
|
const useSearchResultsContext = () => {
|
|
374
379
|
return react.useContext(StreamSearchResultsContext);
|
|
@@ -466,6 +471,7 @@ exports.useIsAggregatedActivityRead = useIsAggregatedActivityRead;
|
|
|
466
471
|
exports.useIsAggregatedActivitySeen = useIsAggregatedActivitySeen;
|
|
467
472
|
exports.useNotificationStatus = useNotificationStatus;
|
|
468
473
|
exports.useOwnCapabilities = useOwnCapabilities;
|
|
474
|
+
exports.useOwnFollowings = useOwnFollowings;
|
|
469
475
|
exports.useOwnFollows = useOwnFollows;
|
|
470
476
|
exports.useSearchContext = useSearchContext;
|
|
471
477
|
exports.useSearchQuery = useSearchQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-bindings.js","sources":["../../src/bindings/react/hooks/useCreateFeedsClient.ts","../../src/bindings/react/contexts/StreamFeedsContext.tsx","../../src/bindings/react/hooks/client-state-hooks/useClientConnectedUser.ts","../../src/bindings/react/hooks/client-state-hooks/useWsConnectionState.ts","../../src/bindings/react/contexts/StreamFeedContext.tsx","../../src/bindings/react/hooks/internal/useStableCallback.ts","../../src/bindings/react/hooks/feed-state-hooks/useFeedActivities.ts","../../src/bindings/react/hooks/feed-state-hooks/useComments.ts","../../src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts","../../src/bindings/react/hooks/feed-state-hooks/useFollowers.ts","../../src/bindings/react/hooks/feed-state-hooks/useFollowing.ts","../../src/bindings/react/hooks/feed-state-hooks/useFeedMetadata.ts","../../src/bindings/react/hooks/feed-state-hooks/useOwnFollows.ts","../../src/bindings/react/hooks/feed-state-hooks/useNotificationStatus.ts","../../src/bindings/react/hooks/feed-state-hooks/useAggregatedActivities.ts","../../src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.ts","../../src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.ts","../../src/bindings/react/hooks/feed-state-hooks/useActivityComments.ts","../../src/bindings/react/contexts/StreamSearchResultsContext.tsx","../../src/bindings/react/hooks/search-state-hooks/useSearchResult.ts","../../src/bindings/react/contexts/StreamSearchContext.tsx","../../src/bindings/react/hooks/search-state-hooks/useSearchQuery.ts","../../src/bindings/react/hooks/search-state-hooks/useSearchSources.ts","../../src/bindings/react/wrappers/StreamFeeds.tsx","../../src/bindings/react/wrappers/StreamFeed.tsx","../../src/bindings/react/wrappers/StreamSearch.tsx","../../src/bindings/react/wrappers/StreamSearchResults.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { FeedsClient } from '../../../feeds-client';\nimport type { TokenOrProvider } from '../../../types';\nimport type { UserRequest } from '../../../gen/models';\nimport type { FeedsClientOptions } from '../../../common/types';\n\n/**\n * A React hook to create, connect and return an instance of `FeedsClient`.\n */\nexport const useCreateFeedsClient = ({\n apiKey,\n tokenOrProvider,\n userData,\n options,\n}: {\n apiKey: string;\n tokenOrProvider: TokenOrProvider;\n userData: UserRequest;\n options?: FeedsClientOptions;\n}) => {\n const [client, setClient] = useState<FeedsClient | null>(\n () => new FeedsClient(apiKey, options),\n );\n const [error, setError] = useState<Error | null>(null);\n const [cachedUserData, setCachedUserData] = useState(userData);\n\n const [cachedOptions] = useState(options);\n\n if (error) {\n throw error;\n }\n\n if (userData.id !== cachedUserData.id) {\n setCachedUserData(userData);\n }\n\n useEffect(() => {\n const _client = new FeedsClient(apiKey, cachedOptions);\n\n const connectionPromise = _client\n .connectUser(cachedUserData, tokenOrProvider)\n .then(() => {\n setError(null);\n })\n .catch((err) => {\n setError(err);\n });\n\n setClient(_client);\n\n return () => {\n setClient(null);\n connectionPromise\n .then(() => {\n setError(null);\n return _client.disconnectUser();\n })\n .catch((err) => {\n setError(err);\n });\n };\n }, [apiKey, cachedUserData, cachedOptions, tokenOrProvider]);\n\n return client;\n};\n","import { createContext, useContext } from 'react';\n\nimport type { FeedsClient } from '../../../feeds-client';\n\nexport const StreamFeedsContext = createContext<FeedsClient | undefined>(undefined);\n\n/**\n * The props for the StreamFeedsProvider component.\n */\nexport type StreamFeedsContextProps = {\n /**\n * The client instance to provide to the component tree.\n */\n client: FeedsClient;\n};\n\n/**\n * Hook to access the nearest FeedsClient instance.\n */\nexport const useFeedsClient = () => {\n return useContext(StreamFeedsContext);\n};\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedsClient } from '../../contexts/StreamFeedsContext';\nimport type { FeedsClientState } from '../../../../feeds-client';\n\n/**\n * A React hook that returns the currently connected user on a `FeedsClient` instance and null otherwise.\n */\nexport const useClientConnectedUser = () => {\n const client = useFeedsClient();\n\n const { user } = useStateStore(client?.state, selector) ?? {};\n\n return user;\n};\n\nconst selector = (nextState: FeedsClientState) => ({\n user: nextState.connected_user,\n});\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedsClient } from '../../contexts/StreamFeedsContext';\nimport type { FeedsClientState } from '../../../../feeds-client';\n\n/**\n * A React hook that returns the websocket connection state of `FeedsClient`.\n */\nexport const useWsConnectionState = () => {\n const client = useFeedsClient();\n\n const { is_healthy } = useStateStore(client?.state, selector) ?? {}\n\n return { is_healthy };\n};\n\nconst selector = (nextState: FeedsClientState) => ({\n is_healthy: nextState.is_ws_connection_healthy,\n});\n","import { createContext, useContext } from 'react';\n\nimport type { Feed } from '../../../feed';\n\nexport const StreamFeedContext = createContext<Feed | undefined>(undefined);\n\n/**\n * The props for the StreamFeedProvider component.\n */\nexport type StreamFeedContextProps = {\n feed: Feed;\n};\n\n/**\n * Hook to access the nearest Feed instance.\n */\nexport const useFeedContext = () => {\n return useContext(StreamFeedContext);\n};\n","import { useCallback, useRef } from 'react';\n\nexport type StableCallback<A extends unknown[], R> = (...args: A) => R;\n\n/**\n * A utility hook implementing a stable callback. It takes in an unstable method that\n * is supposed to be invoked somewhere deeper in the DOM tree without making it\n * change its reference every time the parent component rerenders. It will also return\n * the value of the callback if it does return one.\n * A common use-case would be having a function whose invocation depends on state\n * somewhere high up in the DOM tree and wanting to use the same function deeper\n * down, for example in a leaf node and simply using useCallback results in\n * cascading dependency hell. If we wrap it in useStableCallback, we would be able\n * to:\n * - Use the same function as a dependency of another hook (since it is stable)\n * - Still invoke it and get the latest state\n *\n * **Caveats:**\n * - Never wrap a function that is supposed to return a React.ReactElement in\n * useStableCallback, since React will not know that the DOM needs to be updated\n * whenever the callback value changes (for example, renderItem from FlatList must\n * never be wrapped in this hook)\n * - Always prefer using a standard useCallback/stable function wherever possible\n * (the purpose of useStableCallback is to bridge the gap between top level contexts\n * and cascading rereders in downstream components - **not** as an escape hatch)\n * @param callback - the callback we want to stabilize\n */\nexport const useStableCallback = <A extends unknown[], R>(\n callback: StableCallback<A, R>,\n): StableCallback<A, R> => {\n const ref = useRef(callback);\n ref.current = callback;\n\n return useCallback<StableCallback<A, R>>((...args) => {\n return ref.current(...args);\n }, []);\n};\n","import { useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { useStableCallback } from '../internal';\nimport type { Feed, FeedState } from '../../../../feed';\n\n/**\n * A React hook that returns a reactive object containing the current activities,\n * loading state and whether there is a next page to paginate to or not.\n */\nexport const useFeedActivities = (feedFromProps?: Feed) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useStableCallback(async () => {\n if (!feed || !data?.has_next_page || data?.is_loading) {\n return;\n }\n\n await feed.getNextPage();\n });\n\n return useMemo(() => ({ ...data, loadNextPage }), [data, loadNextPage]);\n};\n\nconst selector = ({\n is_loading_activities,\n next,\n activities = [],\n}: FeedState) => ({\n is_loading: is_loading_activities,\n has_next_page: typeof next !== 'undefined',\n activities,\n});\n","import { useCallback, useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { checkHasAnotherPage, isCommentResponse } from '../../../../utils';\nimport type { ActivityResponse, CommentResponse } from '../../../../gen/models';\nimport type { Feed, FeedState } from '../../../../feed';\nimport type { CommentParent } from '../../../../types';\n\ntype UseCommentsReturnType<T extends ActivityResponse | CommentResponse> = {\n comments: NonNullable<\n FeedState['comments_by_entity_id'][T['id']]\n >['comments'];\n comments_pagination: NonNullable<\n FeedState['comments_by_entity_id'][T['id']]\n >['pagination'];\n has_next_page: boolean;\n is_loading_next_page: boolean;\n loadNextPage: (\n request?: T extends CommentResponse\n ? Parameters<Feed['loadNextPageCommentReplies']>[1]\n : Parameters<Feed['loadNextPageActivityComments']>[1],\n ) => Promise<void>;\n};\n\n/**\n * @deprecated Use `useActivityComments` instead.\n * @param\n */\nexport function useComments<T extends CommentParent>(_: {\n feed: Feed;\n parent: T;\n}): UseCommentsReturnType<T>;\nexport function useComments<T extends CommentParent>(_: {\n feed?: Feed;\n parent: T;\n}): UseCommentsReturnType<T> | undefined;\nexport function useComments<T extends CommentParent>({\n feed: feedFromProps,\n parent,\n}: {\n feed?: Feed;\n /**\n * The parent (activity or comment) for which to fetch comments.\n */\n parent: T;\n}) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const selector = useCallback(\n (state: FeedState) => ({\n comments: state.comments_by_entity_id?.[parent.id]?.comments,\n comments_pagination: state.comments_by_entity_id?.[parent.id]?.pagination,\n }),\n [parent.id],\n );\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useMemo<\n UseCommentsReturnType<T>['loadNextPage'] | undefined\n >(() => {\n if (!feed) return undefined;\n\n return (request) => {\n if (isCommentResponse(parent)) {\n return feed.loadNextPageCommentReplies(parent, request);\n } else {\n return feed.loadNextPageActivityComments(parent, request);\n }\n };\n }, [feed, parent]);\n\n return useMemo(() => {\n if (!data) {\n return undefined;\n }\n\n return {\n ...data,\n has_next_page: checkHasAnotherPage(\n data.comments,\n data.comments_pagination?.next,\n ),\n is_loading_next_page:\n data?.comments_pagination?.loading_next_page ?? false,\n loadNextPage,\n };\n }, [data, loadNextPage]);\n}\n","import { useCallback } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { useFeedsClient } from '../../contexts/StreamFeedsContext';\nimport type { Feed } from '../../../../feed';\nimport type { FeedOwnCapability } from '../../../../gen/models';\nimport type { FeedsClientState } from '../../../../feeds-client';\n\nconst stableEmptyArray: readonly FeedOwnCapability[] = [];\n\nexport const useOwnCapabilities = (feedFromProps?: Feed | string) => {\n const client = useFeedsClient();\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n const fid = typeof feed === 'string' ? feed : feed?.feed;\n\n const selector = useCallback(\n (currentState: FeedsClientState) => {\n if (!fid) {\n return { feedOwnCapabilities: stableEmptyArray };\n }\n\n return {\n feedOwnCapabilities:\n currentState.own_capabilities_by_fid[fid] ?? stableEmptyArray,\n };\n },\n [fid],\n );\n\n const { feedOwnCapabilities = stableEmptyArray } =\n useStateStore(client?.state, selector) ?? {};\n\n // console.log('GETTING CAPA: ', feed?.feed, feedOwnCapabilities);\n\n return feedOwnCapabilities;\n};\n","import { useCallback, useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\nimport { checkHasAnotherPage } from '../../../../utils';\n\nconst selector = ({\n follower_count,\n followers,\n followers_pagination,\n}: FeedState) => ({\n follower_count,\n followers,\n followers_pagination,\n});\n\ntype UseFollowersReturnType = ReturnType<typeof selector> & {\n is_loading_next_page: boolean;\n has_next_page: boolean;\n loadNextPage: (\n ...options: Parameters<Feed['loadNextPageFollowers']>\n ) => Promise<void>;\n};\n\nexport function useFollowers(feed: Feed): UseFollowersReturnType;\nexport function useFollowers(feed?: Feed): UseFollowersReturnType | undefined;\nexport function useFollowers(feedFromProps?: Feed) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useCallback(\n (...options: Parameters<Feed['loadNextPageFollowers']>) =>\n feed?.loadNextPageFollowers(...options),\n [feed],\n );\n\n return useMemo(() => {\n if (!data) {\n return undefined;\n }\n\n return {\n ...data,\n is_loading_next_page:\n data.followers_pagination?.loading_next_page ?? false,\n has_next_page: checkHasAnotherPage(\n data.followers,\n data.followers_pagination?.next,\n ),\n loadNextPage,\n };\n }, [data, loadNextPage]);\n}\n","import { useCallback, useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { checkHasAnotherPage } from '../../../../utils';\nimport type { Feed, FeedState } from '../../../../feed';\n\nconst selector = ({\n following_count,\n following,\n following_pagination,\n}: FeedState) => ({\n following_count,\n following,\n following_pagination,\n});\n\ntype UseFollowingReturnType = ReturnType<typeof selector> & {\n is_loading_next_page: boolean;\n has_next_page: boolean;\n loadNextPage: (\n ...options: Parameters<Feed['loadNextPageFollowers']>\n ) => Promise<void>;\n};\n\nexport function useFollowing(feed: Feed): UseFollowingReturnType;\nexport function useFollowing(feed?: Feed): UseFollowingReturnType | undefined;\nexport function useFollowing(feedFromProps?: Feed) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useCallback(\n (...options: Parameters<Feed['loadNextPageFollowing']>) =>\n feed?.loadNextPageFollowing(...options),\n [feed],\n );\n\n return useMemo(() => {\n if (!data) {\n return undefined;\n }\n\n return {\n ...data,\n is_loading_next_page:\n data.following_pagination?.loading_next_page ?? false,\n has_next_page: checkHasAnotherPage(\n data.following,\n data.following_pagination?.next,\n ),\n loadNextPage,\n };\n }, [data, loadNextPage]);\n}\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\n\n/**\n * A React hook that returns a reactive object containing some often used\n * metadata for a feed.\n */\nexport const useFeedMetadata = (feedFromProps?: Feed) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n return useStateStore(feed?.state, selector);\n};\n\nconst selector = ({\n follower_count = 0,\n following_count = 0,\n created_by,\n created_at,\n updated_at,\n}: FeedState) => ({\n created_by,\n follower_count,\n following_count,\n created_at,\n updated_at,\n});\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\n\n/**\n * A React hook that returns a reactive array of feeds that the current user\n * owns and are following the respective feed that we are observing.\n */\nexport const useOwnFollows = (feedFromProps?: Feed) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n return useStateStore(feed?.state, selector);\n};\n\nconst selector = ({ own_follows }: FeedState) => ({\n own_follows,\n});\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\nimport type { NotificationStatusResponse } from '../../../../gen/models';\n\nconst selector = ({ notification_status }: FeedState) =>\n ({\n unread: notification_status?.unread ?? 0,\n unseen: notification_status?.unseen ?? 0,\n last_read_at: notification_status?.last_read_at,\n last_seen_at: notification_status?.last_seen_at,\n read_activities: notification_status?.read_activities,\n seen_activities: notification_status?.seen_activities,\n }) satisfies NotificationStatusResponse;\n\ntype UseNotificationStatusReturnType = ReturnType<typeof selector>;\n\nexport function useNotificationStatus(\n feed: Feed,\n): UseNotificationStatusReturnType;\nexport function useNotificationStatus(\n feed?: Feed,\n): UseNotificationStatusReturnType | undefined;\nexport function useNotificationStatus(feedFromProps?: Feed) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n return useStateStore(feed?.state, selector);\n}\n","import { useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { useStableCallback } from '../internal';\nimport type { Feed, FeedState } from '../../../../feed';\n\nconst selector = ({\n is_loading_activities,\n next,\n aggregated_activities = [],\n}: FeedState) => ({\n is_loading: is_loading_activities,\n has_next_page: typeof next !== 'undefined',\n aggregated_activities,\n});\n\ntype UseAggregatedActivitiesReturnType = ReturnType<typeof selector> & {\n loadNextPage: () => Promise<void>;\n};\n\n/**\n * A React hook that returns a reactive object containing the current aggregated activities,\n * loading state and whether there is a next page to paginate to or not.\n */\nexport function useAggregatedActivities(\n feedFromProps: Feed,\n): UseAggregatedActivitiesReturnType;\nexport function useAggregatedActivities(\n feedFromProps?: Feed,\n): UseAggregatedActivitiesReturnType | undefined;\nexport function useAggregatedActivities(feedFromProps?: Feed) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useStableCallback(async () => {\n if (!feed || !data?.has_next_page || data?.is_loading) {\n return;\n }\n\n await feed.getNextPage();\n });\n\n return useMemo(\n () => (data ? { ...data, loadNextPage } : undefined),\n [data, loadNextPage],\n );\n}\n","import { useMemo } from 'react';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { useNotificationStatus } from './useNotificationStatus';\nimport type { Feed } from '../../../../feed';\nimport type { AggregatedActivityResponse } from '../../../../gen/models';\n\nexport const useIsAggregatedActivityRead = ({\n feed: feedFromProps,\n aggregatedActivity,\n}: {\n feed?: Feed;\n aggregatedActivity: AggregatedActivityResponse;\n}) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const { read_activities: readActivities, last_read_at: lastReadAt } =\n useNotificationStatus(feed) ?? {};\n\n const group = aggregatedActivity.group;\n\n return useMemo(\n () =>\n (lastReadAt &&\n aggregatedActivity.updated_at.getTime() <= lastReadAt.getTime()) ||\n (readActivities ?? []).includes(group),\n [lastReadAt, aggregatedActivity.updated_at, readActivities, group],\n );\n};\n","import { useMemo } from 'react';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { useNotificationStatus } from './useNotificationStatus';\nimport type { Feed } from '../../../../feed';\nimport type { AggregatedActivityResponse } from '../../../../gen/models';\n\nexport const useIsAggregatedActivitySeen = ({\n feed: feedFromProps,\n aggregatedActivity,\n}: {\n feed?: Feed;\n aggregatedActivity: AggregatedActivityResponse;\n}) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const { seen_activities: seenActivities, last_seen_at: lastSeenAt } =\n useNotificationStatus(feed) ?? {};\n\n const group = aggregatedActivity.group;\n\n return useMemo(\n () =>\n (lastSeenAt &&\n aggregatedActivity.updated_at.getTime() < lastSeenAt.getTime()) ||\n (seenActivities ?? []).includes(group),\n [lastSeenAt, aggregatedActivity.updated_at, seenActivities, group],\n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\nimport type { StateStore } from '@stream-io/state-store';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { checkHasAnotherPage } from '../../../../utils';\nimport type { Feed, FeedState } from '../../../../feed';\nimport type { ActivityState, ActivityWithStateUpdates } from '../../../../activity-with-state-updates/activity-with-state-updates';\nimport type { ActivityResponse, CommentResponse } from '../../../../gen/models';\n\nconst canLoadComments = (\n feedOrActivity: Feed | ActivityResponse | ActivityWithStateUpdates,\n): feedOrActivity is ActivityWithStateUpdates | Feed => {\n return (\n 'loadNextPageCommentReplies' in feedOrActivity &&\n 'loadNextPageActivityComments' in feedOrActivity\n );\n};\n\ntype UseCommentsReturnType<T extends ActivityResponse | CommentResponse> = {\n comments: NonNullable<\n FeedState['comments_by_entity_id'][T['id']]\n >['comments'];\n comments_pagination: NonNullable<\n FeedState['comments_by_entity_id'][T['id']]\n >['pagination'];\n has_next_page: boolean;\n is_loading_next_page: boolean;\n loadNextPage: (\n request?: T extends CommentResponse\n ? Parameters<Feed['loadNextPageCommentReplies']>[1]\n : Parameters<Feed['loadNextPageActivityComments']>[1],\n ) => Promise<void>;\n};\n\nexport function useActivityComments({\n feed: feedFromProps,\n parentComment,\n activity,\n}: {\n feed?: Feed;\n parentComment?: CommentResponse;\n activity?: ActivityResponse | ActivityWithStateUpdates;\n}) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n const feedOrActivity = feed ?? activity;\n\n if (!feedOrActivity) {\n throw new Error('Feed or activity is required');\n }\n\n if (!canLoadComments(feedOrActivity)) {\n throw new Error('Feed or activity does not support loading comments');\n }\n\n if (!(activity || parentComment)) {\n throw new Error('Activity or parent comment is required');\n }\n\n const entityId = parentComment?.id ?? activity?.id ?? '';\n const selector = useCallback(\n (state: FeedState | ActivityState) => ({\n comments: state.comments_by_entity_id?.[entityId]?.comments,\n comments_pagination: state.comments_by_entity_id?.[entityId]?.pagination,\n }),\n [entityId],\n );\n\n const data = useStateStore(\n feedOrActivity.state as StateStore<FeedState | ActivityState>,\n selector,\n );\n\n const loadNextPage = useCallback<\n UseCommentsReturnType<ActivityResponse | CommentResponse>['loadNextPage']\n >(\n (request) => {\n if (parentComment) {\n return feedOrActivity.loadNextPageCommentReplies(\n parentComment,\n request,\n );\n } else {\n if (activity && canLoadComments(activity)) {\n return activity.loadNextPageActivityComments(request);\n } else if (feed) {\n return feed.loadNextPageActivityComments(activity?.id ?? '', request);\n } else {\n throw new Error('Activity or feed is required');\n }\n }\n },\n [feedOrActivity, feed, parentComment, activity],\n );\n\n return useMemo(() => {\n return {\n ...data,\n has_next_page: checkHasAnotherPage(\n data.comments,\n data.comments_pagination?.next,\n ),\n is_loading_next_page:\n data?.comments_pagination?.loading_next_page ?? false,\n loadNextPage,\n };\n }, [data, loadNextPage]);\n}\n","import { createContext, useContext } from 'react';\n\nimport type { SearchSource } from '../../../common/search';\n\nexport const StreamSearchResultsContext = createContext<\n SearchSource | undefined\n>(undefined);\n\n/**\n * The props for the StreamSearchResultsProvider component.\n */\nexport type StreamSearchResultsContextProps = {\n source: SearchSource;\n};\n\n/**\n * Hook to access the nearest SearchSource instance.\n */\nexport const useSearchResultsContext = () => {\n return useContext(StreamSearchResultsContext);\n};\n","import { useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useSearchResultsContext } from '../../contexts/StreamSearchResultsContext';\nimport { useStableCallback } from '../internal';\nimport type { SearchSourceState } from '../../../../common/types';\nimport type { SearchSource } from '../../../../common/search';\n\nexport const useSearchResult = (sourceFromProps?: SearchSource) => {\n const sourceFromContext = useSearchResultsContext();\n const source = sourceFromProps ?? sourceFromContext;\n\n const { items, error, isLoading, hasNext } =\n useStateStore(source?.state, selector) ?? {};\n\n const loadMore = useStableCallback(async () => {\n if (hasNext) {\n source?.search();\n }\n });\n\n return useMemo(\n () => ({ items, error, isLoading, hasNext, loadMore }),\n [error, hasNext, isLoading, items, loadMore],\n );\n};\n\nconst selector = ({\n items,\n isLoading,\n hasNext,\n lastQueryError,\n}: SearchSourceState) => ({\n items,\n isLoading,\n hasNext,\n error: lastQueryError,\n});\n","import { createContext, useContext } from 'react';\n\nimport type { SearchController } from '../../../common/search';\n\nexport const StreamSearchContext = createContext<SearchController | undefined>(undefined);\n\n/**\n * The props for the StreamSearchProvider component.\n */\nexport type StreamSearchContextProps = {\n searchController: SearchController;\n};\n\n/**\n * Hook to access the nearest SearchController instance.\n */\nexport const useSearchContext = () => {\n return useContext(StreamSearchContext);\n};\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport type {\n SearchController,\n SearchControllerState,\n} from '../../../../common/search';\nimport { useSearchContext } from '../../contexts/StreamSearchContext';\n\nexport const useSearchQuery = (controllerFromProps?: SearchController) => {\n const controllerFromState = useSearchContext();\n const controller = controllerFromProps ?? controllerFromState;\n\n return useStateStore(controller?.state, selector);\n};\n\nconst selector = ({ searchQuery }: SearchControllerState) => ({\n searchQuery,\n});\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useSearchContext } from '../../contexts/StreamSearchContext';\nimport type { SearchController, SearchControllerState } from '../../../../common/search';\n\nexport const useSearchSources = (controllerFromProps?: SearchController) => {\n const controllerFromState = useSearchContext();\n const controller = controllerFromProps ?? controllerFromState;\n\n return useStateStore(controller?.state, selector);\n};\n\nconst selector = ({ sources }: SearchControllerState) => ({\n sources,\n});\n","import type { PropsWithChildren } from 'react';\nimport { StreamFeedsContext } from '../contexts/StreamFeedsContext';\nimport type { StreamFeedsContextProps } from '../contexts/StreamFeedsContext';\n\nexport const StreamFeeds = ({ client, children }: PropsWithChildren<StreamFeedsContextProps>) => {\n return (\n <StreamFeedsContext.Provider value={client}>\n {children}\n </StreamFeedsContext.Provider>\n );\n};\n\nStreamFeeds.displayName = 'StreamFeeds';\n","import type { PropsWithChildren } from 'react';\n\nimport { StreamFeedContext } from '../contexts/StreamFeedContext';\nimport type { Feed } from '../../../feed';\n\n/**\n * The props for the StreamFeed component. It accepts a `Feed` instance.\n */\nexport type StreamFeedProps = {\n feed: Feed;\n};\n\nexport const StreamFeed = ({\n feed,\n children,\n}: PropsWithChildren<StreamFeedProps>) => {\n return (\n <StreamFeedContext.Provider value={feed}>\n {children}\n </StreamFeedContext.Provider>\n );\n};\n\nStreamFeed.displayName = 'StreamFeed';\n","import type { PropsWithChildren } from 'react';\n\nimport { StreamSearchContext } from '../contexts/StreamSearchContext';\nimport type { SearchController } from '../../../common/search';\n\n/**\n * The props for the StreamSearch component. It accepts a `SearchController` instance.\n */\nexport type StreamSearchProps = {\n searchController: SearchController | undefined;\n};\n\nexport const StreamSearch = ({\n searchController,\n children,\n}: PropsWithChildren<StreamSearchProps>) => {\n return (\n <StreamSearchContext.Provider value={searchController}>\n {children}\n </StreamSearchContext.Provider>\n );\n};\n\nStreamSearch.displayName = 'StreamSearch';\n","import type { PropsWithChildren } from 'react';\n\nimport { StreamSearchResultsContext } from '../contexts/StreamSearchResultsContext';\nimport type { SearchSource } from '../../../common/search';\n\n/**\n * The props for the StreamSearchResults component. It accepts a `SearchSource` instance.\n */\nexport type StreamSearchResultsProps = {\n source: SearchSource;\n};\n\nexport const StreamSearchResults = ({\n source,\n children,\n}: PropsWithChildren<StreamSearchResultsProps>) => {\n return (\n <StreamSearchResultsContext.Provider value={source}>\n {children}\n </StreamSearchResultsContext.Provider>\n );\n};\n\nStreamSearchResults.displayName = 'StreamSearchResults';\n"],"names":["useState","FeedsClient","useEffect","createContext","useContext","useStateStore","selector","useRef","useCallback","useMemo","isCommentResponse","checkHasAnotherPage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-bindings.js","sources":["../../src/bindings/react/hooks/useCreateFeedsClient.ts","../../src/bindings/react/contexts/StreamFeedsContext.tsx","../../src/bindings/react/hooks/client-state-hooks/useClientConnectedUser.ts","../../src/bindings/react/hooks/client-state-hooks/useWsConnectionState.ts","../../src/bindings/react/contexts/StreamFeedContext.tsx","../../src/bindings/react/hooks/internal/useStableCallback.ts","../../src/bindings/react/hooks/feed-state-hooks/useFeedActivities.ts","../../src/bindings/react/hooks/feed-state-hooks/useComments.ts","../../src/bindings/react/hooks/feed-state-hooks/useOwnCapabilities.ts","../../src/bindings/react/hooks/feed-state-hooks/useFollowers.ts","../../src/bindings/react/hooks/feed-state-hooks/useFollowing.ts","../../src/bindings/react/hooks/feed-state-hooks/useFeedMetadata.ts","../../src/bindings/react/hooks/feed-state-hooks/useOwnFollows.ts","../../src/bindings/react/hooks/feed-state-hooks/useNotificationStatus.ts","../../src/bindings/react/hooks/feed-state-hooks/useAggregatedActivities.ts","../../src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.ts","../../src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.ts","../../src/bindings/react/hooks/feed-state-hooks/useActivityComments.ts","../../src/bindings/react/hooks/feed-state-hooks/useOwnFollowings.ts","../../src/bindings/react/contexts/StreamSearchResultsContext.tsx","../../src/bindings/react/hooks/search-state-hooks/useSearchResult.ts","../../src/bindings/react/contexts/StreamSearchContext.tsx","../../src/bindings/react/hooks/search-state-hooks/useSearchQuery.ts","../../src/bindings/react/hooks/search-state-hooks/useSearchSources.ts","../../src/bindings/react/wrappers/StreamFeeds.tsx","../../src/bindings/react/wrappers/StreamFeed.tsx","../../src/bindings/react/wrappers/StreamSearch.tsx","../../src/bindings/react/wrappers/StreamSearchResults.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { FeedsClient } from '../../../feeds-client';\nimport type { TokenOrProvider } from '../../../types';\nimport type { UserRequest } from '../../../gen/models';\nimport type { FeedsClientOptions } from '../../../common/types';\n\n/**\n * A React hook to create, connect and return an instance of `FeedsClient`.\n */\nexport const useCreateFeedsClient = ({\n apiKey,\n tokenOrProvider,\n userData,\n options,\n}: {\n apiKey: string;\n tokenOrProvider: TokenOrProvider;\n userData: UserRequest;\n options?: FeedsClientOptions;\n}) => {\n const [client, setClient] = useState<FeedsClient | null>(\n () => new FeedsClient(apiKey, options),\n );\n const [error, setError] = useState<Error | null>(null);\n const [cachedUserData, setCachedUserData] = useState(userData);\n\n const [cachedOptions] = useState(options);\n\n if (error) {\n throw error;\n }\n\n if (userData.id !== cachedUserData.id) {\n setCachedUserData(userData);\n }\n\n useEffect(() => {\n const _client = new FeedsClient(apiKey, cachedOptions);\n\n const connectionPromise = _client\n .connectUser(cachedUserData, tokenOrProvider)\n .then(() => {\n setError(null);\n })\n .catch((err) => {\n setError(err);\n });\n\n setClient(_client);\n\n return () => {\n setClient(null);\n connectionPromise\n .then(() => {\n setError(null);\n return _client.disconnectUser();\n })\n .catch((err) => {\n setError(err);\n });\n };\n }, [apiKey, cachedUserData, cachedOptions, tokenOrProvider]);\n\n return client;\n};\n","import { createContext, useContext } from 'react';\n\nimport type { FeedsClient } from '../../../feeds-client';\n\nexport const StreamFeedsContext = createContext<FeedsClient | undefined>(undefined);\n\n/**\n * The props for the StreamFeedsProvider component.\n */\nexport type StreamFeedsContextProps = {\n /**\n * The client instance to provide to the component tree.\n */\n client: FeedsClient;\n};\n\n/**\n * Hook to access the nearest FeedsClient instance.\n */\nexport const useFeedsClient = () => {\n return useContext(StreamFeedsContext);\n};\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedsClient } from '../../contexts/StreamFeedsContext';\nimport type { FeedsClientState } from '../../../../feeds-client';\n\n/**\n * A React hook that returns the currently connected user on a `FeedsClient` instance and null otherwise.\n */\nexport const useClientConnectedUser = () => {\n const client = useFeedsClient();\n\n const { user } = useStateStore(client?.state, selector) ?? {};\n\n return user;\n};\n\nconst selector = (nextState: FeedsClientState) => ({\n user: nextState.connected_user,\n});\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedsClient } from '../../contexts/StreamFeedsContext';\nimport type { FeedsClientState } from '../../../../feeds-client';\n\n/**\n * A React hook that returns the websocket connection state of `FeedsClient`.\n */\nexport const useWsConnectionState = () => {\n const client = useFeedsClient();\n\n const { is_healthy } = useStateStore(client?.state, selector) ?? {}\n\n return { is_healthy };\n};\n\nconst selector = (nextState: FeedsClientState) => ({\n is_healthy: nextState.is_ws_connection_healthy,\n});\n","import { createContext, useContext } from 'react';\n\nimport type { Feed } from '../../../feed';\n\nexport const StreamFeedContext = createContext<Feed | undefined>(undefined);\n\n/**\n * The props for the StreamFeedProvider component.\n */\nexport type StreamFeedContextProps = {\n feed: Feed;\n};\n\n/**\n * Hook to access the nearest Feed instance.\n */\nexport const useFeedContext = () => {\n return useContext(StreamFeedContext);\n};\n","import { useCallback, useRef } from 'react';\n\nexport type StableCallback<A extends unknown[], R> = (...args: A) => R;\n\n/**\n * A utility hook implementing a stable callback. It takes in an unstable method that\n * is supposed to be invoked somewhere deeper in the DOM tree without making it\n * change its reference every time the parent component rerenders. It will also return\n * the value of the callback if it does return one.\n * A common use-case would be having a function whose invocation depends on state\n * somewhere high up in the DOM tree and wanting to use the same function deeper\n * down, for example in a leaf node and simply using useCallback results in\n * cascading dependency hell. If we wrap it in useStableCallback, we would be able\n * to:\n * - Use the same function as a dependency of another hook (since it is stable)\n * - Still invoke it and get the latest state\n *\n * **Caveats:**\n * - Never wrap a function that is supposed to return a React.ReactElement in\n * useStableCallback, since React will not know that the DOM needs to be updated\n * whenever the callback value changes (for example, renderItem from FlatList must\n * never be wrapped in this hook)\n * - Always prefer using a standard useCallback/stable function wherever possible\n * (the purpose of useStableCallback is to bridge the gap between top level contexts\n * and cascading rereders in downstream components - **not** as an escape hatch)\n * @param callback - the callback we want to stabilize\n */\nexport const useStableCallback = <A extends unknown[], R>(\n callback: StableCallback<A, R>,\n): StableCallback<A, R> => {\n const ref = useRef(callback);\n ref.current = callback;\n\n return useCallback<StableCallback<A, R>>((...args) => {\n return ref.current(...args);\n }, []);\n};\n","import { useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { useStableCallback } from '../internal';\nimport type { Feed, FeedState } from '../../../../feed';\n\n/**\n * A React hook that returns a reactive object containing the current activities,\n * loading state and whether there is a next page to paginate to or not.\n */\nexport const useFeedActivities = (feedFromProps?: Feed) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useStableCallback(async () => {\n if (!feed || !data?.has_next_page || data?.is_loading) {\n return;\n }\n\n await feed.getNextPage();\n });\n\n return useMemo(() => ({ ...data, loadNextPage }), [data, loadNextPage]);\n};\n\nconst selector = ({\n is_loading_activities,\n next,\n activities = [],\n}: FeedState) => ({\n is_loading: is_loading_activities,\n has_next_page: typeof next !== 'undefined',\n activities,\n});\n","import { useCallback, useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { checkHasAnotherPage, isCommentResponse } from '../../../../utils';\nimport type { ActivityResponse, CommentResponse } from '../../../../gen/models';\nimport type { Feed, FeedState } from '../../../../feed';\nimport type { CommentParent } from '../../../../types';\n\ntype UseCommentsReturnType<T extends ActivityResponse | CommentResponse> = {\n comments: NonNullable<\n FeedState['comments_by_entity_id'][T['id']]\n >['comments'];\n comments_pagination: NonNullable<\n FeedState['comments_by_entity_id'][T['id']]\n >['pagination'];\n has_next_page: boolean;\n is_loading_next_page: boolean;\n loadNextPage: (\n request?: T extends CommentResponse\n ? Parameters<Feed['loadNextPageCommentReplies']>[1]\n : Parameters<Feed['loadNextPageActivityComments']>[1],\n ) => Promise<void>;\n};\n\n/**\n * @deprecated Use `useActivityComments` instead.\n * @param\n */\nexport function useComments<T extends CommentParent>(_: {\n feed: Feed;\n parent: T;\n}): UseCommentsReturnType<T>;\nexport function useComments<T extends CommentParent>(_: {\n feed?: Feed;\n parent: T;\n}): UseCommentsReturnType<T> | undefined;\nexport function useComments<T extends CommentParent>({\n feed: feedFromProps,\n parent,\n}: {\n feed?: Feed;\n /**\n * The parent (activity or comment) for which to fetch comments.\n */\n parent: T;\n}) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const selector = useCallback(\n (state: FeedState) => ({\n comments: state.comments_by_entity_id?.[parent.id]?.comments,\n comments_pagination: state.comments_by_entity_id?.[parent.id]?.pagination,\n }),\n [parent.id],\n );\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useMemo<\n UseCommentsReturnType<T>['loadNextPage'] | undefined\n >(() => {\n if (!feed) return undefined;\n\n return (request) => {\n if (isCommentResponse(parent)) {\n return feed.loadNextPageCommentReplies(parent, request);\n } else {\n return feed.loadNextPageActivityComments(parent, request);\n }\n };\n }, [feed, parent]);\n\n return useMemo(() => {\n if (!data) {\n return undefined;\n }\n\n return {\n ...data,\n has_next_page: checkHasAnotherPage(\n data.comments,\n data.comments_pagination?.next,\n ),\n is_loading_next_page:\n data?.comments_pagination?.loading_next_page ?? false,\n loadNextPage,\n };\n }, [data, loadNextPage]);\n}\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\nimport type { FeedOwnCapability } from '../../../../gen/models';\nimport { useFeedsClient } from '../../contexts/StreamFeedsContext';\n\nconst stableEmptyArray: readonly FeedOwnCapability[] = [];\n\nconst selector = (currentState: FeedState) => {\n return {\n feedOwnCapabilities: currentState.own_capabilities ?? stableEmptyArray,\n };\n};\n\nexport const useOwnCapabilities = (feedFromProps?: Feed | string) => {\n const client = useFeedsClient();\n const feedFromContext = useFeedContext();\n let feed = feedFromProps ?? feedFromContext;\n if (typeof feed === 'string') {\n const [groupId, id] = feed.split(':');\n feed = groupId && id ? client?.feed(groupId, id) : undefined;\n }\n\n const { feedOwnCapabilities = stableEmptyArray } =\n useStateStore(feed?.state, selector) ?? {};\n\n return feedOwnCapabilities;\n};\n","import { useCallback, useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\nimport { checkHasAnotherPage } from '../../../../utils';\n\nconst selector = ({\n follower_count,\n followers,\n followers_pagination,\n}: FeedState) => ({\n follower_count,\n followers,\n followers_pagination,\n});\n\ntype UseFollowersReturnType = ReturnType<typeof selector> & {\n is_loading_next_page: boolean;\n has_next_page: boolean;\n loadNextPage: (\n ...options: Parameters<Feed['loadNextPageFollowers']>\n ) => Promise<void>;\n};\n\nexport function useFollowers(feed: Feed): UseFollowersReturnType;\nexport function useFollowers(feed?: Feed): UseFollowersReturnType | undefined;\nexport function useFollowers(feedFromProps?: Feed) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useCallback(\n (...options: Parameters<Feed['loadNextPageFollowers']>) =>\n feed?.loadNextPageFollowers(...options),\n [feed],\n );\n\n return useMemo(() => {\n if (!data) {\n return undefined;\n }\n\n return {\n ...data,\n is_loading_next_page:\n data.followers_pagination?.loading_next_page ?? false,\n has_next_page: checkHasAnotherPage(\n data.followers,\n data.followers_pagination?.next,\n ),\n loadNextPage,\n };\n }, [data, loadNextPage]);\n}\n","import { useCallback, useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { checkHasAnotherPage } from '../../../../utils';\nimport type { Feed, FeedState } from '../../../../feed';\n\nconst selector = ({\n following_count,\n following,\n following_pagination,\n}: FeedState) => ({\n following_count,\n following,\n following_pagination,\n});\n\ntype UseFollowingReturnType = ReturnType<typeof selector> & {\n is_loading_next_page: boolean;\n has_next_page: boolean;\n loadNextPage: (\n ...options: Parameters<Feed['loadNextPageFollowers']>\n ) => Promise<void>;\n};\n\nexport function useFollowing(feed: Feed): UseFollowingReturnType;\nexport function useFollowing(feed?: Feed): UseFollowingReturnType | undefined;\nexport function useFollowing(feedFromProps?: Feed) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useCallback(\n (...options: Parameters<Feed['loadNextPageFollowing']>) =>\n feed?.loadNextPageFollowing(...options),\n [feed],\n );\n\n return useMemo(() => {\n if (!data) {\n return undefined;\n }\n\n return {\n ...data,\n is_loading_next_page:\n data.following_pagination?.loading_next_page ?? false,\n has_next_page: checkHasAnotherPage(\n data.following,\n data.following_pagination?.next,\n ),\n loadNextPage,\n };\n }, [data, loadNextPage]);\n}\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\n\n/**\n * A React hook that returns a reactive object containing some often used\n * metadata for a feed.\n */\nexport const useFeedMetadata = (feedFromProps?: Feed) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n return useStateStore(feed?.state, selector);\n};\n\nconst selector = ({\n follower_count = 0,\n following_count = 0,\n created_by,\n created_at,\n updated_at,\n}: FeedState) => ({\n created_by,\n follower_count,\n following_count,\n created_at,\n updated_at,\n});\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\n\n/**\n * A React hook that returns a reactive array of feeds that the current user\n * owns and are following the respective feed that we are observing.\n */\nexport const useOwnFollows = (feedFromProps?: Feed) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n return useStateStore(feed?.state, selector);\n};\n\nconst selector = ({ own_follows }: FeedState) => ({\n own_follows,\n});\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\nimport type { NotificationStatusResponse } from '../../../../gen/models';\n\nconst selector = ({ notification_status }: FeedState) =>\n ({\n unread: notification_status?.unread ?? 0,\n unseen: notification_status?.unseen ?? 0,\n last_read_at: notification_status?.last_read_at,\n last_seen_at: notification_status?.last_seen_at,\n read_activities: notification_status?.read_activities,\n seen_activities: notification_status?.seen_activities,\n }) satisfies NotificationStatusResponse;\n\ntype UseNotificationStatusReturnType = ReturnType<typeof selector>;\n\nexport function useNotificationStatus(\n feed: Feed,\n): UseNotificationStatusReturnType;\nexport function useNotificationStatus(\n feed?: Feed,\n): UseNotificationStatusReturnType | undefined;\nexport function useNotificationStatus(feedFromProps?: Feed) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n return useStateStore(feed?.state, selector);\n}\n","import { useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { useStableCallback } from '../internal';\nimport type { Feed, FeedState } from '../../../../feed';\n\nconst selector = ({\n is_loading_activities,\n next,\n aggregated_activities = [],\n}: FeedState) => ({\n is_loading: is_loading_activities,\n has_next_page: typeof next !== 'undefined',\n aggregated_activities,\n});\n\ntype UseAggregatedActivitiesReturnType = ReturnType<typeof selector> & {\n loadNextPage: () => Promise<void>;\n};\n\n/**\n * A React hook that returns a reactive object containing the current aggregated activities,\n * loading state and whether there is a next page to paginate to or not.\n */\nexport function useAggregatedActivities(\n feedFromProps: Feed,\n): UseAggregatedActivitiesReturnType;\nexport function useAggregatedActivities(\n feedFromProps?: Feed,\n): UseAggregatedActivitiesReturnType | undefined;\nexport function useAggregatedActivities(feedFromProps?: Feed) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const data = useStateStore(feed?.state, selector);\n\n const loadNextPage = useStableCallback(async () => {\n if (!feed || !data?.has_next_page || data?.is_loading) {\n return;\n }\n\n await feed.getNextPage();\n });\n\n return useMemo(\n () => (data ? { ...data, loadNextPage } : undefined),\n [data, loadNextPage],\n );\n}\n","import { useMemo } from 'react';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { useNotificationStatus } from './useNotificationStatus';\nimport type { Feed } from '../../../../feed';\nimport type { AggregatedActivityResponse } from '../../../../gen/models';\n\nexport const useIsAggregatedActivityRead = ({\n feed: feedFromProps,\n aggregatedActivity,\n}: {\n feed?: Feed;\n aggregatedActivity: AggregatedActivityResponse;\n}) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const { read_activities: readActivities, last_read_at: lastReadAt } =\n useNotificationStatus(feed) ?? {};\n\n const group = aggregatedActivity.group;\n\n return useMemo(\n () =>\n (lastReadAt &&\n aggregatedActivity.updated_at.getTime() <= lastReadAt.getTime()) ||\n (readActivities ?? []).includes(group),\n [lastReadAt, aggregatedActivity.updated_at, readActivities, group],\n );\n};\n","import { useMemo } from 'react';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { useNotificationStatus } from './useNotificationStatus';\nimport type { Feed } from '../../../../feed';\nimport type { AggregatedActivityResponse } from '../../../../gen/models';\n\nexport const useIsAggregatedActivitySeen = ({\n feed: feedFromProps,\n aggregatedActivity,\n}: {\n feed?: Feed;\n aggregatedActivity: AggregatedActivityResponse;\n}) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n const { seen_activities: seenActivities, last_seen_at: lastSeenAt } =\n useNotificationStatus(feed) ?? {};\n\n const group = aggregatedActivity.group;\n\n return useMemo(\n () =>\n (lastSeenAt &&\n aggregatedActivity.updated_at.getTime() < lastSeenAt.getTime()) ||\n (seenActivities ?? []).includes(group),\n [lastSeenAt, aggregatedActivity.updated_at, seenActivities, group],\n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\nimport type { StateStore } from '@stream-io/state-store';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport { checkHasAnotherPage } from '../../../../utils';\nimport type { Feed, FeedState } from '../../../../feed';\nimport type { ActivityState, ActivityWithStateUpdates } from '../../../../activity-with-state-updates/activity-with-state-updates';\nimport type { ActivityResponse, CommentResponse } from '../../../../gen/models';\n\nconst canLoadComments = (\n feedOrActivity: Feed | ActivityResponse | ActivityWithStateUpdates,\n): feedOrActivity is ActivityWithStateUpdates | Feed => {\n return (\n 'loadNextPageCommentReplies' in feedOrActivity &&\n 'loadNextPageActivityComments' in feedOrActivity\n );\n};\n\ntype UseCommentsReturnType<T extends ActivityResponse | CommentResponse> = {\n comments: NonNullable<\n FeedState['comments_by_entity_id'][T['id']]\n >['comments'];\n comments_pagination: NonNullable<\n FeedState['comments_by_entity_id'][T['id']]\n >['pagination'];\n has_next_page: boolean;\n is_loading_next_page: boolean;\n loadNextPage: (\n request?: T extends CommentResponse\n ? Parameters<Feed['loadNextPageCommentReplies']>[1]\n : Parameters<Feed['loadNextPageActivityComments']>[1],\n ) => Promise<void>;\n};\n\nexport function useActivityComments({\n feed: feedFromProps,\n parentComment,\n activity,\n}: {\n feed?: Feed;\n parentComment?: CommentResponse;\n activity?: ActivityResponse | ActivityWithStateUpdates;\n}) {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n const feedOrActivity = feed ?? activity;\n\n if (!feedOrActivity) {\n throw new Error('Feed or activity is required');\n }\n\n if (!canLoadComments(feedOrActivity)) {\n throw new Error('Feed or activity does not support loading comments');\n }\n\n if (!(activity || parentComment)) {\n throw new Error('Activity or parent comment is required');\n }\n\n const entityId = parentComment?.id ?? activity?.id ?? '';\n const selector = useCallback(\n (state: FeedState | ActivityState) => ({\n comments: state.comments_by_entity_id?.[entityId]?.comments,\n comments_pagination: state.comments_by_entity_id?.[entityId]?.pagination,\n }),\n [entityId],\n );\n\n const data = useStateStore(\n feedOrActivity.state as StateStore<FeedState | ActivityState>,\n selector,\n );\n\n const loadNextPage = useCallback<\n UseCommentsReturnType<ActivityResponse | CommentResponse>['loadNextPage']\n >(\n (request) => {\n if (parentComment) {\n return feedOrActivity.loadNextPageCommentReplies(\n parentComment,\n request,\n );\n } else {\n if (activity && canLoadComments(activity)) {\n return activity.loadNextPageActivityComments(request);\n } else if (feed) {\n return feed.loadNextPageActivityComments(activity?.id ?? '', request);\n } else {\n throw new Error('Activity or feed is required');\n }\n }\n },\n [feedOrActivity, feed, parentComment, activity],\n );\n\n return useMemo(() => {\n return {\n ...data,\n has_next_page: checkHasAnotherPage(\n data.comments,\n data.comments_pagination?.next,\n ),\n is_loading_next_page:\n data?.comments_pagination?.loading_next_page ?? false,\n loadNextPage,\n };\n }, [data, loadNextPage]);\n}\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useFeedContext } from '../../contexts/StreamFeedContext';\nimport type { Feed, FeedState } from '../../../../feed';\n\n/**\n * A React hook that returns a reactive array of feeds that the feeds's owner is following and is owned by the current user.\n */\nexport const useOwnFollowings = (feedFromProps?: Feed) => {\n const feedFromContext = useFeedContext();\n const feed = feedFromProps ?? feedFromContext;\n\n return useStateStore(feed?.state, selector);\n};\n\nconst selector = ({ own_followings }: FeedState) => ({\n own_followings,\n});\n","import { createContext, useContext } from 'react';\n\nimport type { SearchSource } from '../../../common/search';\n\nexport const StreamSearchResultsContext = createContext<\n SearchSource | undefined\n>(undefined);\n\n/**\n * The props for the StreamSearchResultsProvider component.\n */\nexport type StreamSearchResultsContextProps = {\n source: SearchSource;\n};\n\n/**\n * Hook to access the nearest SearchSource instance.\n */\nexport const useSearchResultsContext = () => {\n return useContext(StreamSearchResultsContext);\n};\n","import { useMemo } from 'react';\nimport { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useSearchResultsContext } from '../../contexts/StreamSearchResultsContext';\nimport { useStableCallback } from '../internal';\nimport type { SearchSourceState } from '../../../../common/types';\nimport type { SearchSource } from '../../../../common/search';\n\nexport const useSearchResult = (sourceFromProps?: SearchSource) => {\n const sourceFromContext = useSearchResultsContext();\n const source = sourceFromProps ?? sourceFromContext;\n\n const { items, error, isLoading, hasNext } =\n useStateStore(source?.state, selector) ?? {};\n\n const loadMore = useStableCallback(async () => {\n if (hasNext) {\n source?.search();\n }\n });\n\n return useMemo(\n () => ({ items, error, isLoading, hasNext, loadMore }),\n [error, hasNext, isLoading, items, loadMore],\n );\n};\n\nconst selector = ({\n items,\n isLoading,\n hasNext,\n lastQueryError,\n}: SearchSourceState) => ({\n items,\n isLoading,\n hasNext,\n error: lastQueryError,\n});\n","import { createContext, useContext } from 'react';\n\nimport type { SearchController } from '../../../common/search';\n\nexport const StreamSearchContext = createContext<SearchController | undefined>(undefined);\n\n/**\n * The props for the StreamSearchProvider component.\n */\nexport type StreamSearchContextProps = {\n searchController: SearchController;\n};\n\n/**\n * Hook to access the nearest SearchController instance.\n */\nexport const useSearchContext = () => {\n return useContext(StreamSearchContext);\n};\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport type {\n SearchController,\n SearchControllerState,\n} from '../../../../common/search';\nimport { useSearchContext } from '../../contexts/StreamSearchContext';\n\nexport const useSearchQuery = (controllerFromProps?: SearchController) => {\n const controllerFromState = useSearchContext();\n const controller = controllerFromProps ?? controllerFromState;\n\n return useStateStore(controller?.state, selector);\n};\n\nconst selector = ({ searchQuery }: SearchControllerState) => ({\n searchQuery,\n});\n","import { useStateStore } from '@stream-io/state-store/react-bindings';\n\nimport { useSearchContext } from '../../contexts/StreamSearchContext';\nimport type { SearchController, SearchControllerState } from '../../../../common/search';\n\nexport const useSearchSources = (controllerFromProps?: SearchController) => {\n const controllerFromState = useSearchContext();\n const controller = controllerFromProps ?? controllerFromState;\n\n return useStateStore(controller?.state, selector);\n};\n\nconst selector = ({ sources }: SearchControllerState) => ({\n sources,\n});\n","import type { PropsWithChildren } from 'react';\nimport { StreamFeedsContext } from '../contexts/StreamFeedsContext';\nimport type { StreamFeedsContextProps } from '../contexts/StreamFeedsContext';\n\nexport const StreamFeeds = ({ client, children }: PropsWithChildren<StreamFeedsContextProps>) => {\n return (\n <StreamFeedsContext.Provider value={client}>\n {children}\n </StreamFeedsContext.Provider>\n );\n};\n\nStreamFeeds.displayName = 'StreamFeeds';\n","import type { PropsWithChildren } from 'react';\n\nimport { StreamFeedContext } from '../contexts/StreamFeedContext';\nimport type { Feed } from '../../../feed';\n\n/**\n * The props for the StreamFeed component. It accepts a `Feed` instance.\n */\nexport type StreamFeedProps = {\n feed: Feed;\n};\n\nexport const StreamFeed = ({\n feed,\n children,\n}: PropsWithChildren<StreamFeedProps>) => {\n return (\n <StreamFeedContext.Provider value={feed}>\n {children}\n </StreamFeedContext.Provider>\n );\n};\n\nStreamFeed.displayName = 'StreamFeed';\n","import type { PropsWithChildren } from 'react';\n\nimport { StreamSearchContext } from '../contexts/StreamSearchContext';\nimport type { SearchController } from '../../../common/search';\n\n/**\n * The props for the StreamSearch component. It accepts a `SearchController` instance.\n */\nexport type StreamSearchProps = {\n searchController: SearchController | undefined;\n};\n\nexport const StreamSearch = ({\n searchController,\n children,\n}: PropsWithChildren<StreamSearchProps>) => {\n return (\n <StreamSearchContext.Provider value={searchController}>\n {children}\n </StreamSearchContext.Provider>\n );\n};\n\nStreamSearch.displayName = 'StreamSearch';\n","import type { PropsWithChildren } from 'react';\n\nimport { StreamSearchResultsContext } from '../contexts/StreamSearchResultsContext';\nimport type { SearchSource } from '../../../common/search';\n\n/**\n * The props for the StreamSearchResults component. It accepts a `SearchSource` instance.\n */\nexport type StreamSearchResultsProps = {\n source: SearchSource;\n};\n\nexport const StreamSearchResults = ({\n source,\n children,\n}: PropsWithChildren<StreamSearchResultsProps>) => {\n return (\n <StreamSearchResultsContext.Provider value={source}>\n {children}\n </StreamSearchResultsContext.Provider>\n );\n};\n\nStreamSearchResults.displayName = 'StreamSearchResults';\n"],"names":["useState","FeedsClient","useEffect","createContext","useContext","useStateStore","selector","useRef","useCallback","useMemo","isCommentResponse","checkHasAnotherPage"],"mappings":"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"}
|
package/dist/es/index.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { StateStore } from "@stream-io/state-store";
|
|
2
2
|
export * from "@stream-io/state-store";
|
|
3
|
-
import { d as debounce } from "../feeds-client-
|
|
4
|
-
import { A, C, a, F, S, b, c, n, m, k, g, e, h, f, j, i,
|
|
3
|
+
import { d as debounce } from "../feeds-client-C-6NrDBy.mjs";
|
|
4
|
+
import { A, C, a, F, S, b, c, n, m, k, g, e, h, f, j, i, r, s, u, l } from "../feeds-client-C-6NrDBy.mjs";
|
|
5
5
|
import { LogLevelEnum } from "@stream-io/logger";
|
|
6
|
+
const ownFeedFields = ["own_capabilities", "own_follows", "own_membership"];
|
|
6
7
|
const ChannelOwnCapability = {
|
|
7
8
|
BAN_CHANNEL_MEMBERS: "ban-channel-members",
|
|
8
9
|
CAST_POLL_VOTE: "cast-poll-vote",
|
|
@@ -461,7 +462,7 @@ export {
|
|
|
461
462
|
f as isReactionResponse,
|
|
462
463
|
j as isVideoFile,
|
|
463
464
|
i as isVoteAnswer,
|
|
464
|
-
|
|
465
|
+
ownFeedFields,
|
|
465
466
|
r as replaceUniqueArrayMerge,
|
|
466
467
|
s as shouldUpdateState,
|
|
467
468
|
u as uniqueArrayMerge,
|