From c3b05a72b7185112ece6e42c99e9a828c8298f04 Mon Sep 17 00:00:00 2001 From: Melonai Date: Thu, 8 Jul 2021 23:29:20 +0200 Subject: State display for incoming and own requests --- assets/src/network/channel/request.ts | 24 ----------- assets/src/network/channel/request_connection.ts | 48 ++++++++++++++++++++++ assets/src/network/channel/share.ts | 45 --------------------- assets/src/network/channel/share_connection.ts | 51 ++++++++++++++++++++++++ 4 files changed, 99 insertions(+), 69 deletions(-) delete mode 100644 assets/src/network/channel/request.ts create mode 100644 assets/src/network/channel/request_connection.ts delete mode 100644 assets/src/network/channel/share.ts create mode 100644 assets/src/network/channel/share_connection.ts (limited to 'assets/src/network/channel') diff --git a/assets/src/network/channel/request.ts b/assets/src/network/channel/request.ts deleted file mode 100644 index 693e408..0000000 --- a/assets/src/network/channel/request.ts +++ /dev/null @@ -1,24 +0,0 @@ -import getShareToken from "../../utils/getShareToken"; -import { answer } from "../transfer/request"; -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, - getShareToken() - ); - connection.channel = requestChannel; - - on("request_accepted", onRequestAccepted); - - updateState(ConnectionState.CONNECTED); -} - -async function onRequestAccepted(message: RequestAcceptedMessage) { - await answer(message); -} diff --git a/assets/src/network/channel/request_connection.ts b/assets/src/network/channel/request_connection.ts new file mode 100644 index 0000000..1b873d3 --- /dev/null +++ b/assets/src/network/channel/request_connection.ts @@ -0,0 +1,48 @@ +import { + requestAccepted, + OwnRequest, + OwnRequestState, +} from "../../models/own_request"; +import getShareToken from "../../utils/getShareToken"; +import { ConnectionState, on, start, updateState } from "./connection"; +import type { + RequestAcceptedMessage, + ShareCancelledMessage, +} from "./messages/messages"; +import { joinRequestChannel } from "./socket"; + +export async function startRequestConnection(ownRequest: OwnRequest) { + const connection = await start(); + + updateState(ConnectionState.CONNECTING_CHANNEL); + + const requestChannel = await joinRequestChannel( + connection.socket, + connection.token, + getShareToken() + ); + connection.channel = requestChannel; + + on("request_accepted", (message: RequestAcceptedMessage) => + onRequestAccepted(message, ownRequest) + ); + + on("share_cancelled", (message: ShareCancelledMessage) => + onShareCancelled(message, ownRequest) + ); + + updateState(ConnectionState.CONNECTED); +} + +// Events which can happen without prior triggers during a request's lifetime + +function onRequestAccepted( + message: RequestAcceptedMessage, + request: OwnRequest +) { + requestAccepted(request, message); +} + +function onShareCancelled(message: ShareCancelledMessage, request: OwnRequest) { + request.state.set(OwnRequestState.SHARE_CANCELLED); +} \ No newline at end of file diff --git a/assets/src/network/channel/share.ts b/assets/src/network/channel/share.ts deleted file mode 100644 index 81942af..0000000 --- a/assets/src/network/channel/share.ts +++ /dev/null @@ -1,45 +0,0 @@ -import requests from "../../stores/requests"; -import { - Connection, - ConnectionState, - on, - onWithToken, - updateState, -} from "./connection"; -import type { UnregisterHandler } from "./messages/handler"; -import type { - NewRequestMessage, - RequestCancelledMessage, -} from "./messages/messages"; -import { joinShareChannel } from "./socket"; - -export async function startShare(connection: Connection) { - updateState(ConnectionState.CONNECTING_CHANNEL); - - const shareChannel = await joinShareChannel( - connection.socket, - connection.token - ); - connection.channel = shareChannel; - - on("new_request", onNewRequest); - - updateState(ConnectionState.CONNECTED); -} - -function onNewRequest(message: NewRequestMessage) { - const token = message.token; - - requests.addRequest(token); - - onWithToken("request_cancelled", token, onRequestCancelled); -} - -function onRequestCancelled( - message: RequestCancelledMessage, - unregister: UnregisterHandler -) { - const token = message.token; - requests.removeRequest(token); - unregister(); -} diff --git a/assets/src/network/channel/share_connection.ts b/assets/src/network/channel/share_connection.ts new file mode 100644 index 0000000..415cb7f --- /dev/null +++ b/assets/src/network/channel/share_connection.ts @@ -0,0 +1,51 @@ +import { newIncomingRequest } from "../../models/incoming_request"; +import requests from "../../stores/received_requests"; +import { + ConnectionState, + on, + onWithToken, + start, + updateState, +} from "./connection"; +import type { UnregisterHandler } from "./messages/handler"; +import type { + NewRequestMessage, + RequestCancelledMessage, +} from "./messages/messages"; +import { joinShareChannel } from "./socket"; + +export async function startShareConnection() { + const connection = await start(); + + updateState(ConnectionState.CONNECTING_CHANNEL); + + const shareChannel = await joinShareChannel( + connection.socket, + connection.token + ); + connection.channel = shareChannel; + + on("new_request", onNewRequest); + + updateState(ConnectionState.CONNECTED); +} + +// Events which can happen without prior triggers during a share's lifetime + +function onNewRequest(message: NewRequestMessage) { + const token = message.token; + + const request = newIncomingRequest(token); + requests.addRequest(request); + + onWithToken("request_cancelled", token, onRequestCancelled); +} + +function onRequestCancelled( + message: RequestCancelledMessage, + unregister: UnregisterHandler +) { + const token = message.token; + requests.removeRequest(token); + unregister(); +} -- cgit 1.4.1