From a48514b3471767b4145f3e8b057f708296def4b2 Mon Sep 17 00:00:00 2001 From: Tran Giang Long Date: Thu, 18 Jan 2024 16:57:37 +0700 Subject: [PATCH 1/3] feat(swap): share button --- .../Swap/Swap/JupiterSwapCoordinator.swift | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift b/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift index 4fcad4c88b..9d095aeb80 100644 --- a/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift +++ b/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift @@ -3,6 +3,7 @@ import KeyAppKitCore import Resolver import SolanaSwift import SwiftUI +import UIKit enum JupiterSwapSource: String { case actionPanel = "Action_Panel", tapMain = "Tap_Main", tapToken = "Tap_Token", solend = "Solend", @@ -51,6 +52,7 @@ final class JupiterSwapCoordinator: Coordinator { private var viewModel: SwapViewModel! private var swapSettingBarButton: UIBarButtonItem! + private var shareBarButton: UIBarButtonItem! init(navigationController: UINavigationController, params: JupiterSwapParameters) { self.navigationController = navigationController @@ -135,12 +137,21 @@ final class JupiterSwapCoordinator: Coordinator { func style(controller: UIViewController) { controller.title = L10n.swap controller.navigationItem.largeTitleDisplayMode = .never + swapSettingBarButton = UIBarButtonItem( image: .init(resource: .receipt), style: .plain, target: self, action: #selector(receiptButtonPressed) ) + + shareBarButton = UIBarButtonItem( + image: UIImage(named: "share-1"), + style: .plain, + target: self, + action: #selector(shareButtonPressed) + ) + // show rightBarButtonItem only on successful loading viewModel.$viewState .map { state -> Bool in @@ -152,11 +163,13 @@ final class JupiterSwapCoordinator: Coordinator { } } .removeDuplicates() - .sink { [weak controller, weak swapSettingBarButton] show in + .sink { [weak controller, weak swapSettingBarButton, weak shareBarButton] show in + guard let swapSettingBarButton, let shareBarButton else { return } + if !show { - controller?.navigationItem.rightBarButtonItem = nil - } else if controller?.navigationItem.rightBarButtonItem == nil { - controller?.navigationItem.rightBarButtonItem = swapSettingBarButton + controller?.navigationItem.rightBarButtonItems = [shareBarButton] + } else if controller?.navigationItem.rightBarButtonItems == nil { + controller?.navigationItem.rightBarButtonItems = [swapSettingBarButton, shareBarButton] } } .store(in: &subscriptions) @@ -171,6 +184,18 @@ final class JupiterSwapCoordinator: Coordinator { openSwapSettings() } + @objc private func shareButtonPressed() { + UIApplication.shared.endEditing() + + let from = viewModel.currentState.fromToken.mintAddress + let to = viewModel.currentState.toToken.mintAddress + + let items = ["https://s.key.app/swap?from=\(from)&to=\(to)"] + let activityVC = UIActivityViewController(activityItems: items, applicationActivities: nil) + + navigationController.present(activityVC, animated: true) + } + private func openChooseToken(fromToken: Bool) { viewModel.continueUpdateOnDisappear = true coordinate(to: ChooseSwapTokenCoordinator( From 9c437ed42a721e8e73f9892e44c79022227412bc Mon Sep 17 00:00:00 2001 From: Tran Giang Long Date: Thu, 18 Jan 2024 17:04:56 +0700 Subject: [PATCH 2/3] fix(swap): missing settings button --- p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift b/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift index 9d095aeb80..64e36ad86b 100644 --- a/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift +++ b/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift @@ -168,7 +168,7 @@ final class JupiterSwapCoordinator: Coordinator { if !show { controller?.navigationItem.rightBarButtonItems = [shareBarButton] - } else if controller?.navigationItem.rightBarButtonItems == nil { + } else { controller?.navigationItem.rightBarButtonItems = [swapSettingBarButton, shareBarButton] } } From 9ece9bc0b0530c30b2761cd2801a011648ee4136 Mon Sep 17 00:00:00 2001 From: Tran Giang Long Date: Thu, 18 Jan 2024 17:26:40 +0700 Subject: [PATCH 3/3] fix(swap): buttons spacing --- .../Swap/Swap/JupiterSwapCoordinator.swift | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift b/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift index 64e36ad86b..d636d756e3 100644 --- a/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift +++ b/p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift @@ -145,12 +145,12 @@ final class JupiterSwapCoordinator: Coordinator { action: #selector(receiptButtonPressed) ) - shareBarButton = UIBarButtonItem( - image: UIImage(named: "share-1"), - style: .plain, - target: self, - action: #selector(shareButtonPressed) - ) + let shareButton = UIButton(type: .system) + .setTarget(target: self, action: #selector(shareButtonPressed), for: .touchUpInside) + shareButton.setImage(UIImage(named: "share-1"), for: .normal) + shareButton.setTitleColor(.gray, for: .highlighted) + + shareBarButton = UIBarButtonItem(customView: shareButton) // show rightBarButtonItem only on successful loading viewModel.$viewState @@ -186,13 +186,13 @@ final class JupiterSwapCoordinator: Coordinator { @objc private func shareButtonPressed() { UIApplication.shared.endEditing() - + let from = viewModel.currentState.fromToken.mintAddress let to = viewModel.currentState.toToken.mintAddress - + let items = ["https://s.key.app/swap?from=\(from)&to=\(to)"] let activityVC = UIActivityViewController(activityItems: items, applicationActivities: nil) - + navigationController.present(activityVC, animated: true) }