flotilla/src/routes/settings/+page.svelte

55 lines
2 KiB
Svelte
Raw Normal View History

2024-10-03 21:32:55 +00:00
<script lang="ts">
2024-10-09 23:15:09 +00:00
import {ctx} from "@welshman/lib"
2024-10-17 22:48:35 +00:00
import {getListTags, createEvent, getPubkeyTagValues, MUTES} from "@welshman/util"
2024-10-17 22:46:26 +00:00
import {pubkey, signer, userMutes, tagPubkey, publishThunk} from "@welshman/app"
2024-10-08 18:39:16 +00:00
import Field from "@lib/components/Field.svelte"
2024-10-17 22:21:22 +00:00
import FieldInline from "@lib/components/FieldInline.svelte"
2024-10-08 18:39:16 +00:00
import Button from "@lib/components/Button.svelte"
import ProfileMultiSelect from "@app/components/ProfileMultiSelect.svelte"
import {pushToast} from "@app/toast"
2024-10-17 22:46:26 +00:00
import {SETTINGS, userSettings} from "@app/state"
2024-10-03 21:32:55 +00:00
const reset = () => {
2024-10-08 18:39:16 +00:00
mutedPubkeys = getPubkeyTagValues(getListTags($userMutes))
2024-10-03 21:32:55 +00:00
}
const onSubmit = async () => {
2024-10-17 22:46:26 +00:00
publishThunk({
2024-10-17 22:48:35 +00:00
event: createEvent(SETTINGS, {
2024-10-17 22:46:26 +00:00
content: await $signer!.nip04.encrypt($pubkey!, JSON.stringify(settings)),
}),
relays: ctx.app.router.WriteRelays().getUrls(),
})
2024-10-08 22:30:18 +00:00
publishThunk({
event: createEvent(MUTES, {tags: mutedPubkeys.map(tagPubkey)}),
relays: ctx.app.router.WriteRelays().getUrls(),
})
2024-10-03 21:32:55 +00:00
pushToast({message: "Your settings have been saved!"})
}
2024-10-17 22:46:26 +00:00
let settings = {...$userSettings?.values}
let mutedPubkeys = getPubkeyTagValues(getListTags($userMutes))
2024-10-03 21:32:55 +00:00
</script>
<form class="content column gap-4" on:submit|preventDefault={onSubmit}>
2024-10-17 22:21:22 +00:00
<div class="card2 bg-alt shadow-xl col-4">
2024-10-03 21:32:55 +00:00
<Field>
<p slot="label">Muted Accounts</p>
2024-10-03 22:28:06 +00:00
<div slot="input">
<ProfileMultiSelect bind:value={mutedPubkeys} />
2024-10-03 21:32:55 +00:00
</div>
</Field>
2024-10-17 22:21:22 +00:00
<FieldInline>
<p slot="label">Hide sensitive content?</p>
2024-10-17 22:46:26 +00:00
<input slot="input" type="checkbox" class="toggle toggle-primary" bind:checked={settings.hide_sensitive} />
2024-10-17 22:21:22 +00:00
<p slot="info">If content is marked by the author as sensitive, flotilla will hide it by default.</p>
</FieldInline>
2024-10-08 18:39:16 +00:00
<div class="mt-4 flex flex-row items-center justify-between gap-4">
<Button class="btn btn-neutral" on:click={reset}>Discard Changes</Button>
<Button type="submit" class="btn btn-primary">Save Changes</Button>
2024-10-03 21:32:55 +00:00
</div>
</div>
</form>