diff options
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/Buttons.hx | 8 | ||||
| -rw-r--r-- | src/client/Main.hx | 13 | ||||
| -rw-r--r-- | src/client/Player.hx | 5 |
3 files changed, 15 insertions, 11 deletions
diff --git a/src/client/Buttons.hx b/src/client/Buttons.hx index 902da1b..aa7e1cc 100644 --- a/src/client/Buttons.hx +++ b/src/client/Buttons.hx @@ -144,7 +144,13 @@ class Buttons { final lockPlaylist = ge("#lockplaylist"); lockPlaylist.onclick = e -> { - if (main.isAdmin()) main.send({type: TogglePlaylistLock}); + if (!main.hasPermission(LockPlaylistPerm)) return; + if (main.isPlaylistOpen) { + if (!window.confirm(Lang.get("lockPlaylistConfirm"))) return; + } + main.send({ + type: TogglePlaylistLock + }); } final showMediaUrl = ge("#showmediaurl"); diff --git a/src/client/Main.hx b/src/client/Main.hx index b3eaea9..fad4e4f 100644 --- a/src/client/Main.hx +++ b/src/client/Main.hx @@ -1,7 +1,6 @@ package client; import Client.ClientData; -import Client.ClientGroup; import Types.Config; import Types.Permission; import Types.VideoData; @@ -33,6 +32,7 @@ class Main { public var forceSyncNextTick = false; public final host:String; public var globalIp(default, null) = ""; + public var isPlaylistOpen = true; final clients:Array<Client> = []; var pageTitle = document.title; @@ -192,6 +192,10 @@ class Main { return personal.name; } + public function hasPermission(permission:Permission):Bool { + return personal.hasPermission(permission, config.permissions); + } + final mask = ~/\${([0-9]+)-([0-9]+)}/g; function handleUrlMasks(links:Array<String>):Void { @@ -959,6 +963,7 @@ class Main { } function setPlaylistLock(isOpen:Bool):Void { + isPlaylistOpen = isOpen; final lockPlaylist = ge("#lockplaylist"); final icon = lockPlaylist.firstElementChild; if (isOpen) { @@ -984,12 +989,6 @@ class Main { Settings.write(settings); } - public function hasPermission(group:ClientGroup, permission:Permission):Bool { - final id = group.getName().toLowerCase(); - final arr:Array<Permission> = Reflect.field(config.permissions, id); - return arr.contains(permission); - } - public function toggleLeader():Void { // change button style before answer setLeaderButton(!personal.isLeader); diff --git a/src/client/Player.hx b/src/client/Player.hx index a147e6a..1979091 100644 --- a/src/client/Player.hx +++ b/src/client/Player.hx @@ -82,7 +82,7 @@ class Player { public function toggleItemType(pos:Int):Void { videoList.toggleItemType(pos); final el = videoItemsEl.children[pos]; - setItemElementType(el, videoList.getItem(videoList.pos).isTemp); + setItemElementType(el, videoList.getItem(pos).isTemp); } function setPlayer(newPlayer:IPlayer):Void { @@ -174,8 +174,7 @@ class Player { final hasAutoPause = main.hasLeaderOnPauseRequest() && videoList.length > 0; if (hasAutoPause) { // do not remove leader if user cannot request it back - final group:Client.ClientGroup = main.isAdmin() ? Admin : User; - if (main.hasPermission(group, RequestLeaderPerm)) main.toggleLeader(); + if (main.hasPermission(RequestLeaderPerm)) main.toggleLeader(); } } |
