From a1c0f37936f99803c644bc54200f574092ee29bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ant=C3=B3nio=20Conselheiro?= Date: Thu, 17 Oct 2024 17:32:35 -0300 Subject: [PATCH] handling errors cooly --- src/app/pages/chat/chat.component.html | 21 ++++---- src/app/pages/chat/chat.component.ts | 1 + src/app/shared/nostr/main.npool.ts | 9 ++-- .../omegle-service/talk-to-stranger.nostr.ts | 2 +- src/styles.scss | 49 +++++++++++++++++-- 5 files changed, 66 insertions(+), 16 deletions(-) diff --git a/src/app/pages/chat/chat.component.html b/src/app/pages/chat/chat.component.html index d256f00..a0aaec6 100755 --- a/src/app/pages/chat/chat.component.html +++ b/src/app/pages/chat/chat.component.html @@ -24,15 +24,18 @@

{{currentOnline}}

*ngFor="let message of messages" class="chat" > - - - - - {{message[0].author | author}}: - {{message[0].text}} + {{message[0].author | author}}: + {{message[0].text}} + + + + + + {{message[1]}} +
diff --git a/src/app/pages/chat/chat.component.ts b/src/app/pages/chat/chat.component.ts index bfb9b19..7f628e9 100755 --- a/src/app/pages/chat/chat.component.ts +++ b/src/app/pages/chat/chat.component.ts @@ -154,6 +154,7 @@ export class ChatComponent implements OnDestroy, OnInit { this.strangeIsTyping = true; this.scrollConversationToTheEnd(); } else if (event.content === 'disconnected') { + debugger; this.strangeIsTyping = false; this.whoDisconnected = MessageAuthor.STRANGE; this.currentState = ChatState.DISCONNECTED; diff --git a/src/app/shared/nostr/main.npool.ts b/src/app/shared/nostr/main.npool.ts index 3b61f48..cac03bf 100755 --- a/src/app/shared/nostr/main.npool.ts +++ b/src/app/shared/nostr/main.npool.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { NostrEvent, NostrFilter, NPool, NRelay1, NSet } from '@nostrify/nostrify'; +import { NostrEvent, NostrFilter, NPool, NRelay1 } from '@nostrify/nostrify'; import { RelayConfigService } from '@shared/relay-config/relay-config.service'; import { finalize, Observable, Subject } from 'rxjs'; @@ -27,7 +27,7 @@ export class NPoolService extends NPool { console.info(new Date().toLocaleString(),'[[subscribe filter]]', filters); const abort = new AbortController(); const subject = new Subject(); - const nset = new NSet(); + const nset = new Map(); (async () => { for await (const msg of this.req(filters, abort)) { @@ -36,10 +36,13 @@ export class NPoolService extends NPool { break; } else if (msg[0] === 'EVENT') { const nsetSize = nset.size; - nset.add(msg[2]); + nset.set(msg[2].id, msg[2]); if (nsetSize !== nset.size) { subject.next(msg[2]); + } else { + console.debug(new Date().toLocaleString(), 'event deduplicated, not emiting again: ', msg[2]); + console.debug(new Date().toLocaleString(), 'current nset from request: ', nset); } } } diff --git a/src/app/shared/omegle-service/talk-to-stranger.nostr.ts b/src/app/shared/omegle-service/talk-to-stranger.nostr.ts index 0692793..e73e239 100755 --- a/src/app/shared/omegle-service/talk-to-stranger.nostr.ts +++ b/src/app/shared/omegle-service/talk-to-stranger.nostr.ts @@ -8,7 +8,7 @@ import { finalize, Observable, Subject } from 'rxjs'; @Injectable() export class TalkToStrangerNostr { - readonly updateUserCountTimeout = 1000 * 60 * 2; + readonly updateUserCountTimeout = 1000 * 60 * 5; constructor( private nostrEventFactory: NostrEventFactory, diff --git a/src/styles.scss b/src/styles.scss index 28e1d37..18a1f0c 100755 --- a/src/styles.scss +++ b/src/styles.scss @@ -78,12 +78,55 @@ body { margin-bottom: 0.7rem; } -.messageNotSent { - color: #ff8100; - margin: -.5rem 1rem; +.errorWrap { + position: relative; + + .messageNotSent { + color: #ff8100; + margin: -.5rem 1rem; + cursor: pointer; + + &:hover ~ .errorMessage { + display: block; + } + } + + .errorMessage { + border: 1px solid; + border-radius: 5px; + padding: .5rem 1rem; + background-color: #ffdebd; + position: absolute; + display: none; + top: -.5rem; + + &:before, + &:after { + content: ""; + display: block; + border: 10px solid transparent; + width: 0px; + height: 0px; + z-index: 1; + position: absolute; + border-right-color: black; + white-space: nowrap; + left: -20px; + top: 10px; + } + + &:after { + z-index: 2; + border: 8px solid transparent; + border-right-color: #ffdebd; + left: -16px; + top: 12px; + } + } } .chat { + position: relative; margin-bottom: 0.7rem; }