about summary refs log tree commit diff
path: root/assets/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'assets/src/components')
-rw-r--r--assets/src/components/SharePage.svelte6
-rw-r--r--assets/src/components/request/RequestStatus.svelte21
-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
6 files changed, 48 insertions, 42 deletions
diff --git a/assets/src/components/SharePage.svelte b/assets/src/components/SharePage.svelte
index dff6ba0..c0c6f18 100644
--- a/assets/src/components/SharePage.svelte
+++ b/assets/src/components/SharePage.svelte
@@ -1,8 +1,10 @@
 <script lang="ts">
-    import data from "../stores/data";
     import Header from "./Header.svelte";
     import ShareStatus from "./share/ShareStatus.svelte";
     import RequestList from "./share/RequestList.svelte";
+    import { getShareState, ShareStateType } from "../state/share";
+
+    const state = getShareState().type;
 </script>
 
 <Header color="black" />
@@ -12,7 +14,7 @@
         <ShareStatus />
     </div>
     <div class="right-segment">
-        {#if $data.locked}
+        {#if $state === ShareStateType.SHARING}
             <h1>Requests</h1>
             <RequestList />
         {/if}
diff --git a/assets/src/components/request/RequestStatus.svelte b/assets/src/components/request/RequestStatus.svelte
index 49a0c31..7ba93d9 100644
--- a/assets/src/components/request/RequestStatus.svelte
+++ b/assets/src/components/request/RequestStatus.svelte
@@ -1,37 +1,30 @@
 <script lang="ts">
-    import {
-        initializeRequest,
-        OwnRequestState,
-    } from "../../models/own_request";
-    import { startRequestConnection } from "../../network/channel/request_connection";
+    import { getRequestState, RequestStateType } from "../../state/request";
     import DataView from "../DataView.svelte";
 
-    const request = initializeRequest();
-    const state = request.state;
-
-    startRequestConnection(request);
+    const state = getRequestState().type;
 </script>
 
 <!-- TODO: Bind states of same path together -->
-{#if $state === OwnRequestState.PENDING || $state === OwnRequestState.ACKNOWLEDGED}
+{#if $state === RequestStateType.CONNECTING || $state === RequestStateType.WAITING_FOR_RESPONSE}
     <h1>Waiting for a response...</h1>
     <p>
-        {#if $state === OwnRequestState.ACKNOWLEDGED}
+        {#if $state === RequestStateType.CONNECTING}
             Connecting to signaling server...
         {:else}
             The share's content will become available to you once the sharer
             decides to accept your request.
         {/if}
     </p>
-{:else if $state === OwnRequestState.IN_FLIGHT || $state === OwnRequestState.DONE}
+{:else if $state === RequestStateType.IN_FLIGHT || $state === RequestStateType.DONE}
     <h1>Your request was <b>accepted!</b></h1>
-    {#if $state === OwnRequestState.IN_FLIGHT}
+    {#if $state === RequestStateType.IN_FLIGHT}
         Transferring...
     {:else}
         <p>Congratulations! You can access the received data below:</p>
         <DataView />
     {/if}
-{:else if $state === OwnRequestState.DECLINED}
+{:else if $state === RequestStateType.DECLINED}
     <h1>Your request was <b>declined!</b></h1>
     <p>Sorry! I hope we can still be friends?</p>
 {:else}
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}