Commit graph

47 commits

Author SHA1 Message Date
0f0eae8800 Enables recurring scheduled event completion
Extends scheduled event completion to support recurring events.

The changes introduce the concept of an "occurrence" for recurring events,
allowing users to mark individual instances of a recurring event as complete.
This involves:
- Adding recurrence information to the ScheduledEvent model.
- Modifying completion logic to handle recurring events with daily/weekly frequencies
- Updating UI to display recurrence information and mark individual occurrences as complete.
2025-10-31 22:00:19 +01:00
2cf737213b Filters and sorts scheduled events
Improves scheduled event retrieval by filtering events
based on user participation and sorting them by start time.

This ensures that users only see events they are participating
in or events that are open to the entire community.
2025-10-31 22:00:19 +01:00
62161dd000 Shows completer name on completed badge
Updates the completed badge to display the name of the user who marked the event as complete.

This provides better context and clarity regarding who triggered the completion status.
2025-10-31 22:00:19 +01:00
93e3e0a1ca Filters scheduled events by participation
Ensures users only see scheduled events they are participating in or events that are open to everyone.

This change filters the list of today's scheduled events based on the current user's participation.
It only displays events where the user is listed as a participant or events that do not have any participants specified.
2025-10-31 22:00:19 +01:00
b023d54264 Replaces custom expand/collapse with Collapsible
Migrates ScheduledEventCard to use the Collapsible component from the UI library.

This simplifies the component's structure and improves accessibility by leveraging the built-in features of the Collapsible component.
Removes custom logic for managing the expanded/collapsed state.
2025-10-31 22:00:19 +01:00
5171b24ba3 Uses array for completions to improve reactivity
Changes the `allCompletions` computed property to return an array instead of a Map.
This improves reactivity in the component that uses it, as Vue can more efficiently track changes in an array.
Also simplifies the pubkey extraction process.
2025-10-31 22:00:19 +01:00
5033a7155c Adds expandable event card
Improves the Scheduled Event Card component by adding an expandable view.

This change introduces a collapsed view that shows the event time and title, and an expanded view which displays all event details. This allows users to quickly scan the scheduled events and expand those they are interested in.
2025-10-31 22:00:19 +01:00
07e5758adc Adds support for completable task events
Enables marking scheduled events as complete based on a new "event-type" tag.

This change introduces the concept of "completable" events, specifically for events of type "task". It modifies the ScheduledEventCard component to:

- Display completion information only for completable events
- Show the "Mark Complete" button only for completable events that are not yet completed
- Adjust the opacity and strikethrough styling based on the event's completable and completed status.

The ScheduledEventService is updated to extract the event type from the "event-type" tag.
2025-10-31 22:00:19 +01:00
987ccde96b Fetches profiles for event authors/completers
Ensures profiles are fetched for authors and completers of scheduled events,
improving user experience by displaying relevant user information.

This is achieved by watching for scheduled events and completions, then
fetching profiles for any new pubkeys encountered.
2025-10-31 22:00:19 +01:00
5187b4ef50 Adds confirmation dialog for marking events complete
Improves user experience by adding a confirmation dialog
before marking a scheduled event as complete. This helps
prevent accidental completion of events.
2025-10-31 22:00:19 +01:00
484e39eba8 Enables marking scheduled events as complete
Implements a feature to mark scheduled events as complete, replacing the checkbox with a button for improved UX.

This commit enhances the Scheduled Events functionality by allowing users to mark events as complete. It also includes:

- Replaces the checkbox with a "Mark Complete" button for better usability.
- Adds logging for debugging purposes during event completion toggling.
- Routes completion events (kind 31925) to the ScheduledEventService.
- Optimistically updates the local state after publishing completion events.
2025-10-31 22:00:19 +01:00
f60ed472c5 Adds scheduled events to the feed
Implements NIP-52 scheduled events, allowing users to view and interact with calendar events.

