From 55a3ed095487a0677259ff5dde38eaddfec123c0 Mon Sep 17 00:00:00 2001
From: Bruno Muniz Azevedo Filho <bruno@elixxir.io>
Date: Fri, 29 Jul 2022 18:54:11 -0300
Subject: [PATCH] Added deeplink using router

---
 Sources/App/AppDelegate.swift                | 8 ++++++--
 Sources/App/DependencyRegistrator.swift      | 5 +++++
 Sources/LaunchFeature/LaunchController.swift | 3 +++
 Sources/PushFeature/PushRouter.swift         | 1 +
 4 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/Sources/App/AppDelegate.swift b/Sources/App/AppDelegate.swift
index b20f3d6c..52b3626b 100644
--- a/Sources/App/AppDelegate.swift
+++ b/Sources/App/AppDelegate.swift
@@ -143,8 +143,12 @@ public class AppDelegate: UIResponder, UIApplicationDelegate {
         open url: URL,
         options: [UIApplication.OpenURLOptionsKey : Any] = [:]
     ) -> Bool {
-        if let invitationUsername = getUsernameFromInvitationDeepLink(url) {
-            self.invitation = invitationUsername
+        if let username = getUsernameFromInvitationDeepLink(url),
+           let _ = try? DependencyInjection.Container.shared.resolve() as SessionType,
+           let router = try? DependencyInjection.Container.shared.resolve() as PushRouter {
+            invitation = username
+            router.navigateTo(.search, {})
+
             return true
         } else {
             return dropboxService.handleOpenUrl(url)
diff --git a/Sources/App/DependencyRegistrator.swift b/Sources/App/DependencyRegistrator.swift
index 7c4d70a9..297f9231 100644
--- a/Sources/App/DependencyRegistrator.swift
+++ b/Sources/App/DependencyRegistrator.swift
@@ -259,6 +259,11 @@ extension PushRouter {
                 launchController.pendingPushRoute = route
             } else {
                 switch route {
+                case .search:
+                    if (navigationController.viewControllers.last as? SearchContainerController) == nil {
+                        navigationController.setViewControllers([SearchContainerController()], animated: true)
+                    }
+
                 case .requests:
                     if (navigationController.viewControllers.last as? RequestsContainerController) == nil {
                         navigationController.setViewControllers([RequestsContainerController()], animated: true)
diff --git a/Sources/LaunchFeature/LaunchController.swift b/Sources/LaunchFeature/LaunchController.swift
index 9eeeb763..0a6a1c65 100644
--- a/Sources/LaunchFeature/LaunchController.swift
+++ b/Sources/LaunchFeature/LaunchController.swift
@@ -54,6 +54,9 @@ public final class LaunchController: UIViewController {
                 case .chats:
                     if let pushRoute = pendingPushRoute {
                         switch pushRoute {
+                        case .search:
+                            coordinator.toSearch(from: self)
+
                         case .requests:
                             coordinator.toRequests(from: self)
 
diff --git a/Sources/PushFeature/PushRouter.swift b/Sources/PushFeature/PushRouter.swift
index 6fc66797..51af8a80 100644
--- a/Sources/PushFeature/PushRouter.swift
+++ b/Sources/PushFeature/PushRouter.swift
@@ -4,6 +4,7 @@ public struct PushRouter {
     public typealias NavigateTo = (Route, @escaping () -> Void) -> Void
 
     public enum Route {
+        case search
         case requests
         case groupChat(id: Data)
         case contactChat(id: Data)
-- 
GitLab