From 5b4d171ccbde50aa784c9a6b7c432603f1f212c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20Pit-Claudel?= <clement.pit-claudel@epfl.ch>
Date: Fri, 20 Dec 2024 00:42:50 +0100
Subject: [PATCH] client: Move ProtocolInfo to shared/

---
 js/src/main/scala/cs214/webapp/client/Pages.scala | 8 ++------
 shared/src/main/scala/cs214/webapp/Common.scala   | 5 +++++
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/js/src/main/scala/cs214/webapp/client/Pages.scala b/js/src/main/scala/cs214/webapp/client/Pages.scala
index 2cc7a02..797deed 100644
--- a/js/src/main/scala/cs214/webapp/client/Pages.scala
+++ b/js/src/main/scala/cs214/webapp/client/Pages.scala
@@ -262,16 +262,12 @@ case class AppPage(appId: AppId, uiId: UIId, instanceId: InstanceId, userId: Use
     )
     maybeApp.get
 
-  enum ProtocolInfo(secure: String, insecure: String):
-    case WebSocket extends ProtocolInfo("wss", "ws")
-    case Http extends ProtocolInfo("https", "http")
-    def proto: String = if dom.window.location.protocol.startsWith("https") then secure else insecure
-
   def substituteInstanceInfo(endpointTemplate: String, protocolInfo: ProtocolInfo): String =
     val port = dom.window.location.port
     val hostname = dom.window.location.hostname
+    val tls = dom.window.location.protocol.startsWith("https")
     endpointTemplate
-      .replace("{{protocol}}", protocolInfo.proto)
+      .replace("{{protocol}}", protocolInfo.proto(tls))
       .replace("{{authority}}", hostname + (if port.nonEmpty then f":$port" else ""))
       .replace("{{userId}}", URLEncoder.encode(userId, "UTF-8"))
 
diff --git a/shared/src/main/scala/cs214/webapp/Common.scala b/shared/src/main/scala/cs214/webapp/Common.scala
index 75a6a81..abf60db 100644
--- a/shared/src/main/scala/cs214/webapp/Common.scala
+++ b/shared/src/main/scala/cs214/webapp/Common.scala
@@ -45,3 +45,8 @@ object Endpoints:
   val App = "/app"
   val WebSocket = "/ws"
 
+/** Known protocols */
+enum ProtocolInfo(secure: String, insecure: String):
+  case WebSocket extends ProtocolInfo("wss", "ws")
+  case Http extends ProtocolInfo("https", "http")
+  def proto(tls: Boolean): String = if tls then secure else insecure
-- 
GitLab