mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Swift
		
	
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
 | 
						|
 | 
						|
import Foundation
 | 
						|
import SessionUtilitiesKit
 | 
						|
import SessionMessagingKit
 | 
						|
import SignalCoreKit
 | 
						|
 | 
						|
public struct SessionApp {
 | 
						|
    static let homeViewController: Atomic<HomeVC?> = Atomic(nil)
 | 
						|
    
 | 
						|
    // MARK: - View Convenience Methods
 | 
						|
    
 | 
						|
    public static func presentConversation(for threadId: String, action: ConversationViewModel.Action = .none, animated: Bool) {
 | 
						|
        let maybeThreadInfo: (thread: SessionThread, isMessageRequest: Bool)? = Storage.shared.write { db in
 | 
						|
            let thread: SessionThread = try SessionThread.fetchOrCreate(db, id: threadId, variant: .contact)
 | 
						|
            
 | 
						|
            return (thread, thread.isMessageRequest(db))
 | 
						|
        }
 | 
						|
        
 | 
						|
        guard
 | 
						|
            let variant: SessionThread.Variant = maybeThreadInfo?.thread.variant,
 | 
						|
            let isMessageRequest: Bool = maybeThreadInfo?.isMessageRequest
 | 
						|
        else { return }
 | 
						|
        
 | 
						|
        self.presentConversation(
 | 
						|
            for: threadId,
 | 
						|
            threadVariant: variant,
 | 
						|
            isMessageRequest: isMessageRequest,
 | 
						|
            action: action,
 | 
						|
            focusInteractionId: nil,
 | 
						|
            animated: animated
 | 
						|
        )
 | 
						|
    }
 | 
						|
    
 | 
						|
    public static func presentConversation(
 | 
						|
        for threadId: String,
 | 
						|
        threadVariant: SessionThread.Variant,
 | 
						|
        isMessageRequest: Bool,
 | 
						|
        action: ConversationViewModel.Action,
 | 
						|
        focusInteractionId: Int64?,
 | 
						|
        animated: Bool
 | 
						|
    ) {
 | 
						|
        guard Thread.isMainThread else {
 | 
						|
            DispatchQueue.main.async {
 | 
						|
                self.presentConversation(
 | 
						|
                    for: threadId,
 | 
						|
                    threadVariant: threadVariant,
 | 
						|
                    isMessageRequest: isMessageRequest,
 | 
						|
                    action: action,
 | 
						|
                    focusInteractionId: focusInteractionId,
 | 
						|
                    animated: animated
 | 
						|
                )
 | 
						|
            }
 | 
						|
            return
 | 
						|
        }
 | 
						|
        
 | 
						|
        homeViewController.wrappedValue?.show(
 | 
						|
            threadId,
 | 
						|
            variant: threadVariant,
 | 
						|
            isMessageRequest: isMessageRequest,
 | 
						|
            with: action,
 | 
						|
            focusedInteractionId: focusInteractionId,
 | 
						|
            animated: animated
 | 
						|
        )
 | 
						|
    }
 | 
						|
 | 
						|
    // MARK: - Functions
 | 
						|
    
 | 
						|
    public static func resetAppData(onReset: (() -> ())? = nil) {
 | 
						|
        // This _should_ be wiped out below.
 | 
						|
        Logger.error("")
 | 
						|
        DDLog.flushLog()
 | 
						|
 | 
						|
        Storage.resetAllStorage()
 | 
						|
        ProfileManager.resetProfileStorage()
 | 
						|
        Attachment.resetAttachmentStorage()
 | 
						|
        AppEnvironment.shared.notificationPresenter.clearAllNotifications()
 | 
						|
 | 
						|
        onReset?()
 | 
						|
        exit(0)
 | 
						|
    }
 | 
						|
    
 | 
						|
    public static func showHomeView() {
 | 
						|
        guard Thread.isMainThread else {
 | 
						|
            DispatchQueue.main.async {
 | 
						|
                self.showHomeView()
 | 
						|
            }
 | 
						|
            return
 | 
						|
        }
 | 
						|
        
 | 
						|
        let homeViewController: HomeVC = HomeVC()
 | 
						|
        let navController: UINavigationController = StyledNavigationController(rootViewController: homeViewController)
 | 
						|
        (UIApplication.shared.delegate as? AppDelegate)?.window?.rootViewController = navController
 | 
						|
    }
 | 
						|
}
 |