Skip to content

Commit

Permalink
adding void signer alerts
Browse files Browse the repository at this point in the history
  • Loading branch information
web3d3v committed Jan 4, 2024
1 parent a30329f commit 62912c0
Show file tree
Hide file tree
Showing 31 changed files with 239 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ extension DefaultAccountWireframe: AccountWireframe {
}
extension AccountViewController: AccountView {
func update(viewModel: AccountViewModel) { update(with: viewModel) }
func presentAlert(viewModel: AlertViewModel) { presentAlert(with: viewModel) }
}
extension AccountPresenter {
func handleEvent(_ event: AccountPresenterEvent) { handle(event____: event) }
Expand Down Expand Up @@ -110,6 +111,7 @@ extension DefaultDashboardWireframe: DashboardWireframe {
}
extension DashboardViewController: DashboardView {
func update(viewModel__________ viewModel: DashboardViewModel) { update(with: viewModel) }
func presentAlert(viewModel: AlertViewModel) { presentAlert(with: viewModel) }
}
extension DashboardPresenter {
func handleEvent(_ event: DashboardPresenterEvent) { handle(event________________: event) }
Expand All @@ -133,6 +135,8 @@ extension DefaultCultProposalsWireframe: CultProposalsWireframe {
}
extension CultProposalsViewController: CultProposalsView {
func update(viewModel_____________ viewModel: CultProposalsViewModel) { update(with: viewModel) }
func presentAlert(viewModel: AlertViewModel) { presentAlert(with: viewModel) }
func presentToast(viewModel: ToastViewModel) { presentToast(viewModel: viewModel) }
}
extension CultProposalsPresenter {
func handleEvent(_ event: CultProposalsPresenterEvent) { handle(event___________________: event) }
Expand All @@ -144,6 +148,8 @@ extension DefaultDegenWireframe: DegenWireframe {
}
extension DegenViewController: DegenView {
func update(viewModel___________ viewModel: DegenViewModel) { update(with: viewModel) }
func presentAlert(viewModel: AlertViewModel) { presentAlert(with: viewModel) }
func presentToast(viewModel: ToastViewModel) { presentToast(viewModel: viewModel) }
}
extension DegenPresenter {
func handleEvent(_ event: DegenPresenterEvent) { handle(event_________________: event) }
Expand Down Expand Up @@ -271,6 +277,7 @@ extension DefaultNFTDetailWireframe: NFTDetailWireframe {
}
extension NFTDetailViewController: NFTDetailView {
func update(viewModel__________________ viewModel: NFTDetailViewModel) { update(with: viewModel)}
func presentAlert(viewModel: AlertViewModel) { presentAlert(with: viewModel) }
}
extension NFTDetailPresenter {
func handleEvent(_ event: NFTDetailPresenterEvent) { handle(event____________________________: event) }
Expand Down
2 changes: 2 additions & 0 deletions iosApp/iosApp/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@
"dashboard.button.swap" = "Swap";
"dashboard.section.nfts" = "NFTs";
"dashboard.section.Notifications" = "Notifications";
"voidSigner.alert.title" = "Void Signer Selected";
"voidSigner.alert.body" = "Currently selected wallet is VIEW ONLY, can not sign or send transactions";

"degen.dappCategory.title.swap" = "Swap";
"degen.dappCategory.title.cult" = "Cult.DAO";
Expand Down
5 changes: 5 additions & 0 deletions iosApp/iosApp/Modules/Account/AccountView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ extension AccountViewController {
? Theme.color.priceUp
: Theme.color.priceDown
}

func presentAlert(with viewModel: AlertViewModel) {
let vc = AlertController(viewModel, handler: { _, _ in () })
present(vc, animated: true)
}
}

extension AccountViewController: UICollectionViewDataSource {
Expand Down
9 changes: 9 additions & 0 deletions iosApp/iosApp/Modules/Dashboard/DashboardView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,15 @@ extension DashboardViewController {
(cell as? DashboardNFTCell)?.update(with: input.data[idx])
}
}

func presentAlert(with viewModel: AlertViewModel) {
let vc = AlertController(viewModel, handler: { _, _ in () })
present(vc, animated: true)
}

func presentToast(with viewModel: ToastViewModel) {
navigationController?.asNavVc?.toast(viewModel)
}
}

// MARK: - UICollectionViewDataSource
Expand Down
5 changes: 5 additions & 0 deletions iosApp/iosApp/Modules/Degen/DegenView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ final class DegenViewController: BaseViewController {
collectionView.contentInset.bottom = Theme.padding.twice
}

func presentAlert(with viewModel: AlertViewModel) {
let vc = AlertController(viewModel, handler: { _, _ in () })
present(vc, animated: true)
}

deinit {
presenter.releaseResources()
}
Expand Down
8 changes: 6 additions & 2 deletions iosApp/iosApp/Modules/Degen/DegenWireframe.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ final class DefaultDegenWireframe {
private let alertWireframeFactory: AlertWireframeFactory
private let degenService: DegenService
private let networksService: NetworksService
private let walletService: WalletService

private weak var vc: UIViewController?

Expand All @@ -21,7 +22,8 @@ final class DefaultDegenWireframe {
cultProposalsWireframeFactory: CultProposalsWireframeFactory,
alertWireframeFactory: AlertWireframeFactory,
degenService: DegenService,
networksService: NetworksService
networksService: NetworksService,
walletService: WalletService
) {

self.parent = parent
Expand All @@ -30,6 +32,7 @@ final class DefaultDegenWireframe {
self.alertWireframeFactory = alertWireframeFactory
self.degenService = degenService
self.networksService = networksService
self.walletService = walletService
}
}

Expand Down Expand Up @@ -67,7 +70,8 @@ private extension DefaultDegenWireframe {
func wireUp() -> UIViewController {
let interactor = DefaultDegenInteractor(
degenService: degenService,
networksService: networksService
networksService: networksService,
walletService: walletService
)
let vc: DegenViewController = UIStoryboard(.degen).instantiate()
let presenter = DefaultDegenPresenter(
Expand Down
11 changes: 8 additions & 3 deletions iosApp/iosApp/Modules/Degen/DegenWireframeFactory.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,22 @@ final class DefaultDegenWireframeFactory {
private let alertWireframeFactory: AlertWireframeFactory
private let degenService: DegenService
private let networksService: NetworksService
private let walletService: WalletService

init(
currencySwapWireframeFactory: CurrencySwapWireframeFactory,
cultProposalsWireframeFactory: CultProposalsWireframeFactory,
alertWireframeFactory: AlertWireframeFactory,
degenService: DegenService,
networksService: NetworksService
networksService: NetworksService,
walletService: WalletService
) {
self.currencySwapWireframeFactory = currencySwapWireframeFactory
self.cultProposalsWireframeFactory = cultProposalsWireframeFactory
self.alertWireframeFactory = alertWireframeFactory
self.degenService = degenService
self.networksService = networksService
self.walletService = walletService
}
}

Expand All @@ -44,7 +47,8 @@ extension DefaultDegenWireframeFactory: DegenWireframeFactory {
cultProposalsWireframeFactory: cultProposalsWireframeFactory,
alertWireframeFactory: alertWireframeFactory,
degenService: degenService,
networksService: networksService
networksService: networksService,
walletService: walletService
)
}
}
Expand All @@ -60,7 +64,8 @@ final class DegenWireframeFactoryAssembler: AssemblerComponent {
cultProposalsWireframeFactory: resolver.resolve(),
alertWireframeFactory: resolver.resolve(),
degenService: resolver.resolve(),
networksService: resolver.resolve()
networksService: resolver.resolve(),
walletService: resolver.resolve()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,15 @@ extension CultProposalsViewController {
refreshControl.endRefreshing()
}
}

func presentAlert(with viewModel: AlertViewModel) {
let vc = AlertController(viewModel, handler: { _, _ in () })
present(vc, animated: true)
}

func presentToast(with viewModel: ToastViewModel) {
navigationController?.asNavVc?.toast(viewModel)
}
}

extension CultProposalsViewController: UICollectionViewDataSource {
Expand Down
5 changes: 5 additions & 0 deletions iosApp/iosApp/Modules/NFTDetail/NFTDetailView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ final class NFTDetailViewController: UICollectionViewController, ButtonSheetCont
collectionView.reloadData()
}

func presentAlert(with viewModel: AlertViewModel) {
let vc = AlertController(viewModel, handler: { _, _ in () })
present(vc, animated: true)
}

// MARK: - UICollectionViewDataSource

override func numberOfSections(in collectionView: UICollectionView) -> Int {
Expand Down
8 changes: 7 additions & 1 deletion iosApp/iosApp/Modules/NFTDetail/NFTDetailWireframe.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ final class DefaultNFTDetailWireframe {
private let nftSendWireframeFactory: NFTSendWireframeFactory
private let alertWireframeFactory: AlertWireframeFactory
private let nftsService: NFTsService
private let walletService: WalletService
private let networksService: NetworksService

private weak var vc: UIViewController?
Expand All @@ -21,13 +22,15 @@ final class DefaultNFTDetailWireframe {
nftSendWireframeFactory: NFTSendWireframeFactory,
alertWireframeFactory: AlertWireframeFactory,
nftsService: NFTsService,
walletService: WalletService,
networksService: NetworksService
) {
self.parent = parent
self.context = context
self.nftSendWireframeFactory = nftSendWireframeFactory
self.alertWireframeFactory = alertWireframeFactory
self.nftsService = nftsService
self.walletService = walletService
self.networksService = networksService
}
}
Expand Down Expand Up @@ -55,7 +58,10 @@ private extension DefaultNFTDetailWireframe {

func wireUp() -> UIViewController {
let vc: NFTDetailViewController = UIStoryboard(.main).instantiate()
let interactor = DefaultNFTDetailInteractor(nftService: nftsService)
let interactor = DefaultNFTDetailInteractor(
nftService: nftsService,
walletService: walletService
)
let presenter = DefaultNFTDetailPresenter(
view: WeakRef(referred: vc),
wireframe: self,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,20 @@ final class DefaultNFTDetailWireframeFactory {
private let nftSendWireframeFactory: NFTSendWireframeFactory
private let alertWireframeFactory: AlertWireframeFactory
private let nftsService: NFTsService
private let walletService: WalletService
private let networksService: NetworksService

init(
nftSendWireframeFactory: NFTSendWireframeFactory,
alertWireframeFactory: AlertWireframeFactory,
nftsService: NFTsService,
walletService: WalletService,
networksService: NetworksService
) {
self.nftSendWireframeFactory = nftSendWireframeFactory
self.alertWireframeFactory = alertWireframeFactory
self.nftsService = nftsService
self.walletService = walletService
self.networksService = networksService
}
}
Expand All @@ -43,6 +46,7 @@ extension DefaultNFTDetailWireframeFactory: NFTDetailWireframeFactory {
nftSendWireframeFactory: nftSendWireframeFactory,
alertWireframeFactory: alertWireframeFactory,
nftsService: nftsService,
walletService: walletService,
networksService: networksService
)
}
Expand All @@ -58,6 +62,7 @@ final class NFTDetailWireframeFactoryAssembler: AssemblerComponent {
nftSendWireframeFactory: resolver.resolve(),
alertWireframeFactory: resolver.resolve(),
nftsService: resolver.resolve(),
walletService: resolver.resolve(),
networksService: resolver.resolve()
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,7 @@ class DefaultCurrencyStoreService(
coinGeckoService.market(ids, "usd", 0, "24h").forEach {
resultMap.put(it.id, it.toCurrencyMarketData())
}
} catch (err: Throwable) {
println("[ERROR] $err")
}
} catch (err: Throwable) { }
withContext(uiDispatcher) {
resultMap.forEach {
markets.put(it.key, it.value)
Expand All @@ -137,7 +135,6 @@ class DefaultCurrencyStoreService(
}
return@withContext result
} catch (err: Throwable) {
println("[ERROR] $err")
return@withContext null
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ interface WalletService {

/** Selected signer name */
fun selectedSignerName(): String?
/** Selected signer void signer (can sign transactions) */
fun isSelectedVoidSigner(): Boolean
/** Address for network */
fun address(network: Network): AddressHexString?
/** Last known balance number for network connected to wallet */
Expand Down Expand Up @@ -171,6 +173,10 @@ class DefaultWalletService(
override fun selectedSignerName(): String? =
selectedNetwork()?.let { networkService.wallet(it)?.signerName() }

override fun isSelectedVoidSigner(): Boolean =
selectedNetwork()?.let { networkService.wallet(it)?.isVoidSigner() }
?: true

override fun address(network: Network): AddressHexString? {
return networkService.wallet(network)?.address()?.toHexString()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ class DefaultWalletServiceMulticall(
return networkService.wallet(network)?.address()?.toHexString()
}

override fun isSelectedVoidSigner(): Boolean =
selectedNetwork()?.let { networkService.wallet(it)?.isVoidSigner() }
?: true

override fun balance(network: Network, currency: Currency): BigInt {
networksState[balanceKey(network, currency)]?.let { return it }
networksStateCache.get<String>(balanceKey(network, currency))?.let {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ interface SignerIntf {
fun address(): Address
/** Name of the signer */
fun signerName(): String?
/** Is void signer (can sign transaction) */
fun isVoidSigner(): Boolean

/** Signed prefixed-message. Bytes or encoded string as a UTF8-message */
suspend fun signMessage(message: ByteArray): ByteArray
Expand Down Expand Up @@ -154,6 +156,9 @@ class Wallet(
override fun signerName(): String =
signerStoreItem.name

override fun isVoidSigner(): Boolean =
signerStoreItem.type == SignerStoreItem.Type.VIEW_ONLY

override suspend fun signMessage(message: ByteArray): ByteArray {
TODO("Not yet implemented")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ interface AccountInteractor {
fun transactions(network: Network, currency: Currency): List<AccountTransaction>
@Throws(Throwable::class)
suspend fun fetchTransactions(network: Network, currency: Currency)
fun isVoidSigner(): Boolean
}

class DefaultAccountInteractor(
Expand Down Expand Up @@ -96,6 +97,9 @@ class DefaultAccountInteractor(
etherScanService.fetchTransactionHistory(address(network), network)
}
}

override fun isVoidSigner(): Boolean =
walletService.isSelectedVoidSigner()
}

private val Network.isEthereum: Boolean get() = chainId == Network.ethereum().chainId
Expand Down
Loading

0 comments on commit 62912c0

Please sign in to comment.