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-8361] Swiftlint #1282

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
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
1 change: 1 addition & 0 deletions Packages/KeyAppKit/Sources/History/EmptyStreamSource.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
//

import Foundation
import SolanaSwift

public class EmptyStreamSource: HistoryStreamSource {
public init() {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
//

import Foundation
import SolanaSwift

/// The class that merges many sources into one and represents as single stream of sequential transactions.
///
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ public final class SolanaAccountsService: NSObject, AccountsService {
public var statePublisher: AnyPublisher<AsyncValueState<[Account]>, Never> { stateSubject.eraseToAnyPublisher() }

public var state: AsyncValueState<[Account]> { stateSubject.value }

public var wallets: [Wallet] {
state.value.map(\.data)
}

public var nativeWallet: Wallet? { accounts.state.value.nativeAccount?.data }

public init(
accountStorage: SolanaAccountStorage,
Expand Down Expand Up @@ -170,8 +176,8 @@ public final class SolanaAccountsService: NSObject, AccountsService {

public extension Array where Element == SolanaAccountsService.Account {
/// Helper method for quickly extraction native account.
var nativeWallet: Element? {
first(where: { $0.data.isNativeSOL })
var nativeAccount: Element? {
first { $0.data.isNativeSOL }
}

var totalAmountInCurrentFiat: Double {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ extension Moonpay {
}

public func getCountries() async throws -> [MoonpayCountry] {
var components = URLComponents(string: api.endpoint + "v3/countries")!
let components = URLComponents(string: api.endpoint + "v3/countries")!
var urlRequest = URLRequest(url: components.url!)
urlRequest.httpMethod = "GET"
let (data, _) = try await URLSession.shared.data(from: urlRequest)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public enum BindingPhoneNumberState: Codable, State, Equatable {
)
}

let account = try await Account(
let account = try await KeyPair(
phrase: data.seedPhrase.components(separatedBy: " "),
network: .mainnetBeta,
derivablePath: .default
Expand Down Expand Up @@ -142,7 +142,7 @@ public enum BindingPhoneNumberState: Codable, State, Equatable {
case let .enterOTP(resendCounter, channel, phoneNumber, data):
switch event {
case let .enterOTP(opt):
let account = try await Account(
let account = try await KeyPair(
phrase: data.seedPhrase.components(separatedBy: " "),
network: .mainnetBeta,
derivablePath: .default
Expand Down Expand Up @@ -184,7 +184,7 @@ public enum BindingPhoneNumberState: Codable, State, Equatable {

return .finish(.success(metadata: metaData))
case .resendOTP:
let account = try await Account(
let account = try await KeyPair(
phrase: data.seedPhrase.components(separatedBy: " "),
network: .mainnetBeta,
derivablePath: .default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ enum ThrottleState: Codable, State, Equatable {
} else {
throw ThrottleError.overheating(until: until)
}
default:
throw StateMachineError.invalidEvent
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public struct ICloudAccount: Codable, Hashable {
self.phrase = phrase
self.derivablePath = derivablePath

let account = try await Account(
let account = try await KeyPair(
phrase: phrase.components(separatedBy: " "),
network: .mainnetBeta,
derivablePath: derivablePath
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ public enum RestoreICloudState: Codable, State, Equatable {
}
return .chooseWallet(accounts: accounts)

case let .restoreRawWallet(name, phrase, derivablePath):
case let .restoreRawWallet(_, phrase, derivablePath):
return .finish(result: .successful(phrase: phrase, derivablePath: derivablePath))

default:
throw StateMachineError.invalidEvent
}

case let .chooseWallet(accounts):
case .chooseWallet:
switch event {
case let .restoreWallet(icloudAccount):
return .finish(result: .successful(
Expand All @@ -71,13 +71,13 @@ public enum RestoreICloudState: Codable, State, Equatable {
default:
throw StateMachineError.invalidEvent
}
case let .finish(result):
case .finish:
throw StateMachineError.invalidEvent
}
}

private func account(from icloudAccount: ICloudAccount) async throws -> Account {
let account = try await Account(
private func account(from icloudAccount: ICloudAccount) async throws -> KeyPair {
let account = try await KeyPair(
phrase: icloudAccount.phrase.components(separatedBy: " "),
network: .mainnetBeta,
derivablePath: icloudAccount.derivablePath
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public enum RestoreSeedState: Codable, State, Equatable {
throw StateMachineError.invalidEvent
}

case let .chooseDerivationPath(phrase):
case .chooseDerivationPath:
switch event {
case let .restoreWithSeed(phrase, path):
return .finish(result: .successful(phrase: phrase, path: path))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public indirect enum RestoreSocialState: Codable, State, Equatable {
throw StateMachineError.invalidEvent
}

case let .signInProgress(tokenID, email, deviceShare, customResult, backState):
case let .signInProgress(_, _, _, _, backState):
switch event {
case let .signInTorus(tokenID, email, deviceShare, customResult):
if let deviceShare = deviceShare {
Expand Down Expand Up @@ -110,7 +110,7 @@ public indirect enum RestoreSocialState: Codable, State, Equatable {
throw StateMachineError.invalidEvent
}

case let .notFoundCustom(result, email):
case let .notFoundCustom(result, _):
switch event {
case let .signInCustom(socialProvider):
let (value, email) = try await provider.authService.auth(type: socialProvider)
Expand Down Expand Up @@ -147,7 +147,7 @@ public indirect enum RestoreSocialState: Codable, State, Equatable {
throw StateMachineError.invalidEvent
}

case let .expiredSocialTryAgain(result, socialProvider, _, deviceShare):
case .expiredSocialTryAgain:
throw StateMachineError.invalidEvent

case .finish:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,16 +157,6 @@ public class WormholeSendUserActionConsumer: UserActionConsumer {
Task { [weak self] in
await self?.database.set(for: action.message, action)

/// Network fee in Solana network.
let transactionFee: CryptoAmount = [action.fees.networkFee, action.fees.bridgeFee]
.compactMap { $0 }
.map(\.asCryptoAmount)
.reduce(CryptoAmount(token: SolanaToken.nativeSolana), +)

/// Account creation fee in Solana network.
let accountCreationFee = action.fees.messageAccountRent?
.asCryptoAmount ?? CryptoAmount(token: SolanaToken.nativeSolana)

/// Preparing transaction
guard
let data = Data(base64Encoded: action.transaction.transaction, options: .ignoreUnknownCharacters),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ enum WormholeSendInputLogic {
}),

// Native account
availableAccounts.nativeWallet,
availableAccounts.nativeAccount,
].compactMap { $0 }

// Account with high amount in fiat
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,6 @@ public enum WormholeSendInputState: Equatable {
return .error(input: input, output: nil, error: .calculationFeeFailure)
}

var alert: WormholeSendInputAlert?

if fees.resultAmount == nil {
let error: WormholeSendInputError

Expand Down Expand Up @@ -148,7 +146,7 @@ public enum WormholeSendInputState: Equatable {
fees: fees,
relayContext: relayContext
),
alert: alert
alert: nil
)

case let .updateInput(newInput):
Expand Down Expand Up @@ -187,7 +185,7 @@ public enum WormholeSendInputState: Equatable {
return .calculating(newInput: input)
}

case let .initializingFailure(input, error):
case .initializingFailure:
return self
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,9 @@ public class SolendActionServiceImpl: SolendActionService {
private let relayService: RelayService
private let relayContextManager: RelayContextManager

private var owner: Account {
private var owner: KeyPair {
get throws {
guard let account = userAccountStorage.account else {
throw SolanaError.unauthorized
}
guard let account = userAccountStorage.account else { throw SolanaError.unauthorized }
return account
}
}
Expand Down
8 changes: 4 additions & 4 deletions Packages/KeyAppKit/Sources/Solend/SolendDataServiceImpl.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ private struct SolendDataCache: Codable {
let lastUpdate: Date?
}

public class SolendDataServiceImpl: SolendDataService {
// Variables
public final class SolendDataServiceImpl: SolendDataService {

private let solend: Solend
private var owner: Account
private var owner: KeyPair
private var lendingMark: String
private let cache: SolendCache

Expand Down Expand Up @@ -83,7 +83,7 @@ public class SolendDataServiceImpl: SolendDataService {
}
}

public init(solend: Solend, owner: Account, lendingMark: String, cache: SolendCache? = nil) {
public init(solend: Solend, owner: KeyPair, lendingMark: String, cache: SolendCache? = nil) {
self.solend = solend
self.owner = owner
self.lendingMark = lendingMark
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public extension EthereumTransaction {
let toBytes = array[3].bytes,
let value = array[4].bigUInt,
let data = array[5].bytes,
let chainID = array[6].uint
array[6].uint != nil
else {
throw EthereumSignedTransaction.Error.rlpItemInvalid
}
Expand Down
39 changes: 39 additions & 0 deletions Scripts/swiftlint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
if [ "${CONFIGURATION}" = "Release" ]; then
echo "Swiftlint is disabled in Release mode"
exit 0
fi

START_DATE=$(date +"%s")

SWIFT_LINT=/opt/homebrew/bin/swiftlint

if [[ -e "${SWIFT_LINT}" ]]; then
echo "[I] Found SwiftLint at ${SWIFT_LINT}"
fi

if [[ ! -e "${SWIFT_LINT}" ]]; then
echo "[!] SwifLint is not installed."
echo "[!] Expected location is '${SWIFT_LINT}'"
echo "[!] Please install it. eg. 'brew install swiftlint'"
exit 1
fi

echo "[I] SwiftLint version: $(${SWIFT_LINT} version)"

# Run for unstaged, staged, new files, excluded for deleted files
git diff --diff-filter=d --name-only -- "*.swift" | while read filename; do
$SWIFT_LINT lint --path "$filename";
done

git diff --cached --diff-filter=d --name-only -- "*.swift" | while read filename; do
$SWIFT_LINT lint --path "$filename";
done

git ls-files --others --exclude-standard -- "*.swift" | while read filename; do
$SWIFT_LINT lint --path "$filename";
done

END_DATE=$(date +"%s")

DIFF=$(($END_DATE - $START_DATE))
echo "SwiftLint took $(($DIFF / 60)) minutes and $(($DIFF % 60)) seconds to complete."
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ import SafariServices
private typealias Result = SellTransactionDetailsCoorditor.Result

final class SellTransactionDetailsCoorditor: Coordinator<SellTransactionDetailsCoorditor.Result> {
@Injected private var walletsRepository: WalletsRepository

private let viewController: UIViewController
private let strategy: Strategy
private let transaction: SellDataServiceTransaction
Expand Down
3 changes: 2 additions & 1 deletion p2p_wallet/Coordinators/SendEmptyCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ import SolanaSwift
import UIKit

final class SendEmptyCoordinator: Coordinator<Void> {
@Injected private var walletsRepository: WalletsRepository

// Dependencies
@Injected private var analyticsManager: AnalyticsManager

private let navigationController: UINavigationController
Expand Down
11 changes: 6 additions & 5 deletions p2p_wallet/Coordinators/SolendDepositsCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import SolanaSwift
import Solend
import SwiftUI
import UIKit
import KeyAppBusiness

final class SolendDepositsCoordinator: Coordinator<Void> {
private let controller: UINavigationController
Expand Down Expand Up @@ -50,11 +51,11 @@ final class SolendDepositsCoordinator: Coordinator<Void> {
return
}

let wallets: WalletsRepository = Resolver.resolve()
let accountsService: SolanaAccountsService = Resolver.resolve()

let tokenAccount: Wallet? = wallets
.getWallets()
.first(where: { (wallet: Wallet) -> Bool in asset.mintAddress == wallet.mintAddress })
let tokenAccount: Wallet? = accountsService
.wallets
.first { (wallet: Wallet) -> Bool in asset.mintAddress == wallet.mintAddress }

if (tokenAccount?.amount ?? 0) > 0 {
// User has a token
Expand All @@ -72,7 +73,7 @@ final class SolendDepositsCoordinator: Coordinator<Void> {
.store(in: &subscriptions)
} else {
// User doesn't have a token
let hasAnotherToken: Bool = wallets.getWallets().first(where: { ($0.lamports ?? 0) > 0 }) != nil
let hasAnotherToken: Bool = accountsService.wallets.first { ($0.lamports ?? 0) > 0 } != nil
let coordinator = SolendTopUpForContinueCoordinator(
navigationController: controller,
model: .init(
Expand Down
2 changes: 1 addition & 1 deletion p2p_wallet/Coordinators/TabBar/HomeCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ final class HomeCoordinator: Coordinator<Void> {
return coordinate(to: BuyCoordinator(navigationController: navigationController, context: .fromHome))
.map { _ in () }
.eraseToAnyPublisher()
case let .receive(publicKey):
case .receive:
if available(.ethAddressEnabled) {
let coordinator = SupportedTokensCoordinator(
presentation: SmartCoordinatorPushPresentation(navigationController)
Expand Down
10 changes: 5 additions & 5 deletions p2p_wallet/Coordinators/TabBar/TabBarCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ import Sell
import SolanaSwift

final class TabBarCoordinator: Coordinator<Void> {
// MARK: - Dependencies


// Dependencies
@Injected private var userWalletManager: UserWalletManager
@Injected private var walletsRepository: WalletsRepository
@Injected private var accountsService: SolanaAccountsService
@Injected private var analyticsManager: AnalyticsManager
@Injected private var sellDataService: any SellDataService

Expand Down Expand Up @@ -90,7 +90,7 @@ final class TabBarCoordinator: Coordinator<Void> {
.sink { [weak self] url in
guard let self = self else { return }

UIApplication.dismissCustomPresentedViewController() {
UIApplication.dismissCustomPresentedViewController {
let claimCoordinator = ReceiveFundsViaLinkCoordinator(
presentingViewController: UIApplication.topmostViewController() ?? self.tabBarController,
url: url
Expand Down Expand Up @@ -263,7 +263,7 @@ final class TabBarCoordinator: Coordinator<Void> {
case .swap:
routeToSwap(nc: navigationController, source: .actionPanel)
case .send:
if walletsRepository.getWallets().count > 0 {
if accountsService.state.value.map(\.data).count > 0 {
analyticsManager.log(event: .sendViewed(lastScreen: "main_screen"))
let sendCoordinator = SendCoordinator(
rootViewController: navigationController,
Expand Down
Loading