| 
									
										
										
										
											2020-01-23 21:00:13 +00:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PublishScheduledAnnouncementWorker | 
					
						
							|  |  |  |   include Sidekiq::Worker | 
					
						
							|  |  |  |   include Redisable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def perform(announcement_id) | 
					
						
							| 
									
										
										
										
											2020-04-05 10:51:22 +00:00
										 |  |  |     @announcement = Announcement.find(announcement_id) | 
					
						
							| 
									
										
										
										
											2020-01-26 21:43:18 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-05 10:51:22 +00:00
										 |  |  |     refresh_status_ids! | 
					
						
							| 
									
										
										
										
											2020-01-23 21:00:13 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-05 10:51:22 +00:00
										 |  |  |     @announcement.publish! unless @announcement.published? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     payload = InlineRenderer.render(@announcement, nil, :announcement) | 
					
						
							| 
									
										
										
										
											2020-01-23 21:00:13 +00:00
										 |  |  |     payload = Oj.dump(event: :announcement, payload: payload) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-26 19:07:26 +00:00
										 |  |  |     FeedManager.instance.with_active_accounts do |account| | 
					
						
							| 
									
										
										
										
											2020-07-01 17:05:21 +00:00
										 |  |  |       redis.publish("timeline:#{account.id}", payload) if redis.exists?("subscribed:timeline:#{account.id}") | 
					
						
							| 
									
										
										
										
											2020-01-23 21:00:13 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2020-04-05 10:51:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def refresh_status_ids! | 
					
						
							|  |  |  |     @announcement.status_ids = Status.from_text(@announcement.text).map(&:id) | 
					
						
							|  |  |  |     @announcement.save | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2020-01-23 21:00:13 +00:00
										 |  |  | end |