diff options
| author | RblSb <msrblsb@gmail.com> | 2020-02-24 07:58:56 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2020-02-24 07:58:56 +0300 |
| commit | 9c6cd2c2310d2e3ce3d1a6e3350a97e7ba0ca657 (patch) | |
| tree | 3eb12f0eee7ba05b7e70c740561eff31e06b608a /src/client/Main.hx | |
| parent | c561fb9e2e42e4968f2b48cd535f208e90f8c12c (diff) | |
Start working on user folder
Diffstat (limited to 'src/client/Main.hx')
| -rw-r--r-- | src/client/Main.hx | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/src/client/Main.hx b/src/client/Main.hx index 96353f8..432a095 100644 --- a/src/client/Main.hx +++ b/src/client/Main.hx @@ -20,6 +20,8 @@ class Main { final clients:Array<Client> = []; var pageTitle = document.title; + final host:String; + var globalIp = ""; var config:Null<Config>; final filters:Array<{regex:EReg, replace:String}> = []; var personal = new Client("Unknown", 0); @@ -35,9 +37,13 @@ class Main { player = new Player(this); if (host == null) host = Browser.location.hostname; if (host == "") host = "localhost"; + this.host = host; initListeners(); - onTimeGet.run = () -> send({type: GetTime}); + onTimeGet.run = () -> { + if (player.isListEmpty()) return; + send({type: GetTime}); + } document.onvisibilitychange = () -> { if (!document.hidden && onBlinkTab != null) { document.title = getPageTitle(); @@ -117,7 +123,13 @@ class Main { } function addVideo(url:String, atEnd:Bool, callback:()->Void):Void { - if (!url.startsWith("http")) url = '${Browser.location.protocol}//$url'; + final protocol = Browser.location.protocol; + if (url.startsWith("/")) { + final host = Browser.location.hostname; + final port = Browser.location.port; + url = '$protocol//$host:$port$url'; + } + if (!url.startsWith("http")) url = '$protocol//$url'; var name = url.substr(url.lastIndexOf('/') + 1); final matchName = ~/^(.+)\./; if (matchName.match(name)) name = matchName.matched(1); @@ -149,6 +161,11 @@ class Main { ]; } + public function tryLocalIp(url:String):String { + if (host == globalIp) return url; + return url.replace(globalIp, host); + } + function getRemoteVideoDuration(src:String, callback:(duration:Float)->Void):Void { final player:Element = ge("#ytapiplayer"); final video = document.createVideoElement(); @@ -173,38 +190,49 @@ class Main { case Connected: onConnected(data); onTimeGet.run(); + case Login: onLogin(data.login.clients, data.login.clientName); + case LoginError: final text = Lang.get("usernameError") .replace("$MAX", '${config.maxLoginLength}'); serverMessage(4, text); + case Logout: updateClients(data.logout.clients); personal = new Client(data.logout.clientName, 0); showGuestLoginPanel(); + case UpdateClients: updateClients(data.updateClients.clients); personal = clients.getByName(personal.name, personal); + case Message: addMessage(data.message.clientName, data.message.text); + case AddVideo: if (player.isListEmpty()) player.setVideo(data.addVideo.item); player.addVideoItem(data.addVideo.item, data.addVideo.atEnd); + case VideoLoaded: player.setTime(0); player.play(); + case RemoveVideo: player.removeItem(data.removeVideo.url); if (player.isListEmpty()) player.pause(); + case Pause: if (isLeader()) return; player.pause(); player.setTime(data.pause.time); + case Play: if (isLeader()) return; player.setTime(data.play.time); player.play(); + case GetTime: final newTime = data.getTime.time; final time = player.getTime(); @@ -219,23 +247,29 @@ class Main { else player.pause(); if (Math.abs(time - newTime) < 2) return; player.setTime(newTime); + case SetTime: final newTime = data.setTime.time; final time = player.getTime(); if (Math.abs(time - newTime) < 2) return; player.setTime(newTime); + case Rewind: player.setTime(data.rewind.time); + case SetLeader: clients.setLeader(data.setLeader.clientName); updateUserList(); setLeaderButton(isLeader()); if (isLeader()) player.setTime(player.getTime(), false); + case ClearChat: ge("#messagebuffer").innerHTML = ""; + case ClearPlaylist: player.clearItems(); if (player.isListEmpty()) player.pause(); + case ShufflePlaylist: // server-only case UpdatePlaylist: player.setItems(data.updatePlaylist.videoList); @@ -244,6 +278,7 @@ class Main { function onConnected(data:WsEvent):Void { final connected = data.connected; + globalIp = connected.globalIp; setConfig(connected.config); if (connected.isUnknownClient) { updateClients(connected.clients); |
