From 5acb2e1667a02e2eee5f831ccc11822ef9511ade Mon Sep 17 00:00:00 2001 From: vimaexd Date: Fri, 5 Jul 2024 14:51:32 +0100 Subject: [PATCH] very basic post support + misc --- package-lock.json | 15 +++++++ src/img/icons/bookmark.svg | 4 +- src/img/icons/dm.svg | 3 ++ src/img/icons/error.svg | 15 +++++++ src/img/icons/explore.svg | 6 +-- src/img/icons/followers.svg | 13 ++++++ src/img/icons/hashtag.svg | 18 ++++---- src/img/icons/info.svg | 6 +-- src/img/icons/like.svg | 4 +- src/img/icons/like_fill.svg | 6 +-- src/img/icons/lists.svg | 11 ++++- src/img/icons/logout.svg | 8 ++-- src/img/icons/media.svg | 12 +++++ src/img/icons/mention.svg | 3 ++ src/img/icons/more.svg | 6 +-- src/img/icons/notifications.svg | 8 ++-- src/img/icons/plus.svg | 11 +++++ src/img/icons/plus_fill.svg | 11 +++++ src/img/icons/poll.svg | 10 +++++ src/img/icons/post.svg | 4 +- src/img/icons/public.svg | 12 +++++ src/img/icons/quote.svg | 5 +-- src/img/icons/react.svg | 29 ++++++------- src/img/icons/reload.svg | 16 +++++++ src/img/icons/reply.svg | 4 +- src/img/icons/repost.svg | 10 ++--- src/img/icons/search.svg | 7 ++- src/img/icons/settings.svg | 8 ++-- src/img/icons/timeline.svg | 8 ++-- src/img/icons/unlisted.svg | 4 ++ src/img/icons/warning.svg | 3 ++ src/lib/api.js | 24 +++++++++- src/lib/ui/Composer.svelte | 77 ++++++++++++++++++++++++++++----- src/lib/ui/Modal.svelte | 19 +++++--- src/lib/ui/Navigation.svelte | 2 +- src/routes/+layout.svelte | 2 +- 36 files changed, 306 insertions(+), 98 deletions(-) create mode 100644 src/img/icons/dm.svg create mode 100644 src/img/icons/error.svg create mode 100644 src/img/icons/followers.svg create mode 100644 src/img/icons/media.svg create mode 100644 src/img/icons/mention.svg create mode 100644 src/img/icons/plus.svg create mode 100644 src/img/icons/plus_fill.svg create mode 100644 src/img/icons/poll.svg create mode 100644 src/img/icons/public.svg create mode 100644 src/img/icons/reload.svg create mode 100644 src/img/icons/unlisted.svg create mode 100644 src/img/icons/warning.svg diff --git a/package-lock.json b/package-lock.json index 68c3b16..742205a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "campfire-client", "version": "0.3.0", "license": "GPL-3.0", + "dependencies": { + "typescript": "^5.5.3" + }, "devDependencies": { "@poppanator/sveltekit-svg": "^4.2.1", "@sveltejs/adapter-auto": "^3.2.2", @@ -1567,6 +1570,18 @@ "node": ">=6" } }, + "node_modules/typescript": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/vite": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", diff --git a/src/img/icons/bookmark.svg b/src/img/icons/bookmark.svg index b9e9b8e..70f328d 100644 --- a/src/img/icons/bookmark.svg +++ b/src/img/icons/bookmark.svg @@ -1,3 +1,3 @@ - - + + diff --git a/src/img/icons/dm.svg b/src/img/icons/dm.svg new file mode 100644 index 0000000..41b64da --- /dev/null +++ b/src/img/icons/dm.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/icons/error.svg b/src/img/icons/error.svg new file mode 100644 index 0000000..cdcc032 --- /dev/null +++ b/src/img/icons/error.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/icons/explore.svg b/src/img/icons/explore.svg index 9699f07..e2a289c 100644 --- a/src/img/icons/explore.svg +++ b/src/img/icons/explore.svg @@ -1,10 +1,10 @@ - + - + - + diff --git a/src/img/icons/followers.svg b/src/img/icons/followers.svg new file mode 100644 index 0000000..7293c31 --- /dev/null +++ b/src/img/icons/followers.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/icons/hashtag.svg b/src/img/icons/hashtag.svg index 5a574d7..52f7097 100644 --- a/src/img/icons/hashtag.svg +++ b/src/img/icons/hashtag.svg @@ -1,10 +1,10 @@ - - - - - - - - - + + + + + + + + + diff --git a/src/img/icons/info.svg b/src/img/icons/info.svg index 23077aa..e9342e4 100644 --- a/src/img/icons/info.svg +++ b/src/img/icons/info.svg @@ -1,5 +1,3 @@ - - - - + + diff --git a/src/img/icons/like.svg b/src/img/icons/like.svg index a2ffd55..45682c9 100644 --- a/src/img/icons/like.svg +++ b/src/img/icons/like.svg @@ -1,3 +1,3 @@ - - + + diff --git a/src/img/icons/like_fill.svg b/src/img/icons/like_fill.svg index 6d2eb3b..09aa5b8 100644 --- a/src/img/icons/like_fill.svg +++ b/src/img/icons/like_fill.svg @@ -1,10 +1,10 @@ - + - + - + diff --git a/src/img/icons/lists.svg b/src/img/icons/lists.svg index a3e5c30..47a99bb 100644 --- a/src/img/icons/lists.svg +++ b/src/img/icons/lists.svg @@ -1,3 +1,10 @@ - - + + + + + + + + + diff --git a/src/img/icons/logout.svg b/src/img/icons/logout.svg index 1a3cf80..d97e04d 100644 --- a/src/img/icons/logout.svg +++ b/src/img/icons/logout.svg @@ -1,11 +1,11 @@ - + - - + + - + diff --git a/src/img/icons/media.svg b/src/img/icons/media.svg new file mode 100644 index 0000000..f88b45e --- /dev/null +++ b/src/img/icons/media.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/icons/mention.svg b/src/img/icons/mention.svg new file mode 100644 index 0000000..3895acb --- /dev/null +++ b/src/img/icons/mention.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/icons/more.svg b/src/img/icons/more.svg index bc531b2..ab0f996 100644 --- a/src/img/icons/more.svg +++ b/src/img/icons/more.svg @@ -1,5 +1,3 @@ - - - - + + diff --git a/src/img/icons/notifications.svg b/src/img/icons/notifications.svg index e946ca5..7e3dfa6 100644 --- a/src/img/icons/notifications.svg +++ b/src/img/icons/notifications.svg @@ -1,11 +1,11 @@ - + - - + + - + diff --git a/src/img/icons/plus.svg b/src/img/icons/plus.svg new file mode 100644 index 0000000..0bcf501 --- /dev/null +++ b/src/img/icons/plus.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/icons/plus_fill.svg b/src/img/icons/plus_fill.svg new file mode 100644 index 0000000..cd16e2a --- /dev/null +++ b/src/img/icons/plus_fill.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/icons/poll.svg b/src/img/icons/poll.svg new file mode 100644 index 0000000..f258b9d --- /dev/null +++ b/src/img/icons/poll.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/icons/post.svg b/src/img/icons/post.svg index 79d5536..3d4ac43 100644 --- a/src/img/icons/post.svg +++ b/src/img/icons/post.svg @@ -1,3 +1,3 @@ - - + + diff --git a/src/img/icons/public.svg b/src/img/icons/public.svg new file mode 100644 index 0000000..c321adf --- /dev/null +++ b/src/img/icons/public.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/icons/quote.svg b/src/img/icons/quote.svg index 98ce541..5a74811 100644 --- a/src/img/icons/quote.svg +++ b/src/img/icons/quote.svg @@ -1,4 +1,3 @@ - - - + + diff --git a/src/img/icons/react.svg b/src/img/icons/react.svg index 532213d..e7396e9 100644 --- a/src/img/icons/react.svg +++ b/src/img/icons/react.svg @@ -1,15 +1,14 @@ - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + diff --git a/src/img/icons/reload.svg b/src/img/icons/reload.svg new file mode 100644 index 0000000..4e58201 --- /dev/null +++ b/src/img/icons/reload.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/icons/reply.svg b/src/img/icons/reply.svg index 5462c7b..dc18cb0 100644 --- a/src/img/icons/reply.svg +++ b/src/img/icons/reply.svg @@ -1,3 +1,3 @@ - - + + diff --git a/src/img/icons/repost.svg b/src/img/icons/repost.svg index c0f950f..b679f16 100644 --- a/src/img/icons/repost.svg +++ b/src/img/icons/repost.svg @@ -1,12 +1,12 @@ - + - - - + + + - + diff --git a/src/img/icons/search.svg b/src/img/icons/search.svg index 0864af4..eecb00c 100644 --- a/src/img/icons/search.svg +++ b/src/img/icons/search.svg @@ -1,11 +1,10 @@ - + - - + - + diff --git a/src/img/icons/settings.svg b/src/img/icons/settings.svg index be2926e..bfc8697 100644 --- a/src/img/icons/settings.svg +++ b/src/img/icons/settings.svg @@ -1,11 +1,11 @@ - + - + - + - + diff --git a/src/img/icons/timeline.svg b/src/img/icons/timeline.svg index a2be615..712e88f 100644 --- a/src/img/icons/timeline.svg +++ b/src/img/icons/timeline.svg @@ -1,12 +1,10 @@ - + - - - + - + diff --git a/src/img/icons/unlisted.svg b/src/img/icons/unlisted.svg new file mode 100644 index 0000000..6b88c40 --- /dev/null +++ b/src/img/icons/unlisted.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/icons/warning.svg b/src/img/icons/warning.svg new file mode 100644 index 0000000..0fffc6f --- /dev/null +++ b/src/img/icons/warning.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/lib/api.js b/src/lib/api.js index 8006213..372bd49 100644 --- a/src/lib/api.js +++ b/src/lib/api.js @@ -197,6 +197,28 @@ export async function getPost(host, token, post_id) { return data; } +/** + * POST /api/v1/statuses + * @param {string} host - The domain of the target server. + * @param {string} token - The application token + * @param {any} post_data - The post content + */ +export async function createPost(host, token, post_data) { + let formdata = new FormData(); + for (const key in post_data) { + formdata.append(key, post_data[key]); + } + + let url = `https://${host}/api/v1/statuses`; + const data = await fetch(url, { + method: 'POST', + headers: { "Authorization": `Bearer ${token}` }, + body: formdata + }) + + return await data.json() +} + /** * GET /api/v1/statuses/{post_id}/context. * @param {string} host - The domain of the target server. @@ -336,4 +358,4 @@ export async function getUser(host, token, user_id) { }).then(res => res.json()); return data; -} +} \ No newline at end of file diff --git a/src/lib/ui/Composer.svelte b/src/lib/ui/Composer.svelte index c8f474c..3be2a25 100644 --- a/src/lib/ui/Composer.svelte +++ b/src/lib/ui/Composer.svelte @@ -1,7 +1,42 @@ -
@@ -19,25 +54,35 @@
- - + {#if show_cw} + + {/if} + -