1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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<OwnRequestState>;
};
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)
);
}
|