diff options
| author | Melonai <einebeere@gmail.com> | 2021-07-08 23:29:20 +0200 |
|---|---|---|
| committer | Melonai <einebeere@gmail.com> | 2021-07-08 23:29:20 +0200 |
| commit | c3b05a72b7185112ece6e42c99e9a828c8298f04 (patch) | |
| tree | 317da6fbe640ffa57cf771b4b9e3b0beb80e836c /assets/src/network/channel | |
| parent | 9d8ca2a653661560f471d717d188e92a79edb250 (diff) | |
| download | rook-c3b05a72b7185112ece6e42c99e9a828c8298f04.tar.zst rook-c3b05a72b7185112ece6e42c99e9a828c8298f04.zip | |
State display for incoming and own requests
Diffstat (limited to 'assets/src/network/channel')
| -rw-r--r-- | assets/src/network/channel/request.ts | 24 | ||||
| -rw-r--r-- | assets/src/network/channel/request_connection.ts | 48 | ||||
| -rw-r--r-- | assets/src/network/channel/share_connection.ts (renamed from assets/src/network/channel/share.ts) | 14 |
3 files changed, 58 insertions, 28 deletions
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_connection.ts index 81942af..415cb7f 100644 --- a/assets/src/network/channel/share.ts +++ b/assets/src/network/channel/share_connection.ts @@ -1,9 +1,10 @@ -import requests from "../../stores/requests"; +import { newIncomingRequest } from "../../models/incoming_request"; +import requests from "../../stores/received_requests"; import { - Connection, ConnectionState, on, onWithToken, + start, updateState, } from "./connection"; import type { UnregisterHandler } from "./messages/handler"; @@ -13,7 +14,9 @@ import type { } from "./messages/messages"; import { joinShareChannel } from "./socket"; -export async function startShare(connection: Connection) { +export async function startShareConnection() { + const connection = await start(); + updateState(ConnectionState.CONNECTING_CHANNEL); const shareChannel = await joinShareChannel( @@ -27,10 +30,13 @@ export async function startShare(connection: Connection) { updateState(ConnectionState.CONNECTED); } +// Events which can happen without prior triggers during a share's lifetime + function onNewRequest(message: NewRequestMessage) { const token = message.token; - requests.addRequest(token); + const request = newIncomingRequest(token); + requests.addRequest(request); onWithToken("request_cancelled", token, onRequestCancelled); } |
