diff options
Diffstat (limited to 'assets/src/components/share')
| -rw-r--r-- | assets/src/components/share/DataSelector.svelte | 8 | ||||
| -rw-r--r-- | assets/src/components/share/Request.svelte | 13 | ||||
| -rw-r--r-- | assets/src/components/share/RequestList.svelte | 16 | ||||
| -rw-r--r-- | assets/src/components/share/ShareStatus.svelte | 26 |
4 files changed, 37 insertions, 26 deletions
diff --git a/assets/src/components/share/DataSelector.svelte b/assets/src/components/share/DataSelector.svelte index 6838a05..965d0a1 100644 --- a/assets/src/components/share/DataSelector.svelte +++ b/assets/src/components/share/DataSelector.svelte @@ -1,13 +1,11 @@ <script lang="ts"> - import { startShareConnection } from "../../network/channel/share_connection"; - - import data from "../../stores/data"; + import { ChoosingData, getShareState } from "../../state/share"; let value = ""; const submit = () => { - data.set(value); - startShareConnection(); + const share = getShareState().state as ChoosingData; + share.submitData(value); }; // TODO: Accept data other than text. diff --git a/assets/src/components/share/Request.svelte b/assets/src/components/share/Request.svelte index e554bfe..40a62fc 100644 --- a/assets/src/components/share/Request.svelte +++ b/assets/src/components/share/Request.svelte @@ -1,12 +1,9 @@ <script lang="ts"> - import { - acceptIncomingRequest, - declineIncomingRequest, - IncomingRequestState, - } from "../../models/incoming_request"; + import { IncomingRequestState } from "../../models/incoming_request"; import type { IncomingRequest } from "../../models/incoming_request"; import CheckIcon from "../icons/CheckIcon.svelte"; import CloseIcon from "../icons/CloseIcon.svelte"; + import { getShareState, Sharing } from "../../state/share"; export let request: IncomingRequest; const state = request.state; @@ -14,11 +11,13 @@ const time = `${request.info.receivedAt.getHours()}:${request.info.receivedAt.getMinutes()}`; async function accept() { - acceptIncomingRequest(request); + const sharing = getShareState().state as Sharing; + sharing.acceptRequest(request); } function decline() { - declineIncomingRequest(request); + const sharing = getShareState().state as Sharing; + sharing.declineRequest(request); } </script> diff --git a/assets/src/components/share/RequestList.svelte b/assets/src/components/share/RequestList.svelte index 510e80c..1a3b715 100644 --- a/assets/src/components/share/RequestList.svelte +++ b/assets/src/components/share/RequestList.svelte @@ -1,6 +1,20 @@ <script lang="ts"> - import requests from "../../stores/received_requests"; + import { derived } from "svelte/store"; + import type { Readable } from "svelte/store"; + import type { IncomingRequest } from "../../models/incoming_request"; + import { getShareState, Sharing } from "../../state/share"; import Request from "./Request.svelte"; + + const sharing = getShareState().state as Sharing; + const requestMap = sharing.getRequests(); + + function requestSorter(a: IncomingRequest, b: IncomingRequest): number { + return a.info.receivedAt.getTime() - b.info.receivedAt.getTime(); + } + + const requests: Readable<IncomingRequest[]> = derived(requestMap, $map => { + return Object.values($map).sort(requestSorter); + }); </script> {#each $requests as request (request.info.token)} diff --git a/assets/src/components/share/ShareStatus.svelte b/assets/src/components/share/ShareStatus.svelte index 7c22a04..ba0fea0 100644 --- a/assets/src/components/share/ShareStatus.svelte +++ b/assets/src/components/share/ShareStatus.svelte @@ -1,17 +1,17 @@ <script lang="ts"> - import { - ConnectionState, - getOwnToken, - getStateStore, - } from "../../network/channel/connection"; - import data from "../../stores/data"; - import DataView from "../DataView.svelte"; + import { getShareState, ShareStateType, Sharing } from "../../state/share"; import DataSelector from "./DataSelector.svelte"; + import DataView from "../DataView.svelte"; - let connection = getStateStore(); + const state = getShareState().type; + + function token() { + const sharing = getShareState().state as Sharing; + return sharing.getToken(); + } </script> -{#if !$data.locked} +{#if $state == ShareStateType.CHOOSING_DATA} <h1>What do you want to share?</h1> <DataSelector /> {:else} @@ -19,14 +19,14 @@ You are <br /> sharing <b>a text.</b> </h1> - {#if $connection === ConnectionState.CONNECTED} + {#if $state === ShareStateType.CONNECTING} + <p>Connecting to signaling server...</p> + {:else} <p> Your share is available under: <br /> - rook.rnrd.eu/<span>{getOwnToken()}</span> + rook.rnrd.eu/<span>{token()}</span> </p> <DataView /> - {:else} - <p>Connecting to signaling server...</p> {/if} {/if} |
