about summary refs log tree commit diff
path: root/assets/src/network/socket.ts
diff options
context:
space:
mode:
Diffstat (limited to 'assets/src/network/socket.ts')
-rw-r--r--assets/src/network/socket.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/assets/src/network/socket.ts b/assets/src/network/socket.ts
new file mode 100644
index 0000000..c056b41
--- /dev/null
+++ b/assets/src/network/socket.ts
@@ -0,0 +1,33 @@
+import { Socket } from "phoenix";
+import requests from "../stores/requests";
+
+let socket = new Socket("/socket", {});
+socket.connect();
+
+export const getToken: () => Promise<string> = () => {
+    let tokenChannel = socket.channel("token", {});
+    return new Promise((resolve, reject) => {
+        tokenChannel
+            .join()
+            .receive("ok", () => {
+                tokenChannel
+                    .push("get_token", {}, 5000)
+                    .receive("ok", ({ token }) => resolve(token))
+                    .receive("error", err => reject(err))
+                    .receive("timeout", err => reject(err));
+            })
+            .receive("error", err => reject(err));
+    });
+};
+
+export const joinShareChannel = token => {
+    let shareChannel = socket.channel(`share:${token}`);
+
+    shareChannel.on("request", requests.addRequest);
+
+    shareChannel
+        .join()
+        .receive("error", err =>
+            console.log("failed joining share channel:" + err)
+        );
+};