about summary refs log tree commit diff
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}