203
docs/FEATURES.md
Archivo normal
203
docs/FEATURES.md
Archivo normal
@@ -0,0 +1,203 @@
|
||||
# Features Documentation
|
||||
|
||||
## My ActivityPub Application Features
|
||||
|
||||
This document describes the key features of the My ActivityPub application.
|
||||
|
||||
## Core Features
|
||||
|
||||
### 1. Pull-to-Refresh Timeline
|
||||
|
||||
The application now supports pull-to-refresh functionality for both public and home timelines.
|
||||
|
||||
**How to use:**
|
||||
- Swipe down from the top of the timeline to refresh
|
||||
- A loading indicator will appear while fetching new posts
|
||||
- Timeline will be updated with the latest posts from your instance
|
||||
|
||||
**Technical Details:**
|
||||
- Implemented using `PullToRefreshBox` from Material 3
|
||||
- Refreshes without clearing the current timeline on error
|
||||
- Works for both Public Federated Timeline and Home Timeline
|
||||
|
||||
### 2. Automatic Timeline Updates
|
||||
|
||||
Timelines automatically check for new posts every 30 seconds and update seamlessly.
|
||||
|
||||
**Behavior:**
|
||||
- Checks for new posts using the `since_id` parameter
|
||||
- New posts are added to the top of the timeline
|
||||
- Updates happen silently in the background
|
||||
- No interruption to user scrolling or reading
|
||||
- Auto-refresh starts automatically when switching timelines
|
||||
|
||||
**Technical Details:**
|
||||
- Uses Kotlin Coroutines with a 30-second delay loop
|
||||
- Implemented in `TimelineViewModel.startAutoRefresh()`
|
||||
- Cancels previous auto-refresh job when switching timelines
|
||||
- Silently fails on network errors to avoid interrupting user experience
|
||||
|
||||
### 3. Clickable Links and Hashtags
|
||||
|
||||
Post content now supports interactive links and hashtags.
|
||||
|
||||
**Supported Elements:**
|
||||
- **HTTP/HTTPS URLs**: Click to open in external browser
|
||||
- **Hashtags**: Styled with primary color and underline
|
||||
- **HTML Content**: Properly parsed and displayed
|
||||
|
||||
**User Experience:**
|
||||
- Links and hashtags are displayed in the primary theme color
|
||||
- Underlined for easy identification
|
||||
- Tap any link to open in default browser
|
||||
- Hashtags are visually distinct
|
||||
|
||||
**Technical Details:**
|
||||
- Uses `AnnotatedString` with `ClickableText`
|
||||
- Regex patterns to identify URLs and hashtags
|
||||
- HTML content is parsed using Android's `Html.fromHtml()`
|
||||
- Link annotations for click handling
|
||||
|
||||
## Timeline Features
|
||||
|
||||
### Public Federated Timeline
|
||||
- Shows posts from across the Fediverse
|
||||
- Default view when not logged in
|
||||
- Updates automatically every 30 seconds
|
||||
- Pull-to-refresh support
|
||||
|
||||
### Home Timeline
|
||||
- Shows posts from accounts you follow
|
||||
- Requires authentication
|
||||
- Updates automatically every 30 seconds
|
||||
- Pull-to-refresh support
|
||||
|
||||
### Infinite Scrolling
|
||||
- Load more posts by scrolling to bottom
|
||||
- "Load more" button appears when reaching end
|
||||
- Preserves scroll position when navigating
|
||||
|
||||
## Post Interaction Features
|
||||
|
||||
### Viewing Posts
|
||||
- Click any post to see detailed view
|
||||
- View all replies in thread
|
||||
- See post statistics (replies, boosts, favorites)
|
||||
|
||||
### Interacting with Posts (Authenticated Users Only)
|
||||
- **Reply**: Add your own reply to any post
|
||||
- **Boost**: Repost to your timeline
|
||||
- **Favorite**: Like a post
|
||||
- Post visibility selection when replying
|
||||
|
||||
### Post Details
|
||||
- Full post content with clickable links
|
||||
- User information and avatar
|
||||
- Media attachments display
|
||||
- Interaction buttons
|
||||
- Reply thread view
|
||||
|
||||
## Authentication Features
|
||||
|
||||
### OAuth Login Flow
|
||||
1. Enter your Mastodon/ActivityPub instance URL
|
||||
2. Register application with instance
|
||||
3. Authorize in browser
|
||||
4. Automatic token storage
|
||||
5. Persistent login across app restarts
|
||||
|
||||
### Security
|
||||
- Tokens stored securely using DataStore
|
||||
- OAuth 2.0 standard implementation
|
||||
- HTTPS required for all API calls
|
||||
|
||||
## Notifications
|
||||
|
||||
- View all your notifications
|
||||
- Support for different notification types:
|
||||
- Mentions
|
||||
- Favorites
|
||||
- Boosts
|
||||
- Follows
|
||||
- Replies
|
||||
|
||||
## User Interface
|
||||
|
||||
### Modern Material Design 3
|
||||
- Dynamic color support (Android 12+)
|
||||
- Dark mode support
|
||||
- Edge-to-edge display
|
||||
- Smooth animations
|
||||
|
||||
### Navigation
|
||||
- Bottom navigation for timeline switching
|
||||
- Top app bar with menu options
|
||||
- Back button support for detail views
|
||||
- Drawer for account management
|
||||
|
||||
### Responsive Design
|
||||
- Optimized for different screen sizes
|
||||
- Proper padding and spacing
|
||||
- Touch-friendly button sizes
|
||||
|
||||
## Technical Architecture
|
||||
|
||||
### Layer Structure
|
||||
1. **UI Layer**: Composable functions
|
||||
2. **ViewModel Layer**: State management
|
||||
3. **Repository Layer**: Data operations
|
||||
4. **API Layer**: Network calls
|
||||
|
||||
### Key Technologies
|
||||
- Kotlin
|
||||
- Jetpack Compose
|
||||
- Material 3
|
||||
- Retrofit for API calls
|
||||
- OkHttp for networking
|
||||
- Coil for image loading
|
||||
- DataStore for preferences
|
||||
- Kotlin Coroutines for async operations
|
||||
|
||||
## Performance
|
||||
|
||||
### Optimizations
|
||||
- Lazy loading of timeline
|
||||
- Image caching with Coil
|
||||
- Efficient state management
|
||||
- Background refresh doesn't block UI
|
||||
- Debounced auto-refresh
|
||||
|
||||
### Network Efficiency
|
||||
- Pagination with max_id/since_id
|
||||
- Only fetches new posts on auto-refresh
|
||||
- Request timeouts to prevent hanging
|
||||
- Retry logic for failed requests
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
Potential features for future releases:
|
||||
- Direct messages
|
||||
- Search functionality
|
||||
- Filter/mute options
|
||||
- Multiple account support
|
||||
- Offline mode with local caching
|
||||
- Push notifications
|
||||
- Media upload
|
||||
- Custom emoji support
|
||||
- Poll creation
|
||||
- Scheduled posts
|
||||
|
||||
---
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. Launch the app
|
||||
2. Browse public timeline without login
|
||||
3. Tap "Login" to connect your account
|
||||
4. Enter your instance URL
|
||||
5. Authorize in browser
|
||||
6. Start posting and interacting!
|
||||
|
||||
## Support
|
||||
|
||||
For issues or feature requests, please check the repository's issue tracker.
|
||||
Referencia en una nueva incidencia
Block a user