Key changes:
- Add notification store with path-based wildcard support (chat/*, chat/{pubkey}, *)
- Remove UnreadMessageData interface and processedMessageIds Set tracking
- Implement timestamp-based "seen at" logic with wildcard matching
- Add markAllChatsAsRead() for batch operations
- Integrate ChatNotificationConfig for module configuration
- Create useNotifications composable for easy notification access
Benefits:
- Simpler architecture (removed processedMessageIds complexity)
- Flexible wildcard-based "mark as read" operations
- Future-proof for Primal-style backend sync
- User-scoped storage via StorageService
- Clean separation of concerns
refactor: enhance chat service with activity tracking and sorting
- Updated the ChatService to track lastSent, lastReceived, and lastChecked timestamps for peers, improving message handling and user experience.
- Implemented sorting of peers by last activity to prioritize recent conversations.
- Adjusted message handling to update peer activity based on message direction.
- Ensured updated peer data is saved to storage after modifications.
These changes streamline chat interactions and enhance the overall functionality of the chat service.
refactor: improve ChatService and notification store initialization
- Updated ChatService to ensure the notification store is initialized only after user authentication, preventing potential errors.
- Introduced a new method to safely access the notification store, enhancing error handling.
- Enhanced peer activity tracking by calculating last activity based on actual message timestamps, improving sorting and user experience.
- Added debounced saving of notification state to storage, optimizing performance and reducing unnecessary writes.
- Improved logging for better debugging and visibility into notification handling processes.
These changes enhance the reliability and efficiency of the chat service and notification management.
refactor: clean up logging in ChatService and notification store
- Removed unnecessary console logs from ChatService to streamline the code and improve performance.
- Simplified the initialization process of the notification store by eliminating redundant logging statements.
- Enhanced readability and maintainability of the code by focusing on essential operations without excessive debug output.
These changes contribute to a cleaner codebase and improved performance in chat service operations.
FIX BUILD ERRORS
refactor: update chat module notification configuration
- Refactored the notification settings in the chat module to use a nested structure, enhancing clarity and organization.
- Introduced `wildcardSupport` to the notification configuration, allowing for more flexible notification handling.
- Maintained existing functionality while improving the overall configuration structure.
These changes contribute to a more maintainable and extensible chat module configuration.
refactor: optimize ChatComponent and ChatService for improved performance
- Removed unnecessary sorting of peers in ChatComponent, leveraging the existing order provided by the chat service.
- Updated the useFuzzySearch composable to directly utilize the sorted peers, enhancing search efficiency.
- Cleaned up logging in ChatService by removing redundant console statements, streamlining the codebase.
- Added critical checks to prevent the current user from being included in peer interactions, improving user experience and functionality.
These changes contribute to a more efficient and maintainable chat module.
refactor: simplify message publishing in ChatService
- Removed unnecessary variable assignment in the message publishing process, directly awaiting the relayHub.publishEvent call.
- This change streamlines the code and enhances readability without altering functionality.
These modifications contribute to a cleaner and more efficient chat service implementation.
107 lines
No EOL
2.9 KiB
TypeScript
107 lines
No EOL
2.9 KiB
TypeScript
import type { AppConfig } from './core/types'
|
|
|
|
export const appConfig: AppConfig = {
|
|
modules: {
|
|
base: {
|
|
name: 'base',
|
|
enabled: true,
|
|
lazy: false,
|
|
config: {
|
|
nostr: {
|
|
relays: JSON.parse(import.meta.env.VITE_NOSTR_RELAYS || '["wss://relay.damus.io", "wss://nos.lol"]')
|
|
},
|
|
auth: {
|
|
sessionTimeout: 24 * 60 * 60 * 1000, // 24 hours
|
|
},
|
|
pwa: {
|
|
autoPrompt: true
|
|
},
|
|
imageUpload: {
|
|
baseUrl: import.meta.env.VITE_PICTRS_BASE_URL || 'https://img.mydomain.com',
|
|
maxSizeMB: 10,
|
|
acceptedTypes: ['image/jpeg', 'image/png', 'image/webp', 'image/avif', 'image/gif']
|
|
}
|
|
}
|
|
},
|
|
'nostr-feed': {
|
|
name: 'nostr-feed',
|
|
enabled: true,
|
|
lazy: false,
|
|
config: {
|
|
refreshInterval: 30000, // 30 seconds
|
|
maxPosts: 100,
|
|
adminPubkeys: JSON.parse(import.meta.env.VITE_ADMIN_PUBKEYS || '[]'),
|
|
feedTypes: ['announcements', 'general']
|
|
}
|
|
},
|
|
market: {
|
|
name: 'market',
|
|
enabled: true,
|
|
lazy: false,
|
|
config: {
|
|
defaultCurrency: 'sats',
|
|
paymentTimeout: 300000, // 5 minutes
|
|
maxOrderHistory: 50,
|
|
apiConfig: {
|
|
baseUrl: import.meta.env.VITE_LNBITS_BASE_URL || 'http://localhost:5000'
|
|
}
|
|
}
|
|
},
|
|
chat: {
|
|
name: 'chat',
|
|
enabled: true,
|
|
lazy: false, // Load on startup to register routes
|
|
config: {
|
|
maxMessages: 500,
|
|
autoScroll: true,
|
|
showTimestamps: true,
|
|
notifications: {
|
|
enabled: true,
|
|
soundEnabled: false,
|
|
wildcardSupport: true
|
|
}
|
|
}
|
|
},
|
|
events: {
|
|
name: 'events',
|
|
enabled: true,
|
|
lazy: false,
|
|
config: {
|
|
apiConfig: {
|
|
baseUrl: import.meta.env.VITE_LNBITS_BASE_URL || 'http://localhost:5000',
|
|
apiKey: import.meta.env.VITE_API_KEY || ''
|
|
},
|
|
ticketValidationEndpoint: '/api/tickets/validate',
|
|
maxTicketsPerUser: 10
|
|
}
|
|
},
|
|
wallet: {
|
|
name: 'wallet',
|
|
enabled: true,
|
|
lazy: false,
|
|
config: {
|
|
defaultReceiveAmount: 1000, // 1000 sats
|
|
maxReceiveAmount: 1000000, // 1M sats
|
|
apiConfig: {
|
|
baseUrl: import.meta.env.VITE_LNBITS_BASE_URL || 'http://localhost:5000'
|
|
},
|
|
websocket: {
|
|
enabled: import.meta.env.VITE_WEBSOCKET_ENABLED !== 'false', // Can be disabled via env var
|
|
reconnectDelay: 2000, // 2 seconds (increased from 1s to reduce server load)
|
|
maxReconnectAttempts: 3, // Reduced from 5 to avoid overwhelming server
|
|
fallbackToPolling: true, // Enable polling fallback when WebSocket fails
|
|
pollingInterval: 10000 // 10 seconds for polling updates
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
features: {
|
|
pwa: true,
|
|
pushNotifications: true,
|
|
electronApp: false,
|
|
developmentMode: import.meta.env.DEV
|
|
}
|
|
}
|
|
|
|
export default appConfig |