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/models/own_request.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 assets/src/models/own_request.ts (limited to 'assets/src/models/own_request.ts') diff --git a/assets/src/models/own_request.ts b/assets/src/models/own_request.ts new file mode 100644 index 0000000..2ad29af --- /dev/null +++ b/assets/src/models/own_request.ts @@ -0,0 +1,40 @@ +import { bindTransfer, Transfer } from "../network/transfer/transfer"; +import { writable, Writable } from "svelte/store"; +import { createAnswerTransfer } from "../network/transfer/request_transfer"; + +// Represents the current progress of the request +export enum OwnRequestState { + PENDING, + ACKNOWLEDGED, + + IN_FLIGHT, + DONE, + + DECLINED, + SHARE_CANCELLED, + NO_SUCH_SHARE, +} + +export type OwnRequest = { + // Transfer is null while request isn't IN_FLIGHT + transfer: Transfer | null; + state: Writable; +}; + +export function initializeRequest(): OwnRequest { + return { + transfer: null, + state: writable(OwnRequestState.PENDING), + }; +} + +export function requestAccepted( + request: OwnRequest, + description: RTCSessionDescriptionInit +) { + request.state.set(OwnRequestState.IN_FLIGHT); + + bindTransfer(request, createAnswerTransfer(description), () => + request.state.set(OwnRequestState.DONE) + ); +} -- cgit 1.4.1