diff options
| author | Melonai <einebeere@gmail.com> | 2021-06-14 11:55:03 +0200 |
|---|---|---|
| committer | Melonai <einebeere@gmail.com> | 2021-06-14 11:55:03 +0200 |
| commit | b98b1cd0e5d07fd37be54592edd362f443a145ad (patch) | |
| tree | 9cf7be00c2a8aeee1a5240ae2024dd7e591d90eb /assets/src | |
| parent | 29573488ada5c5b1f291f7b50dc5a7a7cf76fd29 (diff) | |
| download | rook-b98b1cd0e5d07fd37be54592edd362f443a145ad.tar.zst rook-b98b1cd0e5d07fd37be54592edd362f443a145ad.zip | |
Make connection independent of type
Diffstat (limited to 'assets/src')
| -rw-r--r-- | assets/src/components/RequestPage.svelte | 5 | ||||
| -rw-r--r-- | assets/src/components/share/Requests.svelte | 5 | ||||
| -rw-r--r-- | assets/src/network/channel/connection.ts | 25 | ||||
| -rw-r--r-- | assets/src/network/channel/request.ts | 6 | ||||
| -rw-r--r-- | assets/src/network/channel/share.ts | 12 |
5 files changed, 26 insertions, 27 deletions
diff --git a/assets/src/components/RequestPage.svelte b/assets/src/components/RequestPage.svelte index 0c0b111..d73d9c0 100644 --- a/assets/src/components/RequestPage.svelte +++ b/assets/src/components/RequestPage.svelte @@ -1,9 +1,10 @@ <script lang="ts"> - import { start, Type } from "../network/channel/connection"; + import { start } from "../network/channel/connection"; + import { startRequest } from "../network/channel/request"; // TODO: Switch to store-based state updates. - start(Type.REQUEST); + start().then(startRequest); </script> <main> diff --git a/assets/src/components/share/Requests.svelte b/assets/src/components/share/Requests.svelte index 509d7be..98596c6 100644 --- a/assets/src/components/share/Requests.svelte +++ b/assets/src/components/share/Requests.svelte @@ -1,10 +1,11 @@ <script lang="ts"> - import { getOwnToken, start, Type } from "../../network/channel/connection"; + import { getOwnToken, start } from "../../network/channel/connection"; + import { startShare } from "../../network/channel/share"; import requests from "../../stores/requests"; import Request from "./Request.svelte"; - const startPromise = start(Type.SHARE); + const startPromise = start().then(startShare); // TODO: Switch to store-based state updates. </script> diff --git a/assets/src/network/channel/connection.ts b/assets/src/network/channel/connection.ts index e1ed2d1..c7e9012 100644 --- a/assets/src/network/channel/connection.ts +++ b/assets/src/network/channel/connection.ts @@ -6,17 +6,9 @@ import { UnregisterHandler, } from "./messages/handler"; import type { AnyMessage } from "./messages/messages"; -import { startRequest } from "./request"; -import { startShare } from "./share"; import { connectSocket, fetchToken } from "./socket"; -export enum Type { - NONE, - REQUEST, - SHARE, -} - -enum ConnectionState { +export enum ConnectionState { CONNECTING_SOCKET, FETCHING_TOKEN, CONNECTING_CHANNEL, @@ -30,7 +22,6 @@ export type Connection = { token: string | null; state: ConnectionState; handlers: Handlers; - type: Type; }; const connection: Connection = { @@ -39,23 +30,15 @@ const connection: Connection = { token: null, state: ConnectionState.CONNECTING_SOCKET, handlers: {}, - type: Type.NONE, }; -export async function start(type: Type.REQUEST | Type.SHARE) { - connection.type = type; - +export async function start() { await connectSocket(connection.socket); updateState(ConnectionState.FETCHING_TOKEN); connection.token = await fetchToken(connection.socket); - updateState(ConnectionState.CONNECTING_CHANNEL); - type === Type.SHARE - ? await startShare(connection) - : await startRequest(connection); - - updateState(ConnectionState.CONNECTED) + return connection; } export function send(event: string, data: any): Push { @@ -95,7 +78,7 @@ export function getOwnToken(): string { return connection.token; } -function updateState(state: ConnectionState) { +export function updateState(state: ConnectionState) { // TODO: Notify state listeners connection.state = state; } diff --git a/assets/src/network/channel/request.ts b/assets/src/network/channel/request.ts index 4a1c91f..693e408 100644 --- a/assets/src/network/channel/request.ts +++ b/assets/src/network/channel/request.ts @@ -1,10 +1,12 @@ import getShareToken from "../../utils/getShareToken"; import { answer } from "../transfer/request"; -import { Connection, on } from "./connection"; +import { Connection, ConnectionState, on, updateState } from "./connection"; import type { RequestAcceptedMessage } from "./messages/messages"; import { joinRequestChannel } from "./socket"; export async function startRequest(connection: Connection) { + updateState(ConnectionState.CONNECTING_CHANNEL); + const requestChannel = await joinRequestChannel( connection.socket, connection.token, @@ -13,6 +15,8 @@ export async function startRequest(connection: Connection) { connection.channel = requestChannel; on("request_accepted", onRequestAccepted); + + updateState(ConnectionState.CONNECTED); } async function onRequestAccepted(message: RequestAcceptedMessage) { diff --git a/assets/src/network/channel/share.ts b/assets/src/network/channel/share.ts index 6dbf0cd..81942af 100644 --- a/assets/src/network/channel/share.ts +++ b/assets/src/network/channel/share.ts @@ -1,5 +1,11 @@ import requests from "../../stores/requests"; -import { Connection, on, onWithToken } from "./connection"; +import { + Connection, + ConnectionState, + on, + onWithToken, + updateState, +} from "./connection"; import type { UnregisterHandler } from "./messages/handler"; import type { NewRequestMessage, @@ -8,6 +14,8 @@ import type { import { joinShareChannel } from "./socket"; export async function startShare(connection: Connection) { + updateState(ConnectionState.CONNECTING_CHANNEL); + const shareChannel = await joinShareChannel( connection.socket, connection.token @@ -15,6 +23,8 @@ export async function startShare(connection: Connection) { connection.channel = shareChannel; on("new_request", onNewRequest); + + updateState(ConnectionState.CONNECTED); } function onNewRequest(message: NewRequestMessage) { |