A new `ScheduledEventService` is introduced to manage fetching, storing, and completing scheduled events. A new `ScheduledEventCard` component is introduced for displaying the scheduled events.
2025-10-31 22:00:19 +01:00
cc5e0dbef6 Squash merge nostrfeed-ui into main 2025-10-21 21:31:25 +02:00
4e90a4e795 Update visibility logic in ThreadedPost component
- Refined the visibility logic to ensure a post is only hidden if its parent is collapsed, rather than if it is collapsed itself. This change enhances the clarity of post visibility in threaded discussions.
- Adjusted the parent-collapsed prop to reflect the current collapse state, improving the interaction and user experience within the NostrFeed module.
2025-09-23 23:59:43 +02:00
f0a6b2bd1d Implement limited replies feature in NostrFeed component
- Introduced a mechanism to track posts that should display limited replies (only the first 2) instead of collapsing them entirely, enhancing user interaction with threaded discussions.
- Updated the ThreadedPost component to support toggling between limited and full replies, improving visibility and engagement with nested replies.
- Enhanced the FeedService to ensure proper filtering and handling of feed types, contributing to a more organized and user-friendly experience within the NostrFeed module.
2025-09-23 23:59:43 +02:00
872954d5ce Implement centralized collapse state management in NostrFeed component
- Introduced a centralized mechanism for managing the collapse state of posts, allowing for automatic collapsing of posts with more than 2 direct replies.
- Enhanced the ThreadedPost component to utilize the centralized collapse state, improving the visibility and interaction of nested replies.
- Added cascading collapse functionality to ensure that all descendant posts are collapsed when a parent post is collapsed.

These changes contribute to a more organized and user-friendly experience within the NostrFeed module.
2025-09-23 23:59:43 +02:00
1e1cd69aaf Enhance FeedService with reaction handling and post sorting
- Introduced a ReactionService to manage like counts for posts, improving engagement metrics.
- Implemented sorting logic for posts based on likes and timestamps, enhancing the visibility of popular content.
- Added recursive sorting for replies to maintain order within threads, ensuring a coherent display of discussions.

These changes contribute to a more dynamic and user-friendly experience within the NostrFeed module.
2025-09-23 23:59:43 +02:00
19ab660ed3 Enhance reply visibility and collapse functionality in ThreadedPost component
- Updated the collapse state logic to automatically collapse replies if there are more than 2 direct replies, improving user experience by reducing clutter.
- Added a "Load more replies" button to allow users to expand and view additional replies when collapsed, enhancing interaction and engagement.

These changes contribute to a more organized and user-friendly interface within the NostrFeed module.
2025-09-23 23:59:43 +02:00
7c5f75a8ea Update collapse behavior and styling in ThreadedPost component
- Modified the collapse state logic to automatically collapse replies if there are more than 2 direct replies, enhancing user experience by reducing clutter.
- Updated the styling of the vertical line connecting nested replies for improved visual consistency.

These changes contribute to a more organized and user-friendly interface within the NostrFeed module.
2025-09-23 23:59:43 +02:00
26ba27c87a Enhance styling and layout of action buttons in ThreadedPost component
- Updated button sizes and padding for Reply, Like, and Share actions to improve visual consistency and usability.
- Adjusted hover effects and removed unnecessary text for a cleaner interface.

These changes contribute to a more streamlined and user-friendly experience within the NostrFeed module.
2025-09-23 23:59:43 +02:00
c7ce34b301 Refactor post action buttons in ThreadedPost component
- Updated the layout and styling of action buttons (Reply, Like, Share) for improved usability and visual consistency.
- Adjusted button sizes, padding, and hover effects to enhance the user experience.

These changes contribute to a more streamlined and accessible interface within the NostrFeed module.
2025-09-23 23:59:43 +02:00
dfcb354a5c Refactor post action layout in ThreadedPost component
- Updated the layout of post action buttons to align them to the right, improving the visual structure of the component.
- Removed the mentions display section to streamline the interface and focus on action buttons.

These changes enhance the usability and clarity of the ThreadedPost component within the NostrFeed module.
2025-09-23 23:59:43 +02:00
eaf040d4a1 Update vertical line styling and indentation in ThreadedPost component
- Changed the class for the vertical line connecting nested replies to improve visual consistency.
- Adjusted the margin calculation for better alignment of nested posts, enhancing the overall layout of threaded discussions.

These updates contribute to a more organized and visually appealing interface within the NostrFeed module.
2025-09-23 23:59:43 +02:00
be8c7162b6 Refactor indentation and styling in ThreadedPost component
- Adjusted margin and padding values for nested posts to improve visual hierarchy and readability.
- Updated styles for post containers to enhance the overall layout of threaded discussions.

These changes contribute to a more organized and user-friendly interface within the NostrFeed module.
2025-09-23 23:59:43 +02:00
ba590d5a4a Remove unnecessary horizontal line for nested replies in ThreadedPost component
- Eliminated the horizontal line that visually connected nested replies, simplifying the layout of threaded posts.
- This change enhances the clarity and organization of the post display, contributing to a more streamlined user experience within the NostrFeed module.
2025-09-23 23:59:43 +02:00
791bdbe3eb Refactor indentation and styling in ThreadedPost component
- Adjusted margin and padding values for nested posts to improve visual hierarchy and readability.
- Updated styles for vertical lines and post containers to enhance the overall layout of threaded discussions.

