feat: add tumblr oauth

This commit is contained in:
Sam 2023-04-18 03:49:37 +02:00
parent 6131884ba7
commit 716c1283e7
Signed by: sam
GPG key ID: B4EF20DDE721CAA1
13 changed files with 641 additions and 7 deletions

View file

@ -21,7 +21,7 @@
let canUnlink = false;
$: canUnlink =
[data.user.discord, data.user.fediverse]
[data.user.discord, data.user.fediverse, data.user.tumblr]
.map<number>((entry) => (entry === null ? 0 : 1))
.reduce((prev, current) => prev + current) >= 2;
@ -38,6 +38,9 @@
let discordUnlinkModalOpen = false;
let toggleDiscordUnlinkModal = () => (discordUnlinkModalOpen = !discordUnlinkModalOpen);
let tumblrUnlinkModalOpen = false;
let toggleTumblrUnlinkModal = () => (tumblrUnlinkModalOpen = !tumblrUnlinkModalOpen);
const fediLogin = async () => {
fediDisabled = true;
try {
@ -74,6 +77,17 @@
error = e as APIError;
}
};
const tumblrUnlink = async () => {
try {
const resp = await apiFetchClient<MeUser>("/auth/tumblr/remove-provider", "POST");
data.user = resp;
addToast({ header: "Unlinked account", body: "Successfully unlinked Tumblr account!" });
toggleTumblrUnlinkModal();
} catch (e) {
error = e as APIError;
}
};
</script>
<div>
@ -126,6 +140,28 @@
</CardBody>
</Card>
</div>
<div class="my-2">
<Card>
<CardBody>
<CardTitle>Tumblr</CardTitle>
<CardText>
{#if data.user.tumblr}
Your currently linked Tumblr account is <b>{data.user.tumblr_username}</b>
(<code>{data.user.tumblr}</code>).
{:else}
You do not have a linked Tumblr account.
{/if}
</CardText>
{#if data.user.tumblr}
<Button color="danger" disabled={!canUnlink} on:click={toggleTumblrUnlinkModal}
>Unlink account</Button
>
{:else}
<Button color="secondary" href={data.urls.tumblr}>Link account</Button>
{/if}
</CardBody>
</Card>
</div>
<Modal header="Pick an instance" isOpen={fediLinkModalOpen} toggle={toggleFediLinkModal}>
<ModalBody>
<Input placeholder="Instance (e.g. mastodon.social)" bind:value={instance} />