diff options
| -rw-r--r-- | .sqlx/query-d9c772a28d1b5b2ca3b0a2c19a4eed48252247f15a046098d63359c6d9047c9a.json | 38 | ||||
| -rw-r--r-- | .sqlx/query-df22d29fc47244ee696b3eaab9d1be6f740ec4a7fc713056befc4ac700259951.json | 32 | ||||
| -rw-r--r-- | docs/api/invitations.md | 12 | ||||
| -rw-r--r-- | src/invite/mod.rs | 8 | ||||
| -rw-r--r-- | src/invite/repo.rs | 7 | ||||
| -rw-r--r-- | ui/routes/(login)/invite/[invite]/+page.js | 3 | ||||
| -rw-r--r-- | ui/routes/(login)/invite/[invite]/+page.svelte | 14 |
7 files changed, 57 insertions, 57 deletions
diff --git a/.sqlx/query-d9c772a28d1b5b2ca3b0a2c19a4eed48252247f15a046098d63359c6d9047c9a.json b/.sqlx/query-d9c772a28d1b5b2ca3b0a2c19a4eed48252247f15a046098d63359c6d9047c9a.json new file mode 100644 index 0000000..39e9231 --- /dev/null +++ b/.sqlx/query-d9c772a28d1b5b2ca3b0a2c19a4eed48252247f15a046098d63359c6d9047c9a.json @@ -0,0 +1,38 @@ +{ + "db_name": "SQLite", + "query": "\n\t\t\t\tselect\n invite.id as \"invite_id: Id\",\n\t\t\t\t\tissuer.id as \"issuer_id: login::Id\",\n\t\t\t\t\tissuer.name as \"issuer_name\",\n\t\t\t\t\tinvite.issued_at as \"invite_issued_at: DateTime\"\n\t\t\t\tfrom invite\n\t\t\t\tjoin login as issuer on (invite.issuer = issuer.id)\n\t\t\t\twhere invite.id = $1\n\t\t\t", + "describe": { + "columns": [ + { + "name": "invite_id: Id", + "ordinal": 0, + "type_info": "Text" + }, + { + "name": "issuer_id: login::Id", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "issuer_name", + "ordinal": 2, + "type_info": "Text" + }, + { + "name": "invite_issued_at: DateTime", + "ordinal": 3, + "type_info": "Text" + } + ], + "parameters": { + "Right": 1 + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "d9c772a28d1b5b2ca3b0a2c19a4eed48252247f15a046098d63359c6d9047c9a" +} diff --git a/.sqlx/query-df22d29fc47244ee696b3eaab9d1be6f740ec4a7fc713056befc4ac700259951.json b/.sqlx/query-df22d29fc47244ee696b3eaab9d1be6f740ec4a7fc713056befc4ac700259951.json deleted file mode 100644 index 5a34da8..0000000 --- a/.sqlx/query-df22d29fc47244ee696b3eaab9d1be6f740ec4a7fc713056befc4ac700259951.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "db_name": "SQLite", - "query": "\n\t\t\t\tselect\n\t\t\t\t\tissuer.id as \"issuer_id: login::Id\",\n\t\t\t\t\tissuer.name as \"issuer_name\",\n\t\t\t\t\tinvite.issued_at as \"invite_issued_at: DateTime\"\n\t\t\t\tfrom invite\n\t\t\t\tjoin login as issuer on (invite.issuer = issuer.id)\n\t\t\t\twhere invite.id = $1\n\t\t\t", - "describe": { - "columns": [ - { - "name": "issuer_id: login::Id", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "issuer_name", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "invite_issued_at: DateTime", - "ordinal": 2, - "type_info": "Text" - } - ], - "parameters": { - "Right": 1 - }, - "nullable": [ - false, - false, - false - ] - }, - "hash": "df22d29fc47244ee696b3eaab9d1be6f740ec4a7fc713056befc4ac700259951" -} diff --git a/docs/api/invitations.md b/docs/api/invitations.md index 0f21a0e..f75e30b 100644 --- a/docs/api/invitations.md +++ b/docs/api/invitations.md @@ -91,17 +91,11 @@ The response will include the following fields: | Field | Type | Description | |:------------|:-------|:--| -| `issuer` | object | The details of the login that issued the invitation. | +| `id` | string | The ID of the invitation. | +| `issuer` | string | The login name of the invitation's issuer. | | `issued_at` | string | The timestamp from which the invitation will expire. | -The `issuer` object will include the following fields: - -| Field | Type | Description | -|:-------|:-------|:--| -| `id` | string | The login ID of the invitation's issuer. | -| `name` | string | The login name of the invitation's issuer. | - -Clients should present the issuer's name to the user when presenting an invitation, so as to personalize the invitation and help them understand their connection with the service. +Clients should present the `issuer` to the user when presenting an invitation, so as to personalize the invitation and help them understand their connection with the service. ### Invitation not found diff --git a/src/invite/mod.rs b/src/invite/mod.rs index 5f9d490..abf1c3a 100644 --- a/src/invite/mod.rs +++ b/src/invite/mod.rs @@ -3,10 +3,7 @@ mod id; mod repo; mod routes; -use crate::{ - clock::DateTime, - login::{self, Login}, -}; +use crate::{clock::DateTime, login}; pub use self::{id::Id, routes::router}; @@ -19,6 +16,7 @@ pub struct Invite { #[derive(serde::Serialize)] pub struct Summary { - pub issuer: Login, + pub id: Id, + pub issuer: String, pub issued_at: DateTime, } diff --git a/src/invite/repo.rs b/src/invite/repo.rs index 2ab993f..643f5b7 100644 --- a/src/invite/repo.rs +++ b/src/invite/repo.rs @@ -68,6 +68,7 @@ impl<'c> Invites<'c> { let invite = sqlx::query!( r#" select + invite.id as "invite_id: Id", issuer.id as "issuer_id: login::Id", issuer.name as "issuer_name", invite.issued_at as "invite_issued_at: DateTime" @@ -78,10 +79,8 @@ impl<'c> Invites<'c> { invite, ) .map(|row| Summary { - issuer: Login { - id: row.issuer_id, - name: row.issuer_name, - }, + id: row.invite_id, + issuer: row.issuer_name, issued_at: row.invite_issued_at, }) .fetch_one(&mut *self.0) diff --git a/ui/routes/(login)/invite/[invite]/+page.js b/ui/routes/(login)/invite/[invite]/+page.js index d90f542..e6664d2 100644 --- a/ui/routes/(login)/invite/[invite]/+page.js +++ b/ui/routes/(login)/invite/[invite]/+page.js @@ -5,7 +5,8 @@ export async function load({ params }) { let response = await getInvite(invite); switch (response.status) { case 200: - return response.data; + let invite = response.data + return { invite }; break; case 404: return null; diff --git a/ui/routes/(login)/invite/[invite]/+page.svelte b/ui/routes/(login)/invite/[invite]/+page.svelte index eea05fc..b9a4a97 100644 --- a/ui/routes/(login)/invite/[invite]/+page.svelte +++ b/ui/routes/(login)/invite/[invite]/+page.svelte @@ -1,20 +1,18 @@ <script> import { goto } from '$app/navigation'; - import { page } from '$app/stores'; import { acceptInvite } from '$lib/apiServer'; - $: inviteId = $page?.params?.invite; - $: invite = $page.data; - import LogIn from '$lib/components/LogIn.svelte'; + export let data; + let disabled; let username; let password; async function onSubmit() { disabled = true; - const response = await acceptInvite(inviteId, username, password); + const response = await acceptInvite(data.invite.id, username, password); if (200 <= response.status && response.status < 300) { username = ''; password = ''; @@ -24,5 +22,9 @@ } </script> -<p>Hi there! {invite.issuer.name} invites you to the conversation.</p> +{#await data} +<p>Loading invitation…</p> +{:then { invite }} +<p>Hi there! {invite.issuer} invites you to the conversation.</p> <LogIn bind:disabled bind:username bind:password on:submit={onSubmit} /> +{/await} |