These changes contribute to a more organized and user-friendly interface within the NostrFeed module.
2025-09-23 23:59:43 +02:00
ebc7885f04 Implement threaded post structure in NostrFeed module
- Introduced a new ThreadedPost component to display posts and their replies in a nested format, enhancing the readability of discussions.
- Updated the useFeed composable to include a computed property for building threaded posts from flat post data.
- Modified FeedService to support the extraction of reply information and build a hierarchical structure for posts, allowing for better organization of replies.
- Removed deprecated rideshare-related functions from NostrFeed.vue, streamlining the component and focusing on the threaded view.

These changes improve the user experience by facilitating clearer interactions within post discussions, promoting engagement and organization in the NostrFeed module.
2025-09-23 23:59:43 +02:00
ff60277ae9 Update RideshareComposer to reflect pricing in satoshis
- Changed price labels and descriptions to specify 'sats' instead of dollars, enhancing clarity for users.
- Updated the price field type from string to number, ensuring proper validation and handling of input.
- Adjusted content generation to display prices in satoshis, aligning with the overall theme of the rideshare feature.

These changes improve the user experience by providing clearer financial information in the RideshareComposer component.
2025-09-23 23:59:37 +02:00
3c20d1c584 Refactor NostrFeed module and remove marketplace components
- Deleted the MarketProduct component and associated market parsing logic, streamlining the NostrFeed module.
- Updated FeedService to exclude marketplace events from the main feed, ensuring clearer event management.
- Adjusted content filters to remove marketplace-related entries, enhancing the organization of content filtering.

These changes improve the clarity and efficiency of the NostrFeed module by separating marketplace functionality.
2025-09-23 23:59:37 +02:00
2a9915a727 fix build errors 2025-09-23 23:59:37 +02:00
dfd3ddd112 Add Rideshare functionality to NostrFeed module
- Introduced a new RideshareComposer component for creating rideshare posts, allowing users to specify ride details such as type, locations, date, time, and contact methods.
- Enhanced NostrFeed.vue to display rideshare badges for relevant posts, improving visibility and categorization of rideshare content.
- Updated Home.vue to integrate the RideshareComposer, providing users with an option to compose rideshare requests or offers alongside regular notes.

These changes enhance the user experience by facilitating rideshare interactions within the NostrFeed module, promoting community engagement.
2025-09-23 23:59:37 +02:00
667a7c2d89 Add rideshare content filter and enhance FeedService filtering logic
- Introduced a new rideshare content filter in content-filters.ts, allowing for the categorization of rideshare requests and offers.
- Updated the FeedService to support filtering by tags and keywords, enhancing the ability to search and filter content based on user-defined criteria.
- Modified Home.vue to include the new rideshare filter preset, improving user access to rideshare-related content.

These changes enhance the content filtering capabilities and user experience within the NostrFeed module.
2025-09-23 23:59:37 +02:00
005b78bf0e Add ReactionService and integrate reactions functionality into NostrFeed module
- Introduced ReactionService to manage event reactions, including likes and dislikes.
- Updated NostrFeed module to register ReactionService in the DI container and initialize it during installation.
- Enhanced NostrFeed.vue to utilize the reactions service for displaying and managing likes on posts.
- Created useReactions composable for handling reactions, including fetching event reactions and subscribing to updates.

These changes enhance user engagement by allowing users to interact with posts through reactions, improving the overall experience within the feed.

Refactor reactions handling in NostrFeed module

- Renamed `likeEvent` to `toggleLike` in the useReactions composable to better reflect its functionality of toggling likes.
- Updated NostrFeed.vue to utilize the new `toggleLike` method for handling like interactions.
- Enhanced ReactionService to support deletion of reactions and improved handling of reaction events, including subscription to deletion events.
- Added logic to manage user reaction IDs for better tracking of likes and unlikes.

These changes streamline the reactions functionality, improving user interaction and feedback within the NostrFeed.

Refactor content filters and event inclusion logic in NostrFeed module

- Removed market-related content filters from the presets, as they now have a dedicated section.
- Updated the handling of reactions in content filters, clarifying that reactions are processed separately by the ReactionService.
- Enhanced the FeedService to exclude reactions and deletions from the main feed, ensuring cleaner event management.

These changes streamline the content filtering process and improve the clarity of event handling within the NostrFeed.

Refactor content filters and FeedService logic for marketplace separation

- Removed marketplace-related filters from the general presets in content-filters.ts, as they now have a dedicated section.
- Updated FeedService to exclude marketplace events from the main feed, ensuring clearer event management.
- Adjusted Home.vue to reflect the removal of the marketplace filter preset.

These changes streamline content filtering and improve the organization of marketplace events within the NostrFeed module.

Enhance ReactionService to support global deletion monitoring and improve reaction handling

- Added functionality to monitor deletion events for reactions, ensuring accurate updates when reactions are deleted.
- Implemented logic to handle deletion requests, processing only those from the original reaction authors as per NIP-09 spec.
- Updated reaction management to ensure only the latest reaction from each user is counted, improving the accuracy of like/dislike tallies.
- Refactored event reaction updates to clear deleted reactions and maintain a clean state.

These changes enhance the reliability and user experience of the reactions feature within the NostrFeed module.
2025-09-23 23:59:37 +02:00
45391cbaa1 Add ProfileService and integrate profiles management into NostrFeed module
- Introduced ProfileService to handle user profiles, including fetching and displaying profile information.
- Updated NostrFeed module to register ProfileService in the DI container and initialize it during installation.
- Enhanced NostrFeed.vue to utilize the profiles service for displaying user names alongside posts.
- Created useProfiles composable for managing profile-related functionality, including fetching and subscribing to profile updates.

These changes improve user engagement by providing richer profile information within the feed, enhancing the overall user experience.
2025-09-23 23:59:37 +02:00
310612a2c5 Update NostrFeed and Home components for improved styling and layout
- Modified NostrFeed.vue to enhance the post list styling with updated divider classes for better visual separation.
- Adjusted Home.vue button styles to include background color and border enhancements, improving the overall appearance and user interaction.

These changes refine the user interface, contributing to a more polished and engaging experience.
2025-09-23 23:59:37 +02:00
2d0aadccb7 Implement Note Composer and enhance NostrFeed interactions
- Added NoteComposer.vue for composing notes, including reply functionality and mention support.
- Integrated NoteComposer into Home.vue, allowing users to publish notes and reply to existing ones.
- Enhanced NostrFeed.vue to handle reply events, improving user engagement with notes.
- Updated Home.vue to manage note publishing and reply states effectively.

These changes enhance the user experience by providing a seamless way to compose and interact with notes within the feed.

Enhance NostrFeed and Home components for improved user experience

- Added compact mode support in NostrFeed.vue to optimize display for mobile users.
- Refactored layout in NostrFeed.vue for better responsiveness and usability, including adjustments to padding and spacing.
- Updated Home.vue to integrate a collapsible filter panel and a floating action button for composing notes, enhancing accessibility and interaction.
- Implemented quick filter presets for mobile, allowing users to easily switch between content types.

These changes improve the overall functionality and user engagement within the feed, providing a more streamlined experience across devices.

Enhance NoteComposer and Home components for improved note management

- Updated NoteComposer.vue to include a close button for better user control when composing notes.
- Modified Home.vue to handle the close event from NoteComposer, allowing users to dismiss the composer easily.

These changes enhance the user experience by providing a more intuitive interface for composing and managing notes.
2025-09-23 23:59:37 +02:00
77ed913e1b Add MarketProduct component and integrate into NostrFeed
- Introduced MarketProduct.vue to display market product details, including images, pricing, and availability status.
- Enhanced NostrFeed.vue to render MarketProduct components for market events, allowing users to view and share products.
- Implemented market data parsing in marketParser.ts to handle Nostr market events, ensuring structured data representation.

These changes improve the marketplace functionality within the feed, enhancing user engagement with market products.
2025-09-23 23:59:37 +02:00
f05398fa9e Enhance FeedService filtering logic
- Added a watch function in useFeed to log updates to filtered posts,
aiding in debugging.
- Updated content filters to include text notes in announcements and
marketplace presets, ensuring broader content visibility.
- Enhanced FeedService to log detailed information during custom
filtering, improving traceability of filtering logic.
- Modified Home.vue to always use custom filters for better consistency
in feed display.

