1
0
Fork 0
mirror of https://gitlab.com/futo-org/fcast.git synced 2025-08-03 15:57:01 +00:00

WebOS 22 and 6.0 collection of fixes

This commit is contained in:
Michael Hollister 2024-12-17 22:59:41 -06:00
parent 902ccff8bc
commit d57e1368b1
13 changed files with 228 additions and 36 deletions

View file

@ -40,11 +40,23 @@ if (TARGET === 'electron') {
let onSeekCb, onSetVolumeCb, onSetSpeedCb;
let playerWindowOpen = false;
const keepAliveService = window.webOS.service.request(`luna://${serviceId}/`, {
method:"keepAlive",
parameters: {},
onSuccess: (message: any) => {
console.log(`Player: keepAlive ${JSON.stringify(message)}`);
},
onFailure: (message: any) => {
console.error(`Player: keepAlive ${JSON.stringify(message)}`);
},
// onComplete: (message) => {},
});
const playService = window.webOS.service.request(`luna://${serviceId}/`, {
method:"play",
parameters: {},
onSuccess: (message: any) => {
console.log(JSON.stringify(message));
// console.log(JSON.stringify(message));
if (message.value.subscribed === true) {
console.log('Player: Registered play handler with service');
}
@ -122,8 +134,10 @@ if (TARGET === 'electron') {
setVolumeService.cancel();
setSpeedService.cancel();
// window.open('../main_window/index.html');
history.back();
// WebOS 22 and earlier does not work well using the history API,
// so manually handling page navigation...
// history.back();
window.open('../main_window/index.html');
}
},
onFailure: (message: any) => {

View file

@ -258,6 +258,14 @@ function onPlay(_event, value: PlayMessage) {
hlsPlayer.on(Hls.Events.LEVEL_LOADED, (eventName, level: LevelLoadedData) => {
isLive = level.details.live;
isLivePosition = isLive ? true : false;
// Event can fire after video load and play initialization
if (isLive && playerCtrlLiveBadge.style.display === "none") {
playerCtrlLiveBadge.style.display = "block";
playerCtrlPosition.style.display = "none";
playerCtrlDurationSeparator.style.display = "none";
playerCtrlDuration.style.display = "none";
}
});
player = new Player(PlayerType.Hls, videoElement, hlsPlayer);
@ -717,6 +725,10 @@ const volumeIncrement = 0.1;
function keyDownEventListener(event: any) {
// console.log("KeyDown", event);
const handledCase = targetKeyDownEventListener(event);
if (handledCase) {
return;
}
switch (event.code) {
case 'KeyF':
@ -729,15 +741,11 @@ function keyDownEventListener(event: any) {
event.preventDefault();
break;
case 'ArrowLeft':
// Skip back
player.setCurrentTime(Math.max(player.getCurrentTime() - skipInterval, 0));
skipBack();
event.preventDefault();
break;
case 'ArrowRight':
// Skip forward
if (!isLivePosition) {
player.setCurrentTime(Math.min(player.getCurrentTime() + skipInterval, player.getDuration()));
}
skipForward();
event.preventDefault();
break;
case "Home":
@ -756,7 +764,7 @@ function keyDownEventListener(event: any) {
case 'KeyK':
case 'Space':
case 'Enter':
// Pause/Continue
// Play/pause toggle
if (player.isPaused()) {
player.play();
} else {
@ -777,11 +785,20 @@ function keyDownEventListener(event: any) {
volumeChangeHandler(Math.max(player.getVolume() - volumeIncrement, 0));
break;
default:
targetKeyDownEventListener(event);
break;
}
}
function skipBack() {
player.setCurrentTime(Math.max(player.getCurrentTime() - skipInterval, 0));
}
function skipForward() {
if (!isLivePosition) {
player.setCurrentTime(Math.min(player.getCurrentTime() + skipInterval, player.getDuration()));
}
}
document.addEventListener('keydown', keyDownEventListener);
export {
@ -806,4 +823,6 @@ export {
onPlay,
playerCtrlStateUpdate,
formatDuration,
skipBack,
skipForward,
};