added user permissions to rooms
This commit is contained in:
@@ -402,8 +402,8 @@ const AnimePlayer = (function() {
|
||||
|
||||
// Control functions
|
||||
function togglePlayPause() {
|
||||
if (_roomMode && !_isRoomHost) {
|
||||
console.log('Guests cannot control playback');
|
||||
if (_roomMode && !_isRoomHost && !hasControlPermission()) {
|
||||
showPermissionToast('You need playback control permission');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -411,12 +411,14 @@ const AnimePlayer = (function() {
|
||||
|
||||
if (els.video.paused) {
|
||||
els.video.play().catch(() => {});
|
||||
if (_roomMode && _isRoomHost) {
|
||||
|
||||
if (_roomMode && (_isRoomHost || hasControlPermission())) {
|
||||
sendRoomEvent('play', { currentTime: els.video.currentTime });
|
||||
}
|
||||
} else {
|
||||
els.video.pause();
|
||||
if (_roomMode && _isRoomHost) {
|
||||
|
||||
if (_roomMode && (_isRoomHost || hasControlPermission())) {
|
||||
sendRoomEvent('pause', { currentTime: els.video.currentTime });
|
||||
}
|
||||
}
|
||||
@@ -460,7 +462,7 @@ const AnimePlayer = (function() {
|
||||
|
||||
function seekToPosition(e) {
|
||||
if (!els.video || !els.progressContainer) return;
|
||||
if (_roomMode && !_isRoomHost) return;
|
||||
if (_roomMode && !_isRoomHost && !hasControlPermission()) return;
|
||||
|
||||
const rect = els.progressContainer.getBoundingClientRect();
|
||||
const pos = (e.clientX - rect.left) / rect.width;
|
||||
@@ -468,8 +470,7 @@ const AnimePlayer = (function() {
|
||||
|
||||
els.video.currentTime = newTime;
|
||||
|
||||
// En room mode, enviar evento de seek
|
||||
if (_roomMode && _isRoomHost) {
|
||||
if (_roomMode && (_isRoomHost || hasControlPermission())) {
|
||||
sendRoomEvent('seek', { currentTime: newTime });
|
||||
}
|
||||
}
|
||||
@@ -484,29 +485,63 @@ const AnimePlayer = (function() {
|
||||
|
||||
function seekRelative(seconds) {
|
||||
if (!els.video) return;
|
||||
if (_roomMode && !_isRoomHost) return;
|
||||
if (_roomMode && !_isRoomHost && !hasControlPermission()) {
|
||||
showPermissionToast('You need playback control permission');
|
||||
return;
|
||||
}
|
||||
|
||||
const newTime = Math.max(0, Math.min(els.video.duration, els.video.currentTime + seconds));
|
||||
els.video.currentTime = newTime;
|
||||
|
||||
// En room mode, enviar evento de seek
|
||||
if (_roomMode && _isRoomHost) {
|
||||
if (_roomMode && (_isRoomHost || hasControlPermission())) {
|
||||
sendRoomEvent('seek', { currentTime: newTime });
|
||||
}
|
||||
}
|
||||
|
||||
function seekToPercent(percent) {
|
||||
if (!els.video) return;
|
||||
if (_roomMode && !_isRoomHost) return;
|
||||
|
||||
if (_roomMode && !_isRoomHost && !hasControlPermission()) {
|
||||
showPermissionToast('You need playback control permission');
|
||||
return;
|
||||
}
|
||||
const newTime = els.video.duration * percent;
|
||||
els.video.currentTime = newTime;
|
||||
|
||||
// En room mode, enviar evento de seek
|
||||
if (_roomMode && _isRoomHost) {
|
||||
if (_roomMode && (_isRoomHost || hasControlPermission())) {
|
||||
sendRoomEvent('seek', { currentTime: newTime });
|
||||
}
|
||||
}
|
||||
|
||||
function hasControlPermission() {
|
||||
return window.__userPermissions?.canControl || false;
|
||||
}
|
||||
|
||||
function showPermissionToast(message) {
|
||||
const toast = document.createElement('div');
|
||||
toast.className = 'permission-toast';
|
||||
toast.textContent = message;
|
||||
toast.style.cssText = `
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
background: rgba(239, 68, 68, 0.95);
|
||||
color: white;
|
||||
padding: 16px 24px;
|
||||
border-radius: 10px;
|
||||
font-weight: 600;
|
||||
z-index: 10000;
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.4);
|
||||
animation: fadeIn 0.3s ease;
|
||||
`;
|
||||
document.body.appendChild(toast);
|
||||
|
||||
setTimeout(() => {
|
||||
toast.style.animation = 'fadeOut 0.3s ease';
|
||||
setTimeout(() => toast.remove(), 300);
|
||||
}, 2500);
|
||||
}
|
||||
|
||||
// Video event handlers
|
||||
function onPlay() {
|
||||
if (els.playPauseBtn) {
|
||||
@@ -589,7 +624,9 @@ const AnimePlayer = (function() {
|
||||
}
|
||||
|
||||
function sendRoomEvent(eventType, data = {}) {
|
||||
if (!_roomMode || !_isRoomHost || !_roomWebSocket) return;
|
||||
if (!_roomMode || !_roomWebSocket) return;
|
||||
if (!_isRoomHost && !hasControlPermission()) return;
|
||||
|
||||
if (_roomWebSocket.readyState !== WebSocket.OPEN) return;
|
||||
|
||||
console.log('Sending room event:', eventType, data);
|
||||
|
||||
Reference in New Issue
Block a user