@ -1,5 +1,5 @@
import { relayPool , generatePrivateKey , getPublicKey , signEvent } from 'nostr-tools' ;
import { relayPool , generatePrivateKey , getPublicKey , signEvent } from 'nostr-tools' ;
import { elem , multilineTex t} from './domutil.js' ;
import { elem , parseTextConten t} from './domutil.js' ;
import { dateTime , formatTime } from './timeutil.js' ;
import { dateTime , formatTime } from './timeutil.js' ;
// curl -H 'accept: application/nostr+json' https://nostr.x1ddos.ch
// curl -H 'accept: application/nostr+json' https://nostr.x1ddos.ch
const pool = relayPool ( ) ;
const pool = relayPool ( ) ;
@ -155,11 +155,12 @@ setInterval(() => {
function createTextNote ( evt , relay ) {
function createTextNote ( evt , relay ) {
const { host , img , isReply , name , replies , time , userName } = getMetadata ( evt , relay ) ;
const { host , img , isReply , name , replies , time , userName } = getMetadata ( evt , relay ) ;
const isLongContent = evt . content . trimRight ( ) . length > 280 ;
// const isLongContent = evt.content.trimRight().length > 280;
const content = isLongContent ? evt . content . slice ( 0 , 280 ) : evt . content ;
// const content = isLongContent ? evt.content.slice(0, 280) : evt.content;
const hasReactions = reactionMap [ evt . id ] ? . length > 0 ;
const hasReactions = reactionMap [ evt . id ] ? . length > 0 ;
const didReact = hasReactions && ! ! reactionMap [ evt . id ] . find ( reaction => reaction . pubkey === pubkey ) ;
const didReact = hasReactions && ! ! reactionMap [ evt . id ] . find ( reaction => reaction . pubkey === pubkey ) ;
const replyFeed = replies [ 0 ] ? replies . map ( e => replyDomMap [ e . id ] = createTextNote ( e , relay ) ) : [ ] ;
const replyFeed = replies [ 0 ] ? replies . map ( e => replyDomMap [ e . id ] = createTextNote ( e , relay ) ) : [ ] ;
const content = parseTextContent ( evt . content ) ;
const body = elem ( 'div' , { className : 'mbox-body' } , [
const body = elem ( 'div' , { className : 'mbox-body' } , [
elem ( 'header' , {
elem ( 'header' , {
className : 'mbox-header' ,
className : 'mbox-header' ,
@ -173,7 +174,7 @@ function createTextNote(evt, relay) {
elem ( 'time' , { dateTime : time . toISOString ( ) } , formatTime ( time ) ) ,
elem ( 'time' , { dateTime : time . toISOString ( ) } , formatTime ( time ) ) ,
] ) ,
] ) ,
] ) ,
] ) ,
elem ( 'div' , { data : isLongContent ? { append : evt . content . slice ( 280 ) } : null } , multilineText ( content ) ) ,
elem ( 'div' , { /* data: isLongContent ? {append: evt.content.slice(280)} : null*/ } , content ) ,
elem ( 'button' , {
elem ( 'button' , {
className : 'btn-inline' , name : 'star' , type : 'button' ,
className : 'btn-inline' , name : 'star' , type : 'button' ,
data : { 'eventId' : evt . id , relay } ,
data : { 'eventId' : evt . id , relay } ,
@ -630,12 +631,12 @@ privateKeyInput.value = localStorage.getItem('private_key');
pubKeyInput . value = localStorage . getItem ( 'pub_key' ) ;
pubKeyInput . value = localStorage . getItem ( 'pub_key' ) ;
document . body . addEventListener ( 'click' , ( e ) => {
document . body . addEventListener ( 'click' , ( e ) => {
const container = e . target . closest ( '[data-append]' ) ;
// const container = e.target.closest('[data-append]');
if ( container ) {
// if (container) {
container . append ( ... multilineText ( container . dataset . append ) ) ;
// container.append(...parseTextContent(container.dataset.append));
delete container . dataset . append ;
// delete container.dataset.append;
return ;
// return;
}
// }
const back = e . target . closest ( '[name="back"]' )
const back = e . target . closest ( '[name="back"]' )
if ( back ) {
if ( back ) {
hideNewMessage ( true ) ;
hideNewMessage ( true ) ;