Add bookmarks (#7107)
* Add backend support for bookmarks Bookmarks behave like favourites, except they aren't shared with other users and do not have an associated counter. * Add spec for bookmark endpoints * Add front-end support for bookmarks * Introduce OAuth scopes for bookmarks * Add bookmarks to archive takeout * Fix migration * Coding style fixes * Fix rebase issue * Update bookmarked_statuses to latest UI changes * Update bookmark actions to properly reflect status changes in state * Add bookmarks item to single-column layout * Make active bookmarks red
This commit is contained in:
		
					parent
					
						
							
								afb398b583
							
						
					
				
			
			
				commit
				
					
						dfea7368c9
					
				
			
		
					 33 changed files with 712 additions and 1 deletions
				
			
		
							
								
								
									
										39
									
								
								app/controllers/api/v1/statuses/bookmarks_controller.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								app/controllers/api/v1/statuses/bookmarks_controller.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,39 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class Api::V1::Statuses::BookmarksController < Api::BaseController | ||||
|   include Authorization | ||||
| 
 | ||||
|   before_action -> { doorkeeper_authorize! :write, :'write:bookmarks' } | ||||
|   before_action :require_user! | ||||
| 
 | ||||
|   respond_to :json | ||||
| 
 | ||||
|   def create | ||||
|     @status = bookmarked_status | ||||
|     render json: @status, serializer: REST::StatusSerializer | ||||
|   end | ||||
| 
 | ||||
|   def destroy | ||||
|     @status = requested_status | ||||
|     @bookmarks_map = { @status.id => false } | ||||
| 
 | ||||
|     bookmark = Bookmark.find_by!(account: current_user.account, status: @status) | ||||
|     bookmark.destroy! | ||||
| 
 | ||||
|     render json: @status, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_user&.account_id, bookmarks_map: @bookmarks_map) | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def bookmarked_status | ||||
|     authorize_with current_user.account, requested_status, :show? | ||||
| 
 | ||||
|     bookmark = Bookmark.find_or_create_by!(account: current_user.account, status: requested_status) | ||||
| 
 | ||||
|     bookmark.status.reload | ||||
|   end | ||||
| 
 | ||||
|   def requested_status | ||||
|     Status.find(params[:status_id]) | ||||
|   end | ||||
| end | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue