Commit graph

15 commits

Author SHA1 Message Date
3b8c82514a Add delete task functionality for task authors
Added ability for task authors to delete their own tasks from the expanded
view in the task feed.

**Features:**
- Delete button visible only to task author in expanded task view
- Confirmation dialog with destructive styling
- Publishes NIP-09 deletion event (kind 5) with 'a' tag referencing the
  task's event address (kind:pubkey:d-tag format)
- Real-time deletion handling via FeedService routing
- Optimistic local state update for immediate UI feedback

**Implementation:**
- Added deleteTask() method to ScheduledEventService
- Added handleTaskDeletion() for processing incoming deletion events
- Updated FeedService to route kind 31922 deletions to ScheduledEventService
- Added delete button and dialog flow to ScheduledEventCard component
- Integrated with existing confirmation dialog pattern

**Permissions:**
- Only task authors can delete tasks (enforced by isAuthor check)
- NIP-09 validation: relays only accept deletion from event author
- Pubkey verification in handleTaskDeletion()

**Testing:**
- Created tasks and verified delete button appears for author only
- Confirmed deletion removes task from UI immediately
- Verified deletion persists after refresh
- Tested with multiple users - others cannot delete

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16 22:39:38 +01:00
d8e67984b0 Fix real-time unclaim updates for task workflow
Add deletion event handling to enable real-time UI updates when tasks are unclaimed. Previously, unclaiming a task required manual refresh to see the update.

Changes:
- Add handleDeletionEvent() to ScheduledEventService to process kind 5 deletion events
- Update FeedService to route kind 31925 deletions to ScheduledEventService
- Implement NIP-09 validation (only author can delete their own events)
- Remove completions from reactive Map to trigger Vue reactivity

Technical details:
- Subscription to kind 5 events was already in place
- Issue was lack of routing for kind 31925 (RSVP/completion) deletions
- Now follows same pattern as reaction and post deletions
- Deletion events properly update the _completions reactive Map
- UI automatically reflects unclaimed state through Vue reactivity

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-16 17:01:22 +01:00
4050b33d0e 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-11-06 11:30:42 +01:00
9b05bcc238 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-11-06 11:30:42 +01:00
cc5e0dbef6 Squash merge nostrfeed-ui into main 2025-10-21 21:31:25 +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
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
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
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
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
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
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