aboutsummaryrefslogtreecommitdiff
path: root/assets/src/components/share
diff options
context:
space:
mode:
Diffstat (limited to 'assets/src/components/share')
-rw-r--r--assets/src/components/share/DataSelector.svelte8
-rw-r--r--assets/src/components/share/Request.svelte13
-rw-r--r--assets/src/components/share/RequestList.svelte16
-rw-r--r--assets/src/components/share/ShareStatus.svelte26
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}