refactor: improve nostr connection and message handling

- Add WebSocket manager class for better connection handling
- Split message handling into separate store
- Add encryption service class
- Create chat composable for reusable chat logic
- Add error handling service
- Add connection status indicators throughout app
- Add message persistence service
- Improve subscription reliability with EOSE handling
- Add connection state management
- Hide status text on mobile for better space usage

These changes improve code organization, reliability, and user experience by:
- Better separation of concerns
- More robust error handling
- Clearer connection status feedback
- Improved message persistence
- More maintainable WebSocket management
- Better mobile responsiveness

Breaking changes:
- Message handling moved to separate store
- WebSocket connections now managed through NostrWebSocketManager
- Encryption now handled through NostrEncryption service
This commit is contained in:
padreug 2025-02-15 00:26:11 +01:00
parent be93965e13
commit 5eb46e96c3
11 changed files with 169 additions and 26 deletions

View file

@ -0,0 +1,21 @@
<script setup lang="ts">
import { useNostrStore } from '@/stores/nostr'
import { computed } from 'vue'
const nostrStore = useNostrStore()
const status = computed(() => nostrStore.connectionStatus)
</script>
<template>
<div class="flex items-center gap-2">
<div
class="h-2 w-2 rounded-full"
:class="{
'bg-green-500 animate-pulse': status === 'connected',
'bg-yellow-500': status === 'connecting',
'bg-red-500': status === 'disconnected'
}"
/>
<span class="text-sm text-muted-foreground hidden md:inline">{{ status }}</span>
</div>
</template>