1- import KeyboardManager from "./resources/keyboardManager.js"
1+ import KeyboardManager from "./resources/keyboardManager.js" ;
22
33String . prototype . format = function ( ) {
44 return [ ...arguments ] . reduce ( ( p , c ) => p . replace ( / % s / , c ) , this ) ;
55} ;
66
7- const discordInstanceId = getCookie ( "discord-instance-id" ) ;
8- const rootPath = `${ discordInstanceId ? ".proxy/" : "" } {{.RootPath}}` ;
7+ const rootPath = `{{.RootPath}}` ;
98const keyboardManager = new KeyboardManager ( ) ;
109
1110let socketIsConnecting = false ;
@@ -174,11 +173,14 @@ function showHelpDialog() {
174173 const controlsLabel = document . createElement ( "b" ) ;
175174 controlsLabel . innerText = '{{.Translation.Get "controls"}}' ;
176175
177- const undoModifierKeysString = keyboardManager . get ( "undoModifier" ) . split ( "+" ) . map ( k => `<kbd>${ k } </kbd>` ) . join ( "+" ) ;
176+ const undoModifierKeysString = keyboardManager
177+ . get ( "undoModifier" )
178+ . split ( "+" )
179+ . map ( ( k ) => `<kbd>${ k } </kbd>` )
180+ . join ( "+" ) ;
178181 const controlsText = document . createElement ( "div" ) ;
179182 controlsText . classList . add ( "help-controls-grid" ) ;
180- controlsText . innerHTML =
181- `
183+ controlsText . innerHTML = `
182184 <span>{{.Translation.Get "pencil"}}</span><span dir="ltr"><kbd>${ keyboardManager . get ( "pen" ) } </kbd></span>
183185 <span>{{.Translation.Get "fill-bucket"}}</span><span dir="ltr"><kbd>${ keyboardManager . get ( "bucket" ) } </kbd></span>
184186 <span>{{.Translation.Get "eraser"}}</span><span dir="ltr"><kbd>${ keyboardManager . get ( "rubber" ) } </kbd></span>
@@ -452,21 +454,31 @@ const toolButtonPen = document.getElementById("tool-type-pencil");
452454const toolButtonRubber = document . getElementById ( "tool-type-rubber" ) ;
453455const toolButtonFill = document . getElementById ( "tool-type-fill" ) ;
454456
455- const pencilImage = document . getElementById ( "use-pencil-button-image" ) ;
456- const eraserImage = document . getElementById ( "use-eraser-button-image" ) ;
457- const bucketImage = document . getElementById ( "use-fill-bucket-button-image" ) ;
458- const undoImage = document . getElementById ( "undo-button-image" ) ;
457+ const pencilImage = document . getElementById ( "use-pencil-button-image" ) ;
458+ const eraserImage = document . getElementById ( "use-eraser-button-image" ) ;
459+ const bucketImage = document . getElementById ( "use-fill-bucket-button-image" ) ;
460+ const undoImage = document . getElementById ( "undo-button-image" ) ;
459461const size8buttonWrapper = document . getElementById ( "size-8-button-wrapper" ) ;
460462const size16buttonWrapper = document . getElementById ( "size-16-button-wrapper" ) ;
461463const size24buttonWrapper = document . getElementById ( "size-24-button-wrapper" ) ;
462464const size32buttonWrapper = document . getElementById ( "size-32-button-wrapper" ) ;
463465
464-
465- pencilImage . setAttribute ( "title" , `${ pencilImage . getAttribute ( "title" ) } (${ keyboardManager . get ( "pencil" ) } )` ) ;
466- eraserImage . setAttribute ( "title" , `${ eraserImage . getAttribute ( "title" ) } (${ keyboardManager . get ( "rubber" ) } )` ) ;
467- bucketImage . setAttribute ( "title" , `${ bucketImage . getAttribute ( "title" ) } (${ keyboardManager . get ( "bucket" ) } )` ) ;
468- undoImage . setAttribute ( "title" , `${ undoImage . getAttribute ( "title" ) } (${ keyboardManager . get ( "undoModifier" ) } +${ keyboardManager . get ( "undo" ) } )` ) ;
469-
466+ pencilImage . setAttribute (
467+ "title" ,
468+ `${ pencilImage . getAttribute ( "title" ) } (${ keyboardManager . get ( "pencil" ) } )` ,
469+ ) ;
470+ eraserImage . setAttribute (
471+ "title" ,
472+ `${ eraserImage . getAttribute ( "title" ) } (${ keyboardManager . get ( "rubber" ) } )` ,
473+ ) ;
474+ bucketImage . setAttribute (
475+ "title" ,
476+ `${ bucketImage . getAttribute ( "title" ) } (${ keyboardManager . get ( "bucket" ) } )` ,
477+ ) ;
478+ undoImage . setAttribute (
479+ "title" ,
480+ `${ undoImage . getAttribute ( "title" ) } (${ keyboardManager . get ( "undoModifier" ) } +${ keyboardManager . get ( "undo" ) } )` ,
481+ ) ;
470482
471483if ( sizeButton8 . checked ) {
472484 setLineWidthNoUpdate ( 8 ) ;
@@ -1894,10 +1906,9 @@ function isAnyDialogVisible() {
18941906function getModifierKey ( event , modifierKey ) {
18951907 // Split by "+" and ensure every specified modifier property is true on the event.
18961908 // e.g. "ctrl+shift" checks event.ctrlKey AND event.shiftKey
1897- return modifierKey . split ( "+" ) . every ( modifier => event [ `${ modifier } Key` ] ) ;
1909+ return modifierKey . split ( "+" ) . every ( ( modifier ) => event [ `${ modifier } Key` ] ) ;
18981910}
18991911
1900-
19011912function onKeyDown ( event ) {
19021913 //Avoid firing actions if the user is in the chat.
19031914 if ( document . activeElement instanceof HTMLInputElement ) {
@@ -1921,7 +1932,7 @@ function onKeyDown(event) {
19211932 } else if ( event . key === keyboardManager . get ( "bucket" ) ) {
19221933 toolButtonFill . click ( ) ;
19231934 chooseTool ( fillBucket ) ;
1924- } else if ( event . key === keyboardManager . get ( "rubber" ) ) {
1935+ } else if ( event . key === keyboardManager . get ( "rubber" ) ) {
19251936 toolButtonRubber . click ( ) ;
19261937 chooseTool ( rubber ) ;
19271938 } else if ( event . key === keyboardManager . get ( "size8" ) ) {
@@ -1936,7 +1947,10 @@ function onKeyDown(event) {
19361947 } else if ( event . key === keyboardManager . get ( "size32" ) ) {
19371948 sizeButton32 . click ( ) ;
19381949 setLineWidth ( 32 ) ;
1939- } else if ( getModifierKey ( event , keyboardManager . get ( "undoModifier" ) ) && event . key . toLowerCase ( ) === keyboardManager . get ( "undo" ) ) {
1950+ } else if (
1951+ getModifierKey ( event , keyboardManager . get ( "undoModifier" ) ) &&
1952+ event . key . toLowerCase ( ) === keyboardManager . get ( "undo" )
1953+ ) {
19401954 undoAndSendEvent ( ) ;
19411955 }
19421956}
@@ -2066,7 +2080,20 @@ const connectToWebsocket = () => {
20662080
20672081 socketIsConnecting = true ;
20682082
2069- socket = new WebSocket ( `${ rootPath } /v1/lobby/ws` ) ;
2083+ // rootPath is required to always contain a trailing slash OR be empty.
2084+ const socketPath = `${ rootPath } /v1/lobby/ws` ;
2085+ let host = location . hostname ;
2086+ if ( location . port && location . port !== "" ) {
2087+ host += ":" + location . port ;
2088+ }
2089+
2090+ if ( location . protocol === "https:" ) {
2091+ console . log ( "Attempting secure socket connection ..." ) ;
2092+ socket = new WebSocket ( `wss://${ host } ${ socketPath } ` ) ;
2093+ } else {
2094+ console . log ( "Attempting socket connection ..." ) ;
2095+ socket = new WebSocket ( `ws://${ host } ${ socketPath } ` ) ;
2096+ }
20702097
20712098 socket . onerror = ( error ) => {
20722099 //Is not connected and we haven't yet said that we are done trying to
0 commit comments