Skip to content

Commit f9c524f

Browse files
Fix types mobile-client type exports (#517)
## Description Jak w tytule. Wszystko sprawne. Polecam.
1 parent 81737da commit f9c524f

3 files changed

Lines changed: 95 additions & 30 deletions

File tree

packages/mobile-client/src/index.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ export {
2222
startPIP,
2323
stopPIP,
2424
AudioDeviceType,
25-
useCallKit,
26-
useCallKitEvent,
27-
useCallKitService,
2825
useAudioOutput,
2926
} from '@fishjam-cloud/react-native-webrtc';
3027

@@ -59,13 +56,21 @@ export {
5956
useLivestreamStreamer,
6057
useLivestreamViewer,
6158
usePeers,
59+
useCallKit,
60+
useCallKitEvent,
61+
useCallKitService,
6262
} from './overrides/hooks';
6363

6464
export type {
6565
StreamerInputs,
6666
ConnectStreamerConfig,
6767
UseLivestreamStreamerResult,
6868
UseLivestreamViewerResult,
69+
UseCameraResult,
70+
UseMicrophoneResult,
71+
UseScreenShareResult,
72+
UseCustomSourceResult,
73+
UseInitializeDevicesReturn,
6974
Track,
7075
RemoteTrack,
7176
CustomSource,

packages/mobile-client/src/overrides/hooks.ts

Lines changed: 56 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ import {
88
usePeers as usePeersReactClient,
99
useScreenShare as useScreenShareReactClient,
1010
} from '@fishjam-cloud/react-client';
11-
import type { MediaStream as RNMediaStream } from '@fishjam-cloud/react-native-webrtc';
11+
import type { CallKitAction, CallKitConfig, MediaStream as RNMediaStream } from '@fishjam-cloud/react-native-webrtc';
12+
import {
13+
useCallKit as useCallKitRNWebRTC,
14+
useCallKitEvent as useCallKitEventRNWebRTC,
15+
useCallKitService as useCallKitServiceRNWebRTC,
16+
} from '@fishjam-cloud/react-native-webrtc';
1217
import { useCallback } from 'react';
1318

1419
import type {
@@ -20,30 +25,38 @@ import type {
2025
UseLivestreamViewerResult,
2126
} from './types';
2227

23-
export const useCamera = useCameraReactClient as () => Omit<ReturnType<typeof useCameraReactClient>, 'cameraStream'> & {
24-
cameraStream: RNMediaStream | null;
25-
};
28+
export function useCamera() {
29+
const result = useCameraReactClient();
30+
return {
31+
...result,
32+
cameraStream: result.cameraStream as RNMediaStream | null,
33+
};
34+
}
2635

27-
export const useMicrophone = useMicrophoneReactClient as () => Omit<
28-
ReturnType<typeof useMicrophoneReactClient>,
29-
'toggleMicrophoneMute' | 'microphoneStream'
30-
> & {
31-
microphoneStream: RNMediaStream | null;
32-
};
36+
export function useMicrophone() {
37+
const { toggleMicrophoneMute: _, ...rest } = useMicrophoneReactClient();
38+
return {
39+
...rest,
40+
microphoneStream: rest.microphoneStream as RNMediaStream | null,
41+
};
42+
}
3343

34-
export const useScreenShare = useScreenShareReactClient as () => Omit<
35-
ReturnType<typeof useScreenShareReactClient>,
36-
'stream'
37-
> & {
38-
stream: RNMediaStream | null;
39-
};
44+
export function useScreenShare() {
45+
const result = useScreenShareReactClient();
46+
return {
47+
...result,
48+
stream: result.stream as RNMediaStream | null,
49+
};
50+
}
4051

41-
export const useCustomSource = useCustomSourceReactClient as <T extends string>(
42-
sourceId: T,
43-
) => Omit<ReturnType<typeof useCustomSourceReactClient>, 'stream' | 'setStream'> & {
44-
stream: RNMediaStream | undefined;
45-
setStream: (newStream: RNMediaStream | null) => void;
46-
};
52+
export function useCustomSource<T extends string>(sourceId: T) {
53+
const result = useCustomSourceReactClient(sourceId);
54+
return {
55+
...result,
56+
stream: result.stream as RNMediaStream | undefined,
57+
setStream: result.setStream as (newStream: RNMediaStream | null) => Promise<void>,
58+
};
59+
}
4760

4861
export function useLivestreamStreamer(): UseLivestreamStreamerResult {
4962
const { connect: reactConnect, ...rest } = useLivestreamStreamerReactClient();
@@ -67,11 +80,14 @@ export function useLivestreamViewer(): UseLivestreamViewerResult {
6780
};
6881
}
6982

70-
export const useInitializeDevices = useInitializeDevicesReactClient as () => {
71-
initializeDevices: (
72-
...args: Parameters<ReturnType<typeof useInitializeDevicesReactClient>['initializeDevices']>
73-
) => Promise<InitializeDevicesResult>;
74-
};
83+
export function useInitializeDevices() {
84+
const { initializeDevices: reactInitDevices } = useInitializeDevicesReactClient();
85+
return {
86+
initializeDevices: reactInitDevices as (
87+
...args: Parameters<typeof reactInitDevices>
88+
) => Promise<InitializeDevicesResult>,
89+
};
90+
}
7591

7692
export function usePeers<P = Record<string, unknown>, S = Record<string, unknown>>() {
7793
return usePeersReactClient<P, S>() as unknown as {
@@ -80,3 +96,16 @@ export function usePeers<P = Record<string, unknown>, S = Record<string, unknown
8096
peers: PeerWithTracks<P, S, RemoteTrack>[];
8197
};
8298
}
99+
100+
export function useCallKit() {
101+
const result = useCallKitRNWebRTC();
102+
return { ...result };
103+
}
104+
105+
export function useCallKitService(config: CallKitConfig) {
106+
return useCallKitServiceRNWebRTC(config);
107+
}
108+
109+
export function useCallKitEvent<T extends keyof CallKitAction>(action: T, callback: (event: CallKitAction[T]) => void) {
110+
return useCallKitEventRNWebRTC(action, callback);
111+
}

packages/mobile-client/src/overrides/types.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@ import type {
44
PeerWithTracks as ReactClientPeerWithTracks,
55
RemoteTrack as ReactClientRemoteTrack,
66
Track as ReactClientTrack,
7+
useCamera as useCameraReactClient,
8+
useCustomSource as useCustomSourceReactClient,
9+
useInitializeDevices as useInitializeDevicesReactClient,
710
UseLivestreamStreamerResult as ReactClientUseLivestreamStreamerResult,
811
UseLivestreamViewerResult as ReactClientUseLivestreamViewerResult,
12+
useMicrophone as useMicrophoneReactClient,
13+
useScreenShare as useScreenShareReactClient,
914
} from '@fishjam-cloud/react-client';
1015
import type { MediaStream as RNMediaStream } from '@fishjam-cloud/react-native-webrtc';
1116

@@ -26,6 +31,32 @@ export type UseLivestreamViewerResult = Omit<ReactClientUseLivestreamViewerResul
2631
stream: RNMediaStream | null;
2732
};
2833

34+
export type UseCameraResult = Omit<ReturnType<typeof useCameraReactClient>, 'cameraStream'> & {
35+
cameraStream: RNMediaStream | null;
36+
};
37+
38+
export type UseMicrophoneResult = Omit<
39+
ReturnType<typeof useMicrophoneReactClient>,
40+
'toggleMicrophoneMute' | 'microphoneStream'
41+
> & {
42+
microphoneStream: RNMediaStream | null;
43+
};
44+
45+
export type UseScreenShareResult = Omit<ReturnType<typeof useScreenShareReactClient>, 'stream'> & {
46+
stream: RNMediaStream | null;
47+
};
48+
49+
export type UseCustomSourceResult = Omit<ReturnType<typeof useCustomSourceReactClient>, 'stream' | 'setStream'> & {
50+
stream: RNMediaStream | undefined;
51+
setStream: (newStream: RNMediaStream | null) => Promise<void>;
52+
};
53+
54+
export type UseInitializeDevicesReturn = {
55+
initializeDevices: (
56+
...args: Parameters<ReturnType<typeof useInitializeDevicesReactClient>['initializeDevices']>
57+
) => Promise<InitializeDevicesResult>;
58+
};
59+
2960
export type Track = Omit<ReactClientTrack, 'stream'> & { stream: RNMediaStream | null };
3061

3162
export type RemoteTrack = Omit<ReactClientRemoteTrack, 'stream'> & { stream: RNMediaStream | null };

0 commit comments

Comments
 (0)