fix: Increase reliability of media auto actions (e.g. play) (#1934)

Refactors media player handling entirely to make the code more
consistent and less boilerplate. Add testing for media player actions.

- Closes #1921
- Closes #1916
This commit is contained in:
Dermot Duffy
2025-03-03 20:59:01 -08:00
committed by GitHub
parent d4650eae8a
commit 3b77b11196
58 changed files with 1972 additions and 1165 deletions
@@ -19,7 +19,7 @@ import {
MenuItem,
ViewDisplayMode,
} from '../../src/config/types';
import { AdvancedCameraCardMediaPlayer } from '../../src/types';
import { MediaPlayerController } from '../../src/types';
import { createGeneralAction, createViewAction } from '../../src/utils/action';
import { ViewMedia } from '../../src/view/media';
import { MediaQueriesResults } from '../../src/view/media-queries-results';
@@ -1349,13 +1349,13 @@ describe('MenuButtonController', () => {
});
it('should have pause button', () => {
const player = mock<AdvancedCameraCardMediaPlayer>();
const mediaPlayerController = mock<MediaPlayerController>();
const buttons = calculateButtons(controller, {
currentMediaLoadedInfo: createMediaLoadedInfo({
capabilities: {
supportsPause: true,
},
player: player,
mediaPlayerController,
}),
});
@@ -1370,14 +1370,14 @@ describe('MenuButtonController', () => {
});
it('should have play button', () => {
const player = mock<AdvancedCameraCardMediaPlayer>();
player.isPaused.mockReturnValue(true);
const mediaPlayerController = mock<MediaPlayerController>();
mediaPlayerController.isPaused.mockReturnValue(true);
const buttons = calculateButtons(controller, {
currentMediaLoadedInfo: createMediaLoadedInfo({
capabilities: {
supportsPause: true,
},
player: player,
mediaPlayerController,
}),
});
@@ -1392,13 +1392,13 @@ describe('MenuButtonController', () => {
});
it('should have mute button', () => {
const player = mock<AdvancedCameraCardMediaPlayer>();
const mediaPlayerController = mock<MediaPlayerController>();
const buttons = calculateButtons(controller, {
currentMediaLoadedInfo: createMediaLoadedInfo({
capabilities: {
hasAudio: true,
},
player: player,
mediaPlayerController,
}),
});
@@ -1413,14 +1413,14 @@ describe('MenuButtonController', () => {
});
it('should have unmute button', () => {
const player = mock<AdvancedCameraCardMediaPlayer>();
player.isMuted.mockReturnValue(true);
const mediaPlayerController = mock<MediaPlayerController>();
mediaPlayerController.isMuted.mockReturnValue(true);
const buttons = calculateButtons(controller, {
currentMediaLoadedInfo: createMediaLoadedInfo({
capabilities: {
hasAudio: true,
},
player: player,
mediaPlayerController,
}),
});
@@ -1437,7 +1437,7 @@ describe('MenuButtonController', () => {
it('should have screenshot button', () => {
const buttons = calculateButtons(controller, {
currentMediaLoadedInfo: createMediaLoadedInfo({
player: mock<AdvancedCameraCardMediaPlayer>(),
mediaPlayerController: mock<MediaPlayerController>(),
}),
});