| 
						
						
						
					 | 
					 | 
					@ -1,7 +1,6 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// TODO
 | 
					 | 
					 | 
					 | 
					// TODO
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// • Tapping replies
 | 
					 | 
					 | 
					 | 
					// • Tapping replies
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// • Initial scroll position
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// • Moderator icons
 | 
					 | 
					 | 
					 | 
					// • Moderator icons
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// • Slight paging glitch
 | 
					 | 
					 | 
					 | 
					// • Slight paging glitch
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// • Image detail VC transition glitch
 | 
					 | 
					 | 
					 | 
					// • Image detail VC transition glitch
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -27,7 +26,7 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, UITableViewD
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    var mentions: [Mention] = []
 | 
					 | 
					 | 
					 | 
					    var mentions: [Mention] = []
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // Scrolling & paging
 | 
					 | 
					 | 
					 | 
					    // Scrolling & paging
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private var isUserScrolling = false
 | 
					 | 
					 | 
					 | 
					    private var isUserScrolling = false
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private var hasPerformedInitialScroll = false
 | 
					 | 
					 | 
					 | 
					    private var didFinishInitialLayout = false
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private var isLoadingMore = false
 | 
					 | 
					 | 
					 | 
					    private var isLoadingMore = false
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private var scrollDistanceToBottomBeforeUpdate: CGFloat?
 | 
					 | 
					 | 
					 | 
					    private var scrollDistanceToBottomBeforeUpdate: CGFloat?
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -132,14 +131,16 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, UITableViewD
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    
 | 
					 | 
					 | 
					 | 
					    
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    override func viewDidLayoutSubviews() {
 | 
					 | 
					 | 
					 | 
					    override func viewDidLayoutSubviews() {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        super.viewDidLayoutSubviews()
 | 
					 | 
					 | 
					 | 
					        super.viewDidLayoutSubviews()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if !hasPerformedInitialScroll {
 | 
					 | 
					 | 
					 | 
					        if !didFinishInitialLayout {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            scrollToBottom(isAnimated: false)
 | 
					 | 
					 | 
					 | 
					            DispatchQueue.main.async {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            hasPerformedInitialScroll = true
 | 
					 | 
					 | 
					 | 
					                self.scrollToBottom(isAnimated: false)
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        }
 | 
					 | 
					 | 
					 | 
					        }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    
 | 
					 | 
					 | 
					 | 
					    
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    override func viewDidAppear(_ animated: Bool) {
 | 
					 | 
					 | 
					 | 
					    override func viewDidAppear(_ animated: Bool) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        super.viewDidAppear(animated)
 | 
					 | 
					 | 
					 | 
					        super.viewDidAppear(animated)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        didFinishInitialLayout = true
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        markAllAsRead()
 | 
					 | 
					 | 
					 | 
					        markAllAsRead()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    
 | 
					 | 
					 | 
					 | 
					    
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |