@towns-labs/react-sdk 2.0.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/README.md +69 -0
- package/dist/esm/TownsSyncProvider.jsx +39 -0
- package/dist/esm/TownsSyncProvider.jsx.map +1 -0
- package/dist/esm/connectTowns.js +45 -0
- package/dist/esm/connectTowns.js.map +1 -0
- package/dist/esm/index.js +35 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internals/TownsSyncContext.js +4 -0
- package/dist/esm/internals/TownsSyncContext.js.map +1 -0
- package/dist/esm/internals/useAction.js +58 -0
- package/dist/esm/internals/useAction.js.map +1 -0
- package/dist/esm/internals/useTownsSync.js +5 -0
- package/dist/esm/internals/useTownsSync.js.map +1 -0
- package/dist/esm/internals/utils.js +10 -0
- package/dist/esm/internals/utils.js.map +1 -0
- package/dist/esm/useAdminRedact.js +43 -0
- package/dist/esm/useAdminRedact.js.map +1 -0
- package/dist/esm/useAgentConnection.js +128 -0
- package/dist/esm/useAgentConnection.js.map +1 -0
- package/dist/esm/useChannel.js +18 -0
- package/dist/esm/useChannel.js.map +1 -0
- package/dist/esm/useCreateChannel.js +24 -0
- package/dist/esm/useCreateChannel.js.map +1 -0
- package/dist/esm/useCreateDm.js +22 -0
- package/dist/esm/useCreateDm.js.map +1 -0
- package/dist/esm/useCreateGdm.js +22 -0
- package/dist/esm/useCreateGdm.js.map +1 -0
- package/dist/esm/useCreateSpace.js +22 -0
- package/dist/esm/useCreateSpace.js.map +1 -0
- package/dist/esm/useDm.js +16 -0
- package/dist/esm/useDm.js.map +1 -0
- package/dist/esm/useGdm.js +16 -0
- package/dist/esm/useGdm.js.map +1 -0
- package/dist/esm/useJoinSpace.js +23 -0
- package/dist/esm/useJoinSpace.js.map +1 -0
- package/dist/esm/useMember.js +36 -0
- package/dist/esm/useMember.js.map +1 -0
- package/dist/esm/useMemberList.js +17 -0
- package/dist/esm/useMemberList.js.map +1 -0
- package/dist/esm/useMyMember.js +71 -0
- package/dist/esm/useMyMember.js.map +1 -0
- package/dist/esm/useObservable.js +56 -0
- package/dist/esm/useObservable.js.map +1 -0
- package/dist/esm/useReactions.js +17 -0
- package/dist/esm/useReactions.js.map +1 -0
- package/dist/esm/useRedact.js +43 -0
- package/dist/esm/useRedact.js.map +1 -0
- package/dist/esm/useScrollback.js +27 -0
- package/dist/esm/useScrollback.js.map +1 -0
- package/dist/esm/useSendMessage.js +31 -0
- package/dist/esm/useSendMessage.js.map +1 -0
- package/dist/esm/useSendReaction.js +33 -0
- package/dist/esm/useSendReaction.js.map +1 -0
- package/dist/esm/useSpace.js +28 -0
- package/dist/esm/useSpace.js.map +1 -0
- package/dist/esm/useSyncAgent.jsx +20 -0
- package/dist/esm/useSyncAgent.jsx.map +1 -0
- package/dist/esm/useThreads.js +19 -0
- package/dist/esm/useThreads.js.map +1 -0
- package/dist/esm/useTimeline.js +32 -0
- package/dist/esm/useTimeline.js.map +1 -0
- package/dist/esm/useTowns.js +16 -0
- package/dist/esm/useTowns.js.map +1 -0
- package/dist/esm/useTownsAuthStatus.js +30 -0
- package/dist/esm/useTownsAuthStatus.js.map +1 -0
- package/dist/esm/useUserDms.js +36 -0
- package/dist/esm/useUserDms.js.map +1 -0
- package/dist/esm/useUserGdms.js +27 -0
- package/dist/esm/useUserGdms.js.map +1 -0
- package/dist/esm/useUserSpaces.js +27 -0
- package/dist/esm/useUserSpaces.js.map +1 -0
- package/dist/esm/utils.js +17 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/types/TownsSyncProvider.d.ts +23 -0
- package/dist/types/TownsSyncProvider.d.ts.map +1 -0
- package/dist/types/connectTowns.d.ts +29 -0
- package/dist/types/connectTowns.d.ts.map +1 -0
- package/dist/types/index.d.ts +35 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/internals/TownsSyncContext.d.ts +11 -0
- package/dist/types/internals/TownsSyncContext.d.ts.map +1 -0
- package/dist/types/internals/useAction.d.ts +38 -0
- package/dist/types/internals/useAction.d.ts.map +1 -0
- package/dist/types/internals/useTownsSync.d.ts +8 -0
- package/dist/types/internals/useTownsSync.d.ts.map +1 -0
- package/dist/types/internals/utils.d.ts +3 -0
- package/dist/types/internals/utils.d.ts.map +1 -0
- package/dist/types/useAdminRedact.d.ts +42 -0
- package/dist/types/useAdminRedact.d.ts.map +1 -0
- package/dist/types/useAgentConnection.d.ts +83 -0
- package/dist/types/useAgentConnection.d.ts.map +1 -0
- package/dist/types/useChannel.d.ts +12 -0
- package/dist/types/useChannel.d.ts.map +1 -0
- package/dist/types/useCreateChannel.d.ts +23 -0
- package/dist/types/useCreateChannel.d.ts.map +1 -0
- package/dist/types/useCreateDm.d.ts +28 -0
- package/dist/types/useCreateDm.d.ts.map +1 -0
- package/dist/types/useCreateGdm.d.ts +31 -0
- package/dist/types/useCreateGdm.d.ts.map +1 -0
- package/dist/types/useCreateSpace.d.ts +29 -0
- package/dist/types/useCreateSpace.d.ts.map +1 -0
- package/dist/types/useDm.d.ts +11 -0
- package/dist/types/useDm.d.ts.map +1 -0
- package/dist/types/useGdm.d.ts +11 -0
- package/dist/types/useGdm.d.ts.map +1 -0
- package/dist/types/useJoinSpace.d.ts +24 -0
- package/dist/types/useJoinSpace.d.ts.map +1 -0
- package/dist/types/useMember.d.ts +30 -0
- package/dist/types/useMember.d.ts.map +1 -0
- package/dist/types/useMemberList.d.ts +11 -0
- package/dist/types/useMemberList.d.ts.map +1 -0
- package/dist/types/useMyMember.d.ts +83 -0
- package/dist/types/useMyMember.d.ts.map +1 -0
- package/dist/types/useObservable.d.ts +59 -0
- package/dist/types/useObservable.d.ts.map +1 -0
- package/dist/types/useReactions.d.ts +10 -0
- package/dist/types/useReactions.d.ts.map +1 -0
- package/dist/types/useRedact.d.ts +42 -0
- package/dist/types/useRedact.d.ts.map +1 -0
- package/dist/types/useScrollback.d.ts +27 -0
- package/dist/types/useScrollback.d.ts.map +1 -0
- package/dist/types/useSendMessage.d.ts +32 -0
- package/dist/types/useSendMessage.d.ts.map +1 -0
- package/dist/types/useSendReaction.d.ts +32 -0
- package/dist/types/useSendReaction.d.ts.map +1 -0
- package/dist/types/useSpace.d.ts +22 -0
- package/dist/types/useSpace.d.ts.map +1 -0
- package/dist/types/useSyncAgent.d.ts +12 -0
- package/dist/types/useSyncAgent.d.ts.map +1 -0
- package/dist/types/useThreads.d.ts +11 -0
- package/dist/types/useThreads.d.ts.map +1 -0
- package/dist/types/useTimeline.d.ts +24 -0
- package/dist/types/useTimeline.d.ts.map +1 -0
- package/dist/types/useTowns.d.ts +14 -0
- package/dist/types/useTowns.d.ts.map +1 -0
- package/dist/types/useTownsAuthStatus.d.ts +26 -0
- package/dist/types/useTownsAuthStatus.d.ts.map +1 -0
- package/dist/types/useUserDms.d.ts +41 -0
- package/dist/types/useUserDms.d.ts.map +1 -0
- package/dist/types/useUserGdms.d.ts +32 -0
- package/dist/types/useUserGdms.d.ts.map +1 -0
- package/dist/types/useUserSpaces.d.ts +32 -0
- package/dist/types/useUserSpaces.d.ts.map +1 -0
- package/dist/types/utils.d.ts +3 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/package.json +75 -0
- package/src/connectTowns.ts +63 -0
- package/src/index.ts +34 -0
- package/src/internals/TownsSyncContext.ts +12 -0
- package/src/internals/useAction.ts +84 -0
- package/src/internals/useTownsSync.ts +4 -0
- package/src/internals/utils.ts +11 -0
- package/src/useAdminRedact.ts +45 -0
- package/src/useAgentConnection.ts +143 -0
- package/src/useChannel.ts +27 -0
- package/src/useCreateChannel.ts +30 -0
- package/src/useCreateDm.ts +25 -0
- package/src/useCreateGdm.ts +25 -0
- package/src/useCreateSpace.ts +25 -0
- package/src/useDm.ts +17 -0
- package/src/useGdm.ts +17 -0
- package/src/useJoinSpace.ts +26 -0
- package/src/useMember.ts +45 -0
- package/src/useMemberList.ts +21 -0
- package/src/useMyMember.ts +83 -0
- package/src/useObservable.ts +129 -0
- package/src/useReactions.ts +21 -0
- package/src/useRedact.ts +45 -0
- package/src/useScrollback.ts +31 -0
- package/src/useSendMessage.ts +35 -0
- package/src/useSendReaction.ts +39 -0
- package/src/useSpace.ts +30 -0
- package/src/useThreads.ts +22 -0
- package/src/useTimeline.ts +35 -0
- package/src/useTowns.ts +22 -0
- package/src/useTownsAuthStatus.ts +32 -0
- package/src/useUserDms.ts +38 -0
- package/src/useUserGdms.ts +29 -0
- package/src/useUserSpaces.ts +29 -0
- package/src/utils.ts +28 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Dms } from '@towns-labs/sdk'
|
|
2
|
+
import type { ObservableConfig } from './useObservable'
|
|
3
|
+
import { useTowns } from './useTowns'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Hook to get the direct messages of the current user.
|
|
7
|
+
* @param config - Configuration options for the observable.
|
|
8
|
+
* @returns The list of all direct messages stream ids of the current user.
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* You can combine this hook with the `useDm`, `useMemberList` and `useMember` hooks to get all direct messages of the current user and render them, showing the name of the other user in the dm:
|
|
12
|
+
*
|
|
13
|
+
* ```tsx
|
|
14
|
+
* import { useDm, useMyMember, useMemberList, useMember } from '@towns-labs/react-sdk'
|
|
15
|
+
*
|
|
16
|
+
* const AllDms = () => {
|
|
17
|
+
* const { streamIds } = useUserDms()
|
|
18
|
+
* return <>{streamIds.map((streamId) => <Dm key={streamId} streamId={streamId} />)}</>
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* const Dm = ({ streamId }: { streamId: string }) => {
|
|
22
|
+
* const { data: dm } = useDm(streamId)
|
|
23
|
+
* const { userId: myUserId } = useMyMember(streamId)
|
|
24
|
+
* const { data: members } = useMemberList(streamId)
|
|
25
|
+
* const { userId, username, displayName } = useMember({
|
|
26
|
+
* streamId,
|
|
27
|
+
* // We find the other user in the dm by checking the userIds in the member list
|
|
28
|
+
* // and defaulting to the current user if we don't find one, since a user is able to send a dm to themselves
|
|
29
|
+
* userId: members.userIds.find((userId) => userId !== sync.userId) || sync.userId,
|
|
30
|
+
* })
|
|
31
|
+
* return <span>{userId === myUserId ? 'You' : displayName || username || userId}</span>
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export const useUserDms = (config?: ObservableConfig.FromObservable<Dms>) => {
|
|
36
|
+
const { data, ...rest } = useTowns((s) => s.dms, config)
|
|
37
|
+
return { streamIds: data.streamIds, ...rest }
|
|
38
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Gdms } from '@towns-labs/sdk'
|
|
2
|
+
import type { ObservableConfig } from './useObservable'
|
|
3
|
+
import { useTowns } from './useTowns'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Hook to get the group dm streams of the current user.
|
|
7
|
+
* @param config - Configuration options for the observable.
|
|
8
|
+
* @returns The list of all group dm stream ids of the current user.
|
|
9
|
+
* @example
|
|
10
|
+
* You can combine this hook with the `useGdm` hook to get all group dm streams of the current user and render them:
|
|
11
|
+
*
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import { useUserGdms, useGdm } from '@towns-labs/react-sdk'
|
|
14
|
+
*
|
|
15
|
+
* const AllGdms = () => {
|
|
16
|
+
* const { streamIds } = useUserGdms()
|
|
17
|
+
* return <>{streamIds.map((streamId) => <Gdm key={streamId} streamId={streamId} />)}</>
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* const Gdm = ({ streamId }: { streamId: string }) => {
|
|
21
|
+
* const { data: gdm } = useGdm(streamId)
|
|
22
|
+
* return <div>{gdm.metadata?.name || 'Unnamed Gdm'}</div>
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export const useUserGdms = (config?: ObservableConfig.FromObservable<Gdms>) => {
|
|
27
|
+
const { data, ...rest } = useTowns((s) => s.gdms, config)
|
|
28
|
+
return { streamIds: data.streamIds, ...rest }
|
|
29
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Spaces } from '@towns-labs/sdk'
|
|
2
|
+
import type { ObservableConfig } from './useObservable'
|
|
3
|
+
import { useTowns } from './useTowns'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Hook to get the spaces of the current user.
|
|
7
|
+
* @param config - Configuration options for the observable.
|
|
8
|
+
* @returns The list of all space ids of the current user.
|
|
9
|
+
* @example
|
|
10
|
+
* You can combine this hook with the `useSpace` hook to get all spaces of the current user and render them:
|
|
11
|
+
*
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import { useUserSpaces, useSpace } from '@towns-labs/react-sdk'
|
|
14
|
+
*
|
|
15
|
+
* const AllSpaces = () => {
|
|
16
|
+
* const { spaceIds } = useUserSpaces()
|
|
17
|
+
* return <>{spaceIds.map((spaceId) => <Space key={spaceId} spaceId={spaceId} />)}</>
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* const Space = ({ spaceId }: { spaceId: string }) => {
|
|
21
|
+
* const { data: space } = useSpace(spaceId)
|
|
22
|
+
* return <div>{space.metadata?.name || 'Unnamed Space'}</div>
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export const useUserSpaces = (config?: ObservableConfig.FromObservable<Spaces>) => {
|
|
27
|
+
const { data, ...rest } = useTowns((s) => s.spaces, config)
|
|
28
|
+
return { spaceIds: data.spaceIds, ...rest }
|
|
29
|
+
}
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type Channel,
|
|
3
|
+
type Dm,
|
|
4
|
+
type Gdm,
|
|
5
|
+
Space,
|
|
6
|
+
type SyncAgent,
|
|
7
|
+
isChannelStreamId,
|
|
8
|
+
isDMChannelStreamId,
|
|
9
|
+
isGDMChannelStreamId,
|
|
10
|
+
isSpaceStreamId,
|
|
11
|
+
spaceIdFromChannelId,
|
|
12
|
+
} from '@towns-labs/sdk'
|
|
13
|
+
|
|
14
|
+
export const getRoom = (sync: SyncAgent, streamId: string): Gdm | Channel | Dm | Space => {
|
|
15
|
+
if (isChannelStreamId(streamId)) {
|
|
16
|
+
return sync.spaces.getSpace(spaceIdFromChannelId(streamId)).getChannel(streamId)
|
|
17
|
+
}
|
|
18
|
+
if (isGDMChannelStreamId(streamId)) {
|
|
19
|
+
return sync.gdms.getGdm(streamId)
|
|
20
|
+
}
|
|
21
|
+
if (isDMChannelStreamId(streamId)) {
|
|
22
|
+
return sync.dms.getDm(streamId)
|
|
23
|
+
}
|
|
24
|
+
if (isSpaceStreamId(streamId)) {
|
|
25
|
+
return sync.spaces.getSpace(streamId)
|
|
26
|
+
}
|
|
27
|
+
throw new Error('Invalid room type')
|
|
28
|
+
}
|