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/share_connection.ts | |
| 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/share_connection.ts')
| -rw-r--r-- | assets/src/network/channel/share_connection.ts | 51 |
1 files changed, 51 insertions, 0 deletions
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(); +} |
