Split room state hooks out into separate files
This commit is contained in:
		
					parent
					
						
							
								02b2aef958
							
						
					
				
			
			
				commit
				
					
						5ed2dc6e0e
					
				
			
		
					 5 changed files with 54 additions and 14 deletions
				
			
		| 
						 | 
					@ -29,7 +29,7 @@ import { LobbyView } from "./LobbyView";
 | 
				
			||||||
import { InCallView } from "./InCallView";
 | 
					import { InCallView } from "./InCallView";
 | 
				
			||||||
import { PTTCallView } from "./PTTCallView";
 | 
					import { PTTCallView } from "./PTTCallView";
 | 
				
			||||||
import { CallEndedView } from "./CallEndedView";
 | 
					import { CallEndedView } from "./CallEndedView";
 | 
				
			||||||
import { useRoomAvatar } from "./useRoomState";
 | 
					import { useRoomAvatar } from "./useRoomAvatar";
 | 
				
			||||||
import { useSentryGroupCallHandler } from "./useSentryGroupCallHandler";
 | 
					import { useSentryGroupCallHandler } from "./useSentryGroupCallHandler";
 | 
				
			||||||
import { useLocationNavigation } from "../useLocationNavigation";
 | 
					import { useLocationNavigation } from "../useLocationNavigation";
 | 
				
			||||||
import { useMediaHandler } from "../settings/useMediaHandler";
 | 
					import { useMediaHandler } from "../settings/useMediaHandler";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,7 +58,7 @@ import { useFullscreen } from "../video-grid/useFullscreen";
 | 
				
			||||||
import { AudioContainer } from "../video-grid/AudioContainer";
 | 
					import { AudioContainer } from "../video-grid/AudioContainer";
 | 
				
			||||||
import { useAudioOutputDevice } from "../video-grid/useAudioOutputDevice";
 | 
					import { useAudioOutputDevice } from "../video-grid/useAudioOutputDevice";
 | 
				
			||||||
import { widget, ElementWidgetActions } from "../widget";
 | 
					import { widget, ElementWidgetActions } from "../widget";
 | 
				
			||||||
import { useJoinRule } from "./useRoomState";
 | 
					import { useJoinRule } from "./useJoinRule";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const canScreenshare = "getDisplayMedia" in (navigator.mediaDevices ?? {});
 | 
					const canScreenshare = "getDisplayMedia" in (navigator.mediaDevices ?? {});
 | 
				
			||||||
// There is currently a bug in Safari our our code with cloning and sending MediaStreams
 | 
					// There is currently a bug in Safari our our code with cloning and sending MediaStreams
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										26
									
								
								src/room/useJoinRule.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/room/useJoinRule.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2022 New Vector Ltd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { useCallback } from "react";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import type { Room } from "matrix-js-sdk/src/models/room";
 | 
				
			||||||
 | 
					import { useRoomState } from "./useRoomState";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const useJoinRule = (room: Room) =>
 | 
				
			||||||
 | 
					  useRoomState(
 | 
				
			||||||
 | 
					    room,
 | 
				
			||||||
 | 
					    useCallback((state) => state.getJoinRule(), [])
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
							
								
								
									
										26
									
								
								src/room/useRoomAvatar.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/room/useRoomAvatar.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2022 New Vector Ltd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { useCallback } from "react";
 | 
				
			||||||
 | 
					import { Room } from "matrix-js-sdk/src/models/room";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { useRoomState } from "./useRoomState";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const useRoomAvatar = (room: Room) =>
 | 
				
			||||||
 | 
					  useRoomState(
 | 
				
			||||||
 | 
					    room,
 | 
				
			||||||
 | 
					    useCallback(() => room.getMxcAvatarUrl(), [room])
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
| 
						 | 
					@ -37,15 +37,3 @@ export const useRoomState = <T>(room: Room, f: (state: RoomState) => T): T => {
 | 
				
			||||||
  // eslint-disable-next-line react-hooks/exhaustive-deps
 | 
					  // eslint-disable-next-line react-hooks/exhaustive-deps
 | 
				
			||||||
  return useMemo(() => f(room.currentState), [room, f, numUpdates]);
 | 
					  return useMemo(() => f(room.currentState), [room, f, numUpdates]);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
export const useRoomAvatar = (room: Room) =>
 | 
					 | 
				
			||||||
  useRoomState(
 | 
					 | 
				
			||||||
    room,
 | 
					 | 
				
			||||||
    useCallback(() => room.getMxcAvatarUrl(), [room])
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const useJoinRule = (room: Room) =>
 | 
					 | 
				
			||||||
  useRoomState(
 | 
					 | 
				
			||||||
    room,
 | 
					 | 
				
			||||||
    useCallback((state) => state.getJoinRule(), [])
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue