aboutsummaryrefslogtreecommitdiff
path: root/assets/src
diff options
context:
space:
mode:
Diffstat (limited to 'assets/src')
-rw-r--r--assets/src/components/RequestPage.svelte5
-rw-r--r--assets/src/components/share/Requests.svelte5
-rw-r--r--assets/src/network/channel/connection.ts25
-rw-r--r--assets/src/network/channel/request.ts6
-rw-r--r--assets/src/network/channel/share.ts12
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) {