| 
									
										
										
										
											2017-07-07 04:02:06 +02:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class StatusRelationshipsPresenter | 
					
						
							| 
									
										
										
										
											2017-08-25 01:41:18 +02:00
										 |  |  |   attr_reader :reblogs_map, :favourites_map, :mutes_map, :pins_map | 
					
						
							| 
									
										
										
										
											2017-07-07 04:02:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-25 01:41:18 +02:00
										 |  |  |   def initialize(statuses, current_account_id = nil, options = {}) | 
					
						
							| 
									
										
										
										
											2017-07-07 04:02:06 +02:00
										 |  |  |     if current_account_id.nil? | 
					
						
							|  |  |  |       @reblogs_map    = {} | 
					
						
							|  |  |  |       @favourites_map = {} | 
					
						
							|  |  |  |       @mutes_map      = {} | 
					
						
							| 
									
										
										
										
											2017-08-25 01:41:18 +02:00
										 |  |  |       @pins_map       = {} | 
					
						
							| 
									
										
										
										
											2017-07-07 04:02:06 +02:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2017-08-25 01:41:18 +02:00
										 |  |  |       statuses            = statuses.compact | 
					
						
							| 
									
										
										
										
											2017-09-23 23:18:32 -10:00
										 |  |  |       status_ids          = statuses.flat_map { |s| [s.id, s.reblog_of_id] }.uniq.compact | 
					
						
							| 
									
										
										
										
											2017-08-25 01:41:18 +02:00
										 |  |  |       conversation_ids    = statuses.map(&:conversation_id).compact.uniq | 
					
						
							|  |  |  |       pinnable_status_ids = statuses.map(&:proper).select { |s| s.account_id == current_account_id && %w(public unlisted).include?(s.visibility) }.map(&:id) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       @reblogs_map     = Status.reblogs_map(status_ids, current_account_id).merge(options[:reblogs_map] || {}) | 
					
						
							|  |  |  |       @favourites_map  = Status.favourites_map(status_ids, current_account_id).merge(options[:favourites_map] || {}) | 
					
						
							|  |  |  |       @mutes_map       = Status.mutes_map(conversation_ids, current_account_id).merge(options[:mutes_map] || {}) | 
					
						
							|  |  |  |       @pins_map        = Status.pins_map(pinnable_status_ids, current_account_id).merge(options[:pins_map] || {}) | 
					
						
							| 
									
										
										
										
											2017-07-07 04:02:06 +02:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |