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,
|
client: MatrixClient,
|
||||||
recordingsStore: VoiceBroadcastRecordingsStore,
|
recordingsStore: VoiceBroadcastRecordingsStore,
|
||||||
): Promise<VoiceBroadcastRecording | null> => {
|
): Promise<VoiceBroadcastRecording | null> => {
|
||||||
|
if (recordingsStore.getCurrent()) {
|
||||||
|
showAlreadyRecordingDialog();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
const currentUserId = client.getUserId();
|
const currentUserId = client.getUserId();
|
||||||
|
|
||||||
if (!room.currentState.maySendStateEvent(VoiceBroadcastInfoEventType, currentUserId)) {
|
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] {
|
[MockFunction] {
|
||||||
"calls": Array [
|
"calls": Array [
|
||||||
Array [
|
Array [
|
||||||
|
|
|
@ -67,6 +67,7 @@ describe("startNewVoiceBroadcastRecording", () => {
|
||||||
|
|
||||||
recordingsStore = {
|
recordingsStore = {
|
||||||
setCurrent: jest.fn(),
|
setCurrent: jest.fn(),
|
||||||
|
getCurrent: jest.fn(),
|
||||||
} as unknown as VoiceBroadcastRecordingsStore;
|
} as unknown as VoiceBroadcastRecordingsStore;
|
||||||
|
|
||||||
infoEvent = mkVoiceBroadcastInfoStateEvent(roomId, VoiceBroadcastInfoState.Started, client.getUserId());
|
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 () => {
|
beforeEach(async () => {
|
||||||
room.currentState.setStateEvents([
|
room.currentState.setStateEvents([
|
||||||
mkVoiceBroadcastInfoStateEvent(roomId, VoiceBroadcastInfoState.Running, client.getUserId()),
|
mkVoiceBroadcastInfoStateEvent(roomId, VoiceBroadcastInfoState.Running, client.getUserId()),
|
||||||
|
|
Loading…
Reference in New Issue