Skip to content

Commit

Permalink
Merge branch 'develop' into main
Browse files Browse the repository at this point in the history
# Conflicts:
#	.jazzy.yaml
  • Loading branch information
simonmcl committed Jun 5, 2024
2 parents 9b290db + 20c37e6 commit f498aae
Show file tree
Hide file tree
Showing 104 changed files with 16,049 additions and 8,859 deletions.
35 changes: 35 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: CodeQl
on:
push:
branches:
- develop
pull_request:
branches:
- develop

jobs:
deploy:
name: Running unit tests
runs-on: macos-14
steps:
- name: Select Xcode version
run: sudo xcode-select -s '/Applications/Xcode_15.2.app/Contents/Developer'

- name: Checkout repository
uses: actions/checkout@v4.1.1

- name: Get current date
run: echo "NOW=$(date +'%Y-%m-%dT%H-%M-%S')" >> $GITHUB_ENV

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: "swift"

- name: Test
run: xcodebuild -scheme KukaiCoreSwift -destination "platform=iOS Simulator,OS=17.2,name=iPhone 15"

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:swift"
2 changes: 1 addition & 1 deletion .github/workflows/docs-and-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
- main
jobs:
build:
runs-on: macos-latest
runs-on: macos-14

steps:
- uses: actions/checkout@v4.1.1
Expand Down
103 changes: 66 additions & 37 deletions .github/workflows/unit-test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
name: Unit Test

# Run unit tests on every push or pull request, to main or develop
on:
push:
branches:
Expand All @@ -11,43 +9,74 @@ on:
- main
- develop

# Checkout the code, and run mxcl's xcodebuild action to run the unit tests
jobs:
build:
runs-on: macos-12
strategy:
matrix:
platform:
- iOS
xcode:
- ^14
deploy:
name: Running unit tests
runs-on: macos-14
steps:
- uses: actions/checkout@v3.1.0
- name: Select Xcode version
#run: sudo xcode-select -s '/Applications/Xcode_14.3.1.app/Contents/Developer'
run: sudo xcode-select -s '/Applications/Xcode_15.2.app/Contents/Developer'

- name: Checkout repository
uses: actions/checkout@v4.1.1

- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: "swift"
- name: Get current date
run: echo "NOW=$(date +'%Y-%m-%dT%H-%M-%S')" >> $GITHUB_ENV

- uses: mxcl/xcodebuild@v2.0
with:
platform: ${{ matrix.platform }}
xcode: ${{ matrix.xcode }}
action: test
scheme: KukaiCoreSwift
code-coverage: true
upload-logs: always

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:swift"


# # Temporary step due to Xcode 15 / Github actions runner issues
# - name: Install iOS 16 simulator for Xcode 15
# run: |
# # Make iOS 16.4 simulator runtime available to Xcode 15
# sudo mkdir -p /Library/Developer/CoreSimulator/Profiles/Runtimes
# sudo ln -s /Applications/Xcode_14.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS\ 16.4.simruntime

# # Create an iOS 16.4 simulator
# xcrun simctl create "iPhone 14 Pro (16.4)" "com.apple.CoreSimulator.SimDeviceType.iPhone-14-Pro" "com.apple.CoreSimulator.SimRuntime.iOS-16-4"



# - name: Install yeetd
# run: |
# wget https://github.com/biscuitehh/yeetd/releases/download/1.0/yeetd-normal.pkg
# sudo installer -pkg yeetd-normal.pkg -target /
# yeetd &




# - name: Initialize CodeQL
# uses: github/codeql-action/init@v3
# with:
# languages: "swift"

#- name: Test
# run: xcodebuild -scheme KukaiCoreSwift test -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 12' -enableCodeCoverage YES -resultBundlePath "../../xcode-$GITHUB_RUN_ID.xcresult"
#
#- name: Upload results
# uses: actions/upload-artifact@v2
# with:
# name: "results-$GITHUB_RUN_ID.xcresult"
# path: "/Users/runner/work/xcode-$GITHUB_RUN_ID.xcresult"


# - name: Launch simulator
# run: open -a Simulator --args -CurrentDeviceUDID $(xcrun simctl list --json | ruby -e "require 'json'; puts JSON.parse(ARGF.read)['devices']['com.apple.CoreSimulator.SimRuntime.iOS-17-0'].find { |s| s['name'] == 'iPhone 15' }['udid']")




- name: Test
#run: xcodebuild test -scheme KukaiCoreSwift -destination "platform=iOS Simulator,OS=16.4,name=iPhone 14" -enableCodeCoverage YES -resultBundlePath "~/xcode-$NOW.xcresult"
run: xcodebuild test -scheme KukaiCoreSwift -destination "platform=iOS Simulator,OS=17.2,name=iPhone 15" -enableCodeCoverage YES -resultBundlePath "~/xcode-$NOW.xcresult"



# - name: Perform CodeQL Analysis
# uses: github/codeql-action/analyze@v3
# with:
# category: "/language:swift"



- name: Upload results
if: ${{ success() || failure() }}
uses: actions/upload-artifact@v4.3.1
with:
name: "results-${{ env.NOW }}.xcresult"
path: "~/xcode-${{ env.NOW }}.xcresult"

2 changes: 1 addition & 1 deletion .jazzy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ xcodebuild_arguments:
- "-scheme"
- "KukaiCoreSwift"
- "-destination"
- "platform=iOS Simulator,OS=16.2,name=iPhone 14 Pro"
- "platform=iOS Simulator,OS=17.2,name=iPhone 15"
14 changes: 6 additions & 8 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,25 @@ let package = Package(
.library(name: "KukaiCoreSwift", targets: ["KukaiCoreSwift"]),
],
dependencies: [
.package(name: "KukaiCryptoSwift", url: "https://github.com/kukai-wallet/kukai-crypto-swift", from: "1.0.14" /*.branch("feature/")*/),
//.package(url: "https://github.com/onevcat/Kingfisher.git", from: "7.6.2"),
.package(url: "https://github.com/simonmcl/Kingfisher.git", from: "1.0.0"),
.package(name: "CustomAuth", url: "https://github.com/torusresearch/customauth-swift-sdk", from: "6.0.0"),
.package(url: "https://github.com/simonmcl/SVGKit", from: "3.0.3"),
.package(name: "KukaiCryptoSwift", url: "https://github.com/kukai-wallet/kukai-crypto-swift", from: "1.0.23" /*.branch("develop")*/),
.package(name: "CustomAuth", url: "https://github.com/torusresearch/customauth-swift-sdk", from: "10.0.1"),
.package(name: "SignalRClient", url: "https://github.com/moozzyk/SignalR-Client-Swift", from: "0.8.0"),
.package(url: "https://github.com/SDWebImage/SDWebImage.git", from: "5.18.10")
],
targets: [
.target(
name: "KukaiCoreSwift",
dependencies: [
"KukaiCryptoSwift",
"Kingfisher",
"SVGKit",
"SDWebImage",
"CustomAuth",
"SignalRClient",
],
resources: [
.copy("Services/kukai-dex-calculations.js"),
.copy("Services/ledger_app_tezos.js"),
.copy("Services/taquito_local_forging.js")
.copy("Services/taquito_local_forging.js"),
.copy("PrivacyInfo.xcprivacy")
]
),

Expand Down
1 change: 0 additions & 1 deletion Sources/KukaiCoreSwift/Clients/BetterCallDevClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
//

import Foundation
import Kingfisher
import os.log

/// BetterCallDev (BCD) is an indexer/smart contract debugging tool, used for the Tezos blockchain.
Expand Down
5 changes: 4 additions & 1 deletion Sources/KukaiCoreSwift/Clients/DipDupClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ public class DipDupClient {
symbol,
address,
tokenId,
decimals,
thumbnailUri,
exchanges(where: {name: {_in: ["lb", "quipuswap"]}}) {
name,
tezPool,
Expand All @@ -77,7 +79,8 @@ public class DipDupClient {
decimals,
symbol,
tokenId,
standard
standard,
thumbnailUri
}
}
}
Expand Down
7 changes: 0 additions & 7 deletions Sources/KukaiCoreSwift/Clients/ObjktClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,6 @@ public class ObjktClient {
Take in an array of contract addresses, and return a list of the ones that we currently have no metadata for
*/
public func unresolvedCollections(addresses: [String]) -> [String] {

// OBJKT doesn't currently support testnet, easy solution to prevent unwanted requests / processing until a solution is found
// But allow for XCTest, which targets testnet
if self.config.networkType == .testnet && !Thread.current.isRunningXCTest {
return []
}

var unresolved: [String] = []
for add in addresses {
if collections[add] == nil {
Expand Down
28 changes: 14 additions & 14 deletions Sources/KukaiCoreSwift/Clients/TezosNodeClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public class TezosNodeClient {
- parameter completion: A callback containing a new `Token` object matching the xtz standard, or an error.
*/
public func getBalance(forAddress address: String, completion: @escaping ((Result<XTZAmount, KukaiError>) -> Void)) {
self.networkService.send(rpc: RPC.xtzBalance(forAddress: address), withBaseURL: config.primaryNodeURL) { (result) in
self.networkService.send(rpc: RPC.xtzBalance(forAddress: address), withNodeURLs: config.nodeURLs) { (result) in
switch result {
case .success(let rpcAmount):
let xtz = XTZAmount(fromRpcAmount: rpcAmount) ?? XTZAmount.zero()
Expand All @@ -98,7 +98,7 @@ public class TezosNodeClient {
- parameter completion: A callback containing a String with the delegate/baker's address, or an error.
*/
public func getDelegate(forAddress address: String, completion: @escaping ((Result<String, KukaiError>) -> Void)) {
self.networkService.send(rpc: RPC.getDelegate(forAddress: address), withBaseURL: config.primaryNodeURL, completion: completion)
self.networkService.send(rpc: RPC.getDelegate(forAddress: address), withNodeURLs: config.nodeURLs, completion: completion)
}


Expand Down Expand Up @@ -194,7 +194,7 @@ public class TezosNodeClient {
*/
public func getOperationMetadata(forWalletAddress: String, completion: @escaping ((Result<OperationMetadata, KukaiError>) -> Void)) {
let dispatchGroup = DispatchGroup()
let url = self.config.primaryNodeURL
let config = self.config

var counter = 0
var managerKey: String? = nil
Expand All @@ -205,7 +205,7 @@ public class TezosNodeClient {
// Get manager key
dispatchGroup.enter()
metadataQueue.async { [weak self] in
self?.networkService.send(rpc: RPC.managerKey(forAddress: forWalletAddress), withBaseURL: url) { (result) in
self?.networkService.send(rpc: RPC.managerKey(forAddress: forWalletAddress), withNodeURLs: config.nodeURLs) { (result) in
switch result {
case .success(let value):
managerKey = value
Expand All @@ -222,7 +222,7 @@ public class TezosNodeClient {
// Get counter
dispatchGroup.enter()
metadataQueue.async { [weak self] in
self?.networkService.send(rpc: RPC.counter(forAddress: forWalletAddress), withBaseURL: url) { (result) in
self?.networkService.send(rpc: RPC.counter(forAddress: forWalletAddress), withNodeURLs: config.nodeURLs) { (result) in
switch result {
case .success(let value):
counter = Int(value) ?? 0
Expand All @@ -239,7 +239,7 @@ public class TezosNodeClient {
// Get blockchain head
dispatchGroup.enter()
metadataQueue.async { [weak self] in
self?.networkService.send(rpc: RPC.blockchainHeadMinus3(), withBaseURL: url) { (result) in
self?.networkService.send(rpc: RPC.blockchainHeadMinus3(), withNodeURLs: config.nodeURLs) { (result) in
switch result {
case .success(let value):
blockchainHead = value
Expand Down Expand Up @@ -269,7 +269,7 @@ public class TezosNodeClient {
- parameter completion: A callback with a `Result` object, with either a `[String: Any]` or an `Error`
*/
public func getContractStorage(contractAddress: String, completion: @escaping ((Result<[String: Any], KukaiError>) -> Void)) {
self.networkService.send(rpc: RPC.contractStorage(contractAddress: contractAddress), withBaseURL: config.primaryNodeURL) { result in
self.networkService.send(rpc: RPC.contractStorage(contractAddress: contractAddress), withNodeURLs: config.nodeURLs) { result in
switch result {
case .success(let d):
if let json = try? JSONSerialization.jsonObject(with: d) as? [String: Any] {
Expand All @@ -290,7 +290,7 @@ public class TezosNodeClient {
- parameter completion: A callback with a `Result` object, with either a `[String: Any]` or an `Error`
*/
public func getBigMap(id: String, completion: @escaping ((Result<[String: Any], KukaiError>) -> Void)) {
self.networkService.send(rpc: RPC.bigMap(id: id), withBaseURL: config.primaryNodeURL) { result in
self.networkService.send(rpc: RPC.bigMap(id: id), withNodeURLs: config.nodeURLs) { result in
switch result {
case .success(let d):
if let json = try? JSONSerialization.jsonObject(with: d) as? [String: Any] {
Expand All @@ -316,13 +316,13 @@ public class TezosNodeClient {

dispatchGroup.enter()
dexterQueriesQueue.async { [weak self] in
guard let url = self?.config.primaryNodeURL else {
Logger.kukaiCoreSwift.info("Invalid server url: \(self?.config.primaryNodeURL.absoluteString ?? "nil")")
guard let config = self?.config else {
Logger.kukaiCoreSwift.info("Invalid nodeURLs")
completion(false, KukaiError.internalApplicationError(error: NetworkService.NetworkError.invalidURL))
return
}

self?.networkService.send(rpc: RPC.networkVersion(), withBaseURL: url) { (result) in
self?.networkService.send(rpc: RPC.networkVersion(), withNodeURLs: config.nodeURLs) { (result) in
switch result {
case .success(let value):
self?.networkVersion = value
Expand All @@ -337,13 +337,13 @@ public class TezosNodeClient {

dispatchGroup.enter()
dexterQueriesQueue.async { [weak self] in
guard let url = self?.config.primaryNodeURL else {
Logger.kukaiCoreSwift.info("Invalid server url: \(self?.config.primaryNodeURL.absoluteString ?? "nil")")
guard let config = self?.config else {
Logger.kukaiCoreSwift.info("Invalid nodeURLs")
completion(false, KukaiError.internalApplicationError(error: NetworkService.NetworkError.invalidURL))
return
}

self?.networkService.send(rpc: RPC.networkConstants(), withBaseURL: url) { (result) in
self?.networkService.send(rpc: RPC.networkConstants(), withNodeURLs: config.nodeURLs) { (result) in
switch result {
case .success(let value):
self?.networkConstants = value
Expand Down
Loading

0 comments on commit f498aae

Please sign in to comment.