about summary refs log tree commit diff
path: root/assets/src/components/share
diff options
context:
space:
mode:
authorMelonai <einebeere@gmail.com>2021-06-17 00:30:58 +0200
committerMelonai <einebeere@gmail.com>2021-06-17 00:30:58 +0200
commitf6f44950e79041e4f7afe441fc4b850e1030f27a (patch)
tree027751b354414260606251c631481f6a4b2c94b9 /assets/src/components/share
parentb98b1cd0e5d07fd37be54592edd362f443a145ad (diff)
downloadrook-f6f44950e79041e4f7afe441fc4b850e1030f27a.tar.zst
rook-f6f44950e79041e4f7afe441fc4b850e1030f27a.zip
Share page design
Diffstat (limited to 'assets/src/components/share')
-rw-r--r--assets/src/components/share/Info.svelte64
-rw-r--r--assets/src/components/share/Request.svelte57
-rw-r--r--assets/src/components/share/Requests.svelte15
-rw-r--r--assets/src/components/share/Selector.svelte (renamed from assets/src/components/share/DataPicker.svelte)4
4 files changed, 128 insertions, 12 deletions
diff --git a/assets/src/components/share/Info.svelte b/assets/src/components/share/Info.svelte
new file mode 100644
index 0000000..2d648ce
--- /dev/null
+++ b/assets/src/components/share/Info.svelte
@@ -0,0 +1,64 @@
+<script lang="ts">
+    import {
+        ConnectionState,
+        getOwnToken,
+        getStateStore,
+    } from "../../network/channel/connection";
+    import data from "../../stores/data";
+    import Selector from "./Selector.svelte";
+
+    let connection = getStateStore();
+</script>
+
+<div class="info">
+    {#if !$data.locked}
+        <h1>What do you want to share?</h1>
+        <Selector />
+    {:else}
+        <h1>
+            You are <br />
+            sharing <b>a text.</b>
+        </h1>
+        {#if $connection === ConnectionState.CONNECTED}
+            <p>
+                Your share is available under: <br />
+                rook.rnrd.eu/<span>{getOwnToken()}</span>
+            </p>
+            <!-- TODO: Display actual data. -->
+            <div class="data">••••••••••••••••••••••••••••••</div>
+        {:else}
+            <p>Connecting to signaling server...</p>
+        {/if}
+    {/if}
+</div>
+
+<style>
+    h1 {
+        font-size: 35px;
+        color: white;
+        font-weight: 400;
+    }
+
+    p {
+        color: #626262;
+        font-size: 16px;
+        margin-bottom: 30px;
+    }
+
+    span {
+        color: white;
+    }
+
+    .info {
+        width: 315px;
+    }
+
+    .data {
+        font-size: 14px;
+        width: 100%;
+        background-color: white;
+        color: black;
+        padding: 10px 20px;
+        box-sizing: border-box;
+    }
+</style>
diff --git a/assets/src/components/share/Request.svelte b/assets/src/components/share/Request.svelte
index 17e8443..e34f633 100644
--- a/assets/src/components/share/Request.svelte
+++ b/assets/src/components/share/Request.svelte
@@ -1,5 +1,7 @@
 <script lang="ts">
     import { offer } from "../../network/transfer/share";
+    import CheckIcon from "../icons/CheckIcon.svelte";
+    import CloseIcon from "../icons/CloseIcon.svelte";
 
     export let token: string;
 
@@ -10,22 +12,63 @@
     function decline() {}
 </script>
 
-<div class="container">
-    <span>{token}</span>
+<!-- TODO: Replace placeholder values and show IP instead of token. -->
+<ul class="request">
     <div class="buttons">
-        <button on:click={accept}>Accept</button>
-        <button on:click={decline}>X</button>
+        <div class="round-button" on:click={accept}>
+            <CheckIcon color="white" />
+        </div>
+        <div class="plain-button" on:click={decline}>
+            <CloseIcon color="black" />
+        </div>
     </div>
-</div>
+    <li>Requested at 14:38</li>
+    <li class="ip">{token}</li>
+    <li>Trusowo, Russia</li>
+    <li>Firefox 89</li>
+</ul>
 
 <style>
-    .container {
+    .request {
+        background-color: white;
+        color: #626262;
+        padding: 17px 20px;
+        font-size: 12px;
+        line-height: 1.5rem;
+        position: relative;
+    }
+
+    ul {
+        list-style-type: none;
+    }
+
+    .ip {
+        line-height: 1.75rem;
+        font-size: 16px;
+        color: black;
+    }
+
+    .buttons {
+        position: absolute;
+        right: 20px;
         display: flex;
         justify-content: space-between;
+        width: 50px;
         align-items: center;
     }
 
-    .buttons {
+    .round-button {
+        width: 24px;
+        height: 24px;
+        border-radius: 100%;
+        background-color: black;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
+
+    .plain-button {
         display: flex;
+        align-items: center;
     }
 </style>
diff --git a/assets/src/components/share/Requests.svelte b/assets/src/components/share/Requests.svelte
index 98596c6..f9ef237 100644
--- a/assets/src/components/share/Requests.svelte
+++ b/assets/src/components/share/Requests.svelte
@@ -1,4 +1,9 @@
 <script lang="ts">
+    import requests from "../../stores/requests";
+    import Request from "./Request.svelte";
+</script>
+
+<!-- <script lang="ts">
     import { getOwnToken, start } from "../../network/channel/connection";
     import { startShare } from "../../network/channel/share";
 
@@ -13,9 +18,9 @@
 {#await startPromise}
     <h3>Fetching token...</h3>
 {:then}
-    <h3>Your token is <b>{getOwnToken()}</b>.</h3>
+    <h3>Your token is <b>{getOwnToken()}</b>.</h3> -->
 
-    {#each $requests as request}
-        <Request token={request} />
-    {/each}
-{/await}
+{#each $requests as request}
+    <Request token={request} />
+{/each}
+<!-- {/await} -->
diff --git a/assets/src/components/share/DataPicker.svelte b/assets/src/components/share/Selector.svelte
index 6e8dbd4..e4c7c07 100644
--- a/assets/src/components/share/DataPicker.svelte
+++ b/assets/src/components/share/Selector.svelte
@@ -1,10 +1,14 @@
 <script lang="ts">
+    import { start } from "../../network/channel/connection";
+    import { startShare } from "../../network/channel/share";
+
     import data from "../../stores/data";
 
     let value = "";
 
     const submit = () => {
         data.set(value);
+        start().then(startShare);
     };
 
     // TODO: Accept data other than text.