mirror of
https://github.com/coracle-social/coracle.git
synced 2024-09-30 00:41:12 +00:00
Toggle nip44 messages based on 10050 signaling
This commit is contained in:
parent
b1f2218e81
commit
1408f782f1
@ -3,6 +3,7 @@
|
||||
# 0.4.8
|
||||
|
||||
- [x] Add support for kind 10050 relay lists
|
||||
- [x] Toggle nip44 messages based on 10050 signaling
|
||||
|
||||
# 0.4.7
|
||||
|
||||
|
@ -5,9 +5,7 @@
|
||||
import {DIRECT_MESSAGE} from "@welshman/util"
|
||||
import {formatTimestamp} from "src/util/misc"
|
||||
import Channel from "src/partials/Channel.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Popover from "src/partials/Popover.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import PersonCircles from "src/app/shared/PersonCircles.svelte"
|
||||
import PersonAbout from "src/app/shared/PersonAbout.svelte"
|
||||
@ -23,7 +21,6 @@
|
||||
markChannelRead,
|
||||
getChannelIdFromEvent,
|
||||
listenForMessages,
|
||||
sortEventsDesc,
|
||||
ensureMessagePlaintext,
|
||||
} from "src/engine"
|
||||
|
||||
@ -46,34 +43,8 @@
|
||||
return sendLegacyMessage(channelId, content)
|
||||
}
|
||||
|
||||
const [message] = sortEventsDesc($messages || [])
|
||||
|
||||
if (!message || message?.kind === 4) {
|
||||
confirmMessage = content
|
||||
} else {
|
||||
sendMessage(channelId, content)
|
||||
}
|
||||
}
|
||||
|
||||
const confirmNip04 = () => {
|
||||
sendLegacyMessage(channelId, confirmMessage)
|
||||
confirmMessage = null
|
||||
}
|
||||
|
||||
const confirmNip44 = () => {
|
||||
sendMessage(channelId, confirmMessage)
|
||||
confirmMessage = null
|
||||
}
|
||||
|
||||
const abortMessage = () => {
|
||||
if (confirmMessage) {
|
||||
ctrl.setMessage(confirmMessage)
|
||||
}
|
||||
|
||||
confirmMessage = null
|
||||
}
|
||||
|
||||
let confirmMessage, ctrl
|
||||
|
||||
onMount(() => {
|
||||
markChannelRead(channelId)
|
||||
@ -88,7 +59,7 @@
|
||||
document.title = `Direct Messages`
|
||||
</script>
|
||||
|
||||
<Channel {channelId} {pubkeys} bind:this={ctrl} messages={$messages} sendMessage={send} {initialMessage}>
|
||||
<Channel {pubkeys} messages={$messages} sendMessage={send} {initialMessage}>
|
||||
<div slot="header" class="flex h-16 items-start gap-4 overflow-hidden p-1 px-4">
|
||||
<div class="flex items-center gap-4 pt-1">
|
||||
<Anchor class="fa fa-arrow-left cursor-pointer text-2xl" href="/channels" />
|
||||
@ -134,20 +105,22 @@
|
||||
class:text-neutral-100={message.pubkey !== $session.pubkey}>
|
||||
{formatTimestamp(message.created_at)}
|
||||
{#if message.kind === 4}
|
||||
<Popover>
|
||||
<i slot="trigger" class="fa fa-unlock cursor-pointer text-neutral-200" />
|
||||
<Popover triggerType="mouseenter">
|
||||
<i slot="trigger" class="fa fa-unlock cursor-pointer text-neutral-400" />
|
||||
<p slot="tooltip">
|
||||
This message was sent using nostr's legacy DMs, which have a number of shortcomings.
|
||||
Read more <Anchor underline modal href="/help/nip-44-dms">here</Anchor>.
|
||||
</p>
|
||||
</Popover>
|
||||
{:else}
|
||||
<Popover>
|
||||
<i slot="trigger" class="fa fa-lock cursor-pointer text-neutral-200" />
|
||||
<Popover triggerType="mouseenter">
|
||||
<i slot="trigger" class="fa fa-lock cursor-pointer text-neutral-400" />
|
||||
<div slot="tooltip" class="flex flex-col gap-2">
|
||||
<p>
|
||||
This message was sent using nostr's new group chat specification, which solves several
|
||||
problems with legacy DMs. Read more <Anchor underline modal href="/help/nip-44-dms">here</Anchor>.
|
||||
problems with legacy DMs. Read more <Anchor underline modal href="/help/nip-44-dms"
|
||||
>here</Anchor
|
||||
>.
|
||||
</p>
|
||||
<p>
|
||||
Note that these messages are not yet universally supported. Make sure the person
|
||||
@ -159,29 +132,3 @@
|
||||
</small>
|
||||
</div>
|
||||
</Channel>
|
||||
|
||||
{#if confirmMessage}
|
||||
<Modal onEscape={abortMessage}>
|
||||
<Content size="lg">
|
||||
<p class="flex items-center gap-4 text-xl">
|
||||
<i class="fa fa-info-circle" /> Auto-upgrade notice
|
||||
</p>
|
||||
<p>
|
||||
This conversation has not yet been upgraded to use <Anchor
|
||||
underline
|
||||
modal
|
||||
href="/help/nip-44-dms">new-style DMs</Anchor
|
||||
>.
|
||||
</p>
|
||||
<p>
|
||||
You should make sure @{displayProfileByPubkey(pubkeys[0])} is using a compatible nostr client,
|
||||
or you can choose to send an old-style message instead.
|
||||
</p>
|
||||
<p>How would you like to send this message?</p>
|
||||
<div class="flex flex-col gap-2 py-4 sm:flex-row">
|
||||
<Anchor button on:click={confirmNip04}>Send using Legacy DMs</Anchor>
|
||||
<Anchor button accent on:click={confirmNip44}>Send using NIP 44</Anchor>
|
||||
</div>
|
||||
</Content>
|
||||
</Modal>
|
||||
{/if}
|
||||
|
@ -927,7 +927,7 @@ export const sendMessage = async (channelId: string, content: string) => {
|
||||
|
||||
publish({
|
||||
event: rumor.wrap,
|
||||
relays: hints.merge(recipients.map(hints.PublishMessage)).getUrls(),
|
||||
relays: hints.PublishMessage(recipient).getUrls(),
|
||||
forcePlatform: false,
|
||||
})
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import type {TrustedEvent} from "@welshman/util"
|
||||
import {
|
||||
RELAYS,
|
||||
PROFILE,
|
||||
INBOX_RELAYS,
|
||||
HANDLER_INFORMATION,
|
||||
NAMED_BOOKMARKS,
|
||||
COMMUNITIES,
|
||||
@ -51,7 +52,7 @@ const getFiltersForKey = (key: string, authors: string[]) => {
|
||||
case "pubkey/feeds":
|
||||
return [{authors, kinds: [NAMED_BOOKMARKS, FEED]}]
|
||||
case "pubkey/relays":
|
||||
return [{authors, kinds: [RELAYS]}]
|
||||
return [{authors, kinds: [RELAYS, INBOX_RELAYS]}]
|
||||
case "pubkey/profile":
|
||||
return [{authors, kinds: [PROFILE, FOLLOWS, HANDLER_INFORMATION, COMMUNITIES]}]
|
||||
case "pubkey/user":
|
||||
|
@ -1,28 +1,26 @@
|
||||
<script lang="ts">
|
||||
import {onMount} from "svelte"
|
||||
import {sleep} from "hurdak"
|
||||
import {sleep} from "@welshman/lib"
|
||||
import type {TrustedEvent} from "@welshman/util"
|
||||
import {INBOX_RELAYS} from "@welshman/util"
|
||||
import {prop, max, reverse, pluck, sortBy, last} from "ramda"
|
||||
import {fly} from "src/util/transition"
|
||||
import {createScroller, synced} from "src/util/misc"
|
||||
import {createScroller} from "src/util/misc"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Popover from "src/partials/Popover.svelte"
|
||||
import Toggle from "src/partials/Toggle.svelte"
|
||||
import FlexColumn from "src/partials/FlexColumn.svelte"
|
||||
import ImageInput from "src/partials/ImageInput.svelte"
|
||||
import {nip44} from "src/engine"
|
||||
import {nip44, repository} from "src/engine"
|
||||
|
||||
export let pubkeys
|
||||
export let channelId
|
||||
export let messages: TrustedEvent[]
|
||||
export let sendMessage
|
||||
export let initialMessage = ""
|
||||
export let messages: TrustedEvent[]
|
||||
|
||||
const loading = sleep(30_000)
|
||||
|
||||
const useNip44 = synced(`useNip44/${channelId}`, true)
|
||||
|
||||
const startScroller = () => {
|
||||
scroller?.stop()
|
||||
scroller = createScroller(loadMore, {element, reverse: true})
|
||||
@ -36,6 +34,10 @@
|
||||
let limit = 10
|
||||
let showNewMessages = false
|
||||
let groupedMessages = []
|
||||
let useNip44 =
|
||||
pubkeys.length > 2 ||
|
||||
($nip44.isEnabled() &&
|
||||
repository.query([{kinds: [INBOX_RELAYS], authors: pubkeys}]).length === pubkeys.length)
|
||||
|
||||
onMount(() => {
|
||||
startScroller()
|
||||
@ -76,7 +78,7 @@
|
||||
if (content) {
|
||||
textarea.value = ""
|
||||
|
||||
await sendMessage(content, $useNip44)
|
||||
await sendMessage(content, useNip44)
|
||||
|
||||
stickToBottom()
|
||||
}
|
||||
@ -159,7 +161,7 @@
|
||||
</div>
|
||||
{#if $nip44.isEnabled()}
|
||||
<div class="fixed bottom-0 right-12 flex items-center justify-end gap-2 p-2">
|
||||
<Toggle scale={0.7} bind:value={$useNip44} />
|
||||
<Toggle scale={0.7} bind:value={useNip44} />
|
||||
<small>
|
||||
Send messages using
|
||||
<Popover class="inline">
|
||||
|
Loading…
Reference in New Issue
Block a user