mirror of https://github.com/vector-im/riot-web
				
				
				
			Prevent starting another voice broadcast (#9457)
							parent
							
								
									13fbd096b0
								
							
						
					
					
						commit
						8066b9ffbe
					
				|  | @ -113,6 +113,11 @@ export const startNewVoiceBroadcastRecording = async ( | |||
|     client: MatrixClient, | ||||
|     recordingsStore: VoiceBroadcastRecordingsStore, | ||||
| ): Promise<VoiceBroadcastRecording | null> => { | ||||
|     if (recordingsStore.getCurrent()) { | ||||
|         showAlreadyRecordingDialog(); | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     const currentUserId = client.getUserId(); | ||||
| 
 | ||||
|     if (!room.currentState.maySendStateEvent(VoiceBroadcastInfoEventType, currentUserId)) { | ||||
|  |  | |||
|  | @ -23,7 +23,30 @@ exports[`startNewVoiceBroadcastRecording when the current user is allowed to sen | |||
| } | ||||
| `; | ||||
| 
 | ||||
| exports[`startNewVoiceBroadcastRecording when the current user is allowed to send voice broadcast info state events when there already is a live broadcast of the current user should show an info dialog 1`] = ` | ||||
| exports[`startNewVoiceBroadcastRecording when the current user is allowed to send voice broadcast info state events when there already is a live broadcast of the current user in the room should show an info dialog 1`] = ` | ||||
| [MockFunction] { | ||||
|   "calls": Array [ | ||||
|     Array [ | ||||
|       [Function], | ||||
|       Object { | ||||
|         "description": <p> | ||||
|           You are already recording a voice broadcast. Please end your current voice broadcast to start a new one. | ||||
|         </p>, | ||||
|         "hasCloseButton": true, | ||||
|         "title": "Can't start a new voice broadcast", | ||||
|       }, | ||||
|     ], | ||||
|   ], | ||||
|   "results": Array [ | ||||
|     Object { | ||||
|       "type": "return", | ||||
|       "value": undefined, | ||||
|     }, | ||||
|   ], | ||||
| } | ||||
| `; | ||||
| 
 | ||||
| exports[`startNewVoiceBroadcastRecording when the current user is allowed to send voice broadcast info state events when there is already a current voice broadcast should show an info dialog 1`] = ` | ||||
| [MockFunction] { | ||||
|   "calls": Array [ | ||||
|     Array [ | ||||
|  |  | |||
|  | @ -67,6 +67,7 @@ describe("startNewVoiceBroadcastRecording", () => { | |||
| 
 | ||||
|         recordingsStore = { | ||||
|             setCurrent: jest.fn(), | ||||
|             getCurrent: jest.fn(), | ||||
|         } as unknown as VoiceBroadcastRecordingsStore; | ||||
| 
 | ||||
|         infoEvent = mkVoiceBroadcastInfoStateEvent(roomId, VoiceBroadcastInfoState.Started, client.getUserId()); | ||||
|  | @ -132,7 +133,25 @@ describe("startNewVoiceBroadcastRecording", () => { | |||
|             }); | ||||
|         }); | ||||
| 
 | ||||
|         describe("when there already is a live broadcast of the current user", () => { | ||||
|         describe("when there is already a current voice broadcast", () => { | ||||
|             beforeEach(async () => { | ||||
|                 mocked(recordingsStore.getCurrent).mockReturnValue( | ||||
|                     new VoiceBroadcastRecording(infoEvent, client), | ||||
|                 ); | ||||
| 
 | ||||
|                 result = await startNewVoiceBroadcastRecording(room, client, recordingsStore); | ||||
|             }); | ||||
| 
 | ||||
|             it("should not start a voice broadcast", () => { | ||||
|                 expect(result).toBeNull(); | ||||
|             }); | ||||
| 
 | ||||
|             it("should show an info dialog", () => { | ||||
|                 expect(Modal.createDialog).toMatchSnapshot(); | ||||
|             }); | ||||
|         }); | ||||
| 
 | ||||
|         describe("when there already is a live broadcast of the current user in the room", () => { | ||||
|             beforeEach(async () => { | ||||
|                 room.currentState.setStateEvents([ | ||||
|                     mkVoiceBroadcastInfoStateEvent(roomId, VoiceBroadcastInfoState.Running, client.getUserId()), | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Michael Weimann
						Michael Weimann