Skip to content

Commit

Permalink
Remove static file & Refactoring asset converter package name (#26)
Browse files Browse the repository at this point in the history
* not using static func

* No need static method

* refactoring

* refactoring
  • Loading branch information
dinhnhat0401 authored Dec 21, 2023
1 parent 89eb042 commit 33a9d98
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 37 deletions.
12 changes: 6 additions & 6 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import PackageDescription

let package = Package(
name: "AssetConvertors",
name: "AssetConverters",
platforms: [
.iOS(.v15),
.tvOS(.v9),
Expand All @@ -14,8 +14,8 @@ let package = Package(
products: [
// Products define the executables and libraries a package produces, and make them visible to other packages.
.library(
name: "AssetConvertors",
targets: ["AssetConvertors"])
name: "AssetConverters",
targets: ["AssetConverters"])
],
dependencies: [
// Dependencies declare other packages that this package depends on.
Expand All @@ -24,7 +24,7 @@ let package = Package(
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages this package depends on.
.target(
name: "AssetConvertors",
name: "AssetConverters",
dependencies: [],
path: "ios/",
// exclude: ["android"],
Expand All @@ -33,7 +33,7 @@ let package = Package(
]
),
.testTarget(
name: "AssetConvertorsTests",
dependencies: ["AssetConvertors"]),
name: "AssetConvertersTests",
dependencies: ["AssetConverters"]),
]
)
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
//
// AssetConvertersTests.swift
//
//
//
// Created by Nhat Dinh on 2023/05/15.
//

import XCTest
@testable import AssetConvertors

@testable import AssetConverters

final class AssetConvertersTests: XCTestCase {
let sut = AssetInteractor()
let sut = AssetConverterInteractor()

func testCanGetAssetList() {
XCTAssertFalse(sut.getAssetList(provider: .banxa).isEmpty)
Expand Down
18 changes: 10 additions & 8 deletions ios/AssetInteractor.swift → ios/AssetConverterInteractor.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Foundation

protocol AssetInteractorProtocol {
public protocol AssetConverterInteractorProtocol {
/// Get list of assetIdV2 compound keys.
func getAssetList(provider: Provider) -> [String]
/// Get provider specific compound key from assetIdV2 compound key.
Expand All @@ -11,41 +11,43 @@ protocol AssetInteractorProtocol {
func convertAssetIdV2ToProviderAsset(assetIdV2: String, provider: Provider) -> String?
}

final class AssetInteractor: AssetInteractorProtocol {
public final class AssetConverterInteractor: AssetConverterInteractorProtocol {
/// Dictionary data format Provider: [ProviderAsset: AssetIdV2].
private var providerAssetTo = [Provider: [String: String]]()
/// Dictionary data format Provider: [ AssetIdV2: ProviderAsset].
private var reverseproviderAssetTo = [Provider: [String: String]]()

func getAssetList(provider: Provider) -> [String] {
public init() {}

public func getAssetList(provider: Provider) -> [String] {
let cachedAssets = providerAssetTo[provider]
guard cachedAssets == nil else {
return cachedAssets?.compactMap({ $0.value }) ?? []
}
let fetchedList = getAssetList(provider: provider) ?? [:]
let fetchedList = getAssetList(provider: provider)!
providerAssetTo[provider] = fetchedList
return fetchedList.map({ $0.value })
}

func convertProviderAssetToAssetIdV2(asset: String, provider: Provider) -> String? {
public func convertProviderAssetToAssetIdV2(asset: String, provider: Provider) -> String? {
let cachedAssets = providerAssetTo[provider]
guard cachedAssets == nil else {
return cachedAssets?[asset]
}
let fetchedList = getAssetList(provider: provider) ?? [:]
let fetchedList = getAssetList(provider: provider)!
providerAssetTo[provider] = fetchedList
return fetchedList[asset]
}

func convertAssetIdV2ToProviderAsset(assetIdV2: String, provider: Provider) -> String? {
public func convertAssetIdV2ToProviderAsset(assetIdV2: String, provider: Provider) -> String? {
let cachedData = reverseproviderAssetTo[provider]
guard cachedData == nil else {
return cachedData?[assetIdV2]
}
var reverseAssetList = [String: String]()
var cachedAssets = providerAssetTo[provider]
if cachedAssets == nil {
providerAssetTo[provider] = getAssetList(provider: provider) ?? [:]
providerAssetTo[provider] = getAssetList(provider: provider)!
cachedAssets = providerAssetTo[provider]
}
for (key, value) in cachedAssets ?? [:] {
Expand Down
20 changes: 0 additions & 20 deletions ios/AssetConvertor.swift

This file was deleted.

0 comments on commit 33a9d98

Please sign in to comment.