diff options
Diffstat (limited to 'assets/src/components/share')
| -rw-r--r-- | assets/src/components/share/DataSelector.svelte | 40 | ||||
| -rw-r--r-- | assets/src/components/share/Request.svelte | 43 | ||||
| -rw-r--r-- | assets/src/components/share/RequestList.svelte (renamed from assets/src/components/share/Requests.svelte) | 6 | ||||
| -rw-r--r-- | assets/src/components/share/Selector.svelte | 20 | ||||
| -rw-r--r-- | assets/src/components/share/ShareStatus.svelte (renamed from assets/src/components/share/Info.svelte) | 4 |
5 files changed, 76 insertions, 37 deletions
diff --git a/assets/src/components/share/DataSelector.svelte b/assets/src/components/share/DataSelector.svelte new file mode 100644 index 0000000..6838a05 --- /dev/null +++ b/assets/src/components/share/DataSelector.svelte @@ -0,0 +1,40 @@ +<script lang="ts"> + import { startShareConnection } from "../../network/channel/share_connection"; + + import data from "../../stores/data"; + + let value = ""; + + const submit = () => { + data.set(value); + startShareConnection(); + }; + + // TODO: Accept data other than text. +</script> + +<form on:submit|preventDefault={submit}> + <!-- TODO: Prettier input field --> + <input type="text" bind:value /> + <input class="set-data-button" type="submit" value="Share" /> +</form> + +<style> + form { + display: flex; + flex-wrap: nowrap; + } + + input { + border: none; + font-size: 14px; + color: black; + background-color: white; + padding: 10px 20px; + box-sizing: border-box; + } + + .set-data-button { + margin-left: 0.5rem; + } +</style> diff --git a/assets/src/components/share/Request.svelte b/assets/src/components/share/Request.svelte index e34f633..5f9ca7a 100644 --- a/assets/src/components/share/Request.svelte +++ b/assets/src/components/share/Request.svelte @@ -1,31 +1,50 @@ <script lang="ts"> - import { offer } from "../../network/transfer/share"; + import { + acceptIncomingRequest, + declineIncomingRequest, + IncomingRequestState, + } from "../../models/incoming_request"; + import type { IncomingRequest } from "../../models/incoming_request"; import CheckIcon from "../icons/CheckIcon.svelte"; import CloseIcon from "../icons/CloseIcon.svelte"; - export let token: string; + export let request: IncomingRequest; + const state = request.state; async function accept() { - const transfer = await offer(token); + acceptIncomingRequest(request); } - function decline() {} + function decline() { + declineIncomingRequest(request); + } </script> <!-- TODO: Replace placeholder values and show IP instead of token. --> <ul class="request"> - <div class="buttons"> - <div class="round-button" on:click={accept}> - <CheckIcon color="white" /> - </div> - <div class="plain-button" on:click={decline}> - <CloseIcon color="black" /> + {#if $state === IncomingRequestState.WAITING} + <div class="buttons"> + <div class="round-button" on:click={accept}> + <CheckIcon color="white" /> + </div> + <div class="plain-button" on:click={decline}> + <CloseIcon color="black" /> + </div> </div> - </div> + {/if} + <li>Requested at 14:38</li> - <li class="ip">{token}</li> + <li class="ip">{request.info.token}</li> <li>Trusowo, Russia</li> <li>Firefox 89</li> + + {#if $state === IncomingRequestState.IN_FLIGHT} + Transferring... + {:else if $state === IncomingRequestState.DONE} + Done! + {:else if $state === IncomingRequestState.DECLINED} + Declined. + {/if} </ul> <style> diff --git a/assets/src/components/share/Requests.svelte b/assets/src/components/share/RequestList.svelte index 54eab57..423662e 100644 --- a/assets/src/components/share/Requests.svelte +++ b/assets/src/components/share/RequestList.svelte @@ -1,8 +1,8 @@ <script lang="ts"> - import requests from "../../stores/requests"; + import requests from "../../stores/received_requests"; import Request from "./Request.svelte"; </script> {#each $requests as request} - <Request token={request} /> -{/each} \ No newline at end of file + <Request {request} /> +{/each} diff --git a/assets/src/components/share/Selector.svelte b/assets/src/components/share/Selector.svelte deleted file mode 100644 index e4c7c07..0000000 --- a/assets/src/components/share/Selector.svelte +++ /dev/null @@ -1,20 +0,0 @@ -<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. -</script> - -<form on:submit|preventDefault={submit}> - <input type="text" bind:value /> - <input type="submit" value="Submit" /> -</form> diff --git a/assets/src/components/share/Info.svelte b/assets/src/components/share/ShareStatus.svelte index 79ef404..15d1ee9 100644 --- a/assets/src/components/share/Info.svelte +++ b/assets/src/components/share/ShareStatus.svelte @@ -5,14 +5,14 @@ getStateStore, } from "../../network/channel/connection"; import data from "../../stores/data"; - import Selector from "./Selector.svelte"; + import DataSelector from "./DataSelector.svelte"; let connection = getStateStore(); </script> {#if !$data.locked} <h1>What do you want to share?</h1> - <Selector /> + <DataSelector /> {:else} <h1> You are <br /> |