These changes improve the reactivity, flexibility, and clarity of the
feed system, enhancing the overall user experience.
2025-09-23 23:59:37 +02:00
7025ea81c6 Refactor FeedFilters component to simplify custom filter display
- Replaced the Collapsible component with a conditional div for displaying custom filters, enhancing clarity and reducing complexity in the UI.
- Removed unused imports related to the Collapsible component to clean up the code.

These changes improve the maintainability and readability of the FeedFilters component.
2025-09-23 23:59:37 +02:00
e90c4992da Add collapsible components and feed filter functionality
- Introduced Collapsible, CollapsibleContent, and CollapsibleTrigger components for improved UI interactions.
- Added FeedFilters component to allow users to customize content visibility in the NostrFeed.
- Updated NostrFeed and Home components to integrate new filtering capabilities, enhancing user experience with customizable content display.
- Implemented content filter logic in FeedService to support dynamic filtering based on user selections.

These changes enhance the modularity and interactivity of the feed system, providing users with greater control over the content they see.
2025-09-23 23:59:37 +02:00
a5e6c301e1 Update FeedService to use direct connection status check
- Changed the connection status check in FeedService from an asynchronous health check to a direct property access on relayHub.
- Added a console log to output the current connection status for better debugging and monitoring.

These changes improve the efficiency of the connection status verification process in the FeedService.
2025-09-23 23:59:37 +02:00
6217e3b70a Add FeedService and integrate into NostrFeed module
- Introduced FeedService to manage feed functionality, including subscription and deduplication of posts.
- Updated NostrFeed module to register FeedService in the DI container and initialize it during installation.
- Refactored useFeed composable to utilize FeedService for managing feed state and loading posts.
- Enhanced NostrFeed component to display posts and handle loading states more effectively.
- Changed Home.vue to use the 'all' feed type for broader content display.

These changes improve the modularity and functionality of the feed system, providing a more robust user experience.
2025-09-23 23:59:37 +02:00
6b5c6d4ffe 1.3.5 Module Registration Pattern: Add BaseModulePlugin abstraction
- Create BaseModulePlugin class to eliminate boilerplate across modules
- Provide standardized service registration, component registration, and event setup
- Implement declarative configuration approach with onInstall/onUninstall hooks
- Add automatic logging with consistent emoji patterns and error handling
- Refactor nostr-feed and events modules to demonstrate pattern (~47% code reduction)
- Maintain full TypeScript compatibility and backward compatibility
- All modules now follow identical registration patterns for better maintainability

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-06 12:16:40 +02:00
861c032300 Refactor imports and enhance type handling across components
- Update import paths for useTicketPurchase in PurchaseTicketDialog.vue to reflect new module structure.
- Adjust type handling in Navbar.vue and various market components to use 'any' for improved compatibility with existing data structures.
- Enhance useLightningPayment composable to include shipping zone details, ensuring better order management.
- Remove unused pages (events.vue, MyTickets.vue, OrderHistory.vue) to streamline the codebase and improve maintainability.
2025-09-05 05:42:44 +02:00
d33d2abf8a Refactor NostrFeed.vue for improved connection handling
- Simplify connection checks by directly accessing the isConnected property of relayHub, enhancing code clarity.
- Update the loadNotes and startRealtimeSubscription functions to reflect the new connection logic, improving maintainability.
2025-09-05 01:51:11 +02:00
17c07c37a0 Refactor chat and market modules for improved integration and maintainability
- Remove deprecated Nostr chat and relay hub components, transitioning to a modular chat service for better encapsulation.
- Update App.vue and Navbar.vue to utilize the new chat module, enhancing user experience with automatic peer management.
- Simplify event handling and connection logic in ChatComponent.vue, ensuring compatibility with the new chat service architecture.
- Adjust market settings and order history components to reflect changes in the chat module, improving overall coherence in the application structure.
- Clean up unused imports and streamline configuration access for better performance and maintainability.
2025-09-05 01:44:15 +02:00
519a9003d4 Implement modular architecture with core services and Nostr integration
- Introduce a modular application structure with a new app configuration file to manage module settings and features.
- Implement a dependency injection container for service management across modules.
- Create a plugin manager to handle module registration, installation, and lifecycle management.
- Develop a global event bus for inter-module communication, enhancing loose coupling between components.
- Add core modules including base functionalities, Nostr feed, and PWA services, with support for dynamic loading and configuration.
- Establish a Nostr client hub for managing WebSocket connections and event handling.
- Enhance user experience with a responsive Nostr feed component, integrating admin announcements and community posts.
- Refactor existing components to align with the new modular architecture, improving maintainability and scalability.
2025-09-04 23:43:33 +02:00