Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PWN-8127] Share button on swap screen #1644

Merged
merged 3 commits into from
Jan 23, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 29 additions & 4 deletions p2p_wallet/Scenes/Main/Swap/Swap/JupiterSwapCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -51,6 +52,7 @@ final class JupiterSwapCoordinator: Coordinator<Void> {
private var viewModel: SwapViewModel!

private var swapSettingBarButton: UIBarButtonItem!
private var shareBarButton: UIBarButtonItem!

init(navigationController: UINavigationController, params: JupiterSwapParameters) {
self.navigationController = navigationController
Expand Down Expand Up @@ -135,12 +137,21 @@ final class JupiterSwapCoordinator: Coordinator<Void> {
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
Expand All @@ -152,11 +163,13 @@ final class JupiterSwapCoordinator: Coordinator<Void> {
}
}
.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)
Expand All @@ -171,6 +184,18 @@ final class JupiterSwapCoordinator: Coordinator<Void> {
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(
Expand Down
Loading