**Major Features Added:** - **Inline Reply System**: Replace compose screen with inline reply boxes - **Thread Navigation**: Parent/child navigation with jump functionality - **Chain Flow UI**: Reply counts, expand/collapse animations, visual hierarchy - **Enhanced Animations**: Smooth transitions, hover effects, micro-interactions **Frontend Changes:** - **ThreadedCommentWidget**: Complete rewrite with animations and navigation - **ThreadNode Model**: Added parent references and descendant counting - **ThreadedConversationScreen**: Integrated navigation handlers - **PostDetailScreen**: Replaced with threaded conversation view - **ComposeScreen**: Added reply indicators and context - **PostActions**: Fixed visibility checks for chain buttons **Backend Changes:** - **API Route**: Added /posts/:id/thread endpoint - **Post Repository**: Include allow_chain and visibility fields in feed - **Thread Handler**: Support for fetching post chains **UI/UX Improvements:** - **Reply Context**: Clear indication when replying to specific posts - **Character Counting**: 500 character limit with live counter - **Visual Hierarchy**: Depth-based indentation and styling - **Smooth Animations**: SizeTransition, FadeTransition, hover states - **Chain Navigation**: Parent/child buttons with visual feedback **Technical Enhancements:** - **Animation Controllers**: Proper lifecycle management - **State Management**: Clean separation of concerns - **Navigation Callbacks**: Reusable navigation system - **Error Handling**: Graceful fallbacks and user feedback This creates a Reddit-style threaded conversation experience with smooth animations, inline replies, and intuitive navigation between posts in a chain.
33 lines
1.5 KiB
Go
33 lines
1.5 KiB
Go
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
type PrivacySettings struct {
|
|
UserID uuid.UUID `json:"user_id" db:"user_id"`
|
|
ShowLocation *bool `json:"show_location" db:"show_location"`
|
|
ShowInterests *bool `json:"show_interests" db:"show_interests"`
|
|
ProfileVisibility *string `json:"profile_visibility" db:"profile_visibility"`
|
|
PostsVisibility *string `json:"posts_visibility" db:"posts_visibility"`
|
|
SavedVisibility *string `json:"saved_visibility" db:"saved_visibility"`
|
|
FollowRequestPolicy *string `json:"follow_request_policy" db:"follow_request_policy"`
|
|
UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
|
|
}
|
|
|
|
type UserSettings struct {
|
|
UserID uuid.UUID `json:"user_id" db:"user_id"`
|
|
Theme *string `json:"theme" db:"theme"`
|
|
Language *string `json:"language" db:"language"`
|
|
NotificationsEnabled *bool `json:"notifications_enabled" db:"notifications_enabled"`
|
|
EmailNotifications *bool `json:"email_notifications" db:"email_notifications"`
|
|
PushNotifications *bool `json:"push_notifications" db:"push_notifications"`
|
|
ContentFilterLevel *string `json:"content_filter_level" db:"content_filter_level"`
|
|
AutoPlayVideos *bool `json:"auto_play_videos" db:"auto_play_videos"`
|
|
DataSaverMode *bool `json:"data_saver_mode" db:"data_saver_mode"`
|
|
DefaultPostTtl *int `json:"default_post_ttl" db:"default_post_ttl"`
|
|
UpdatedAt time.Time `json:"updated_at" db:"updated_at"`
|
|
}
|