Skip to content

Commit c75c15f

Browse files
works
1 parent 2240471 commit c75c15f

File tree

15 files changed

+418
-68493
lines changed

15 files changed

+418
-68493
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ playground.xcworkspace
4646
# you should judge for yourself, the pros and cons are mentioned at:
4747
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
4848
#
49-
#Pods/
49+
Pods/
5050

5151
# Carthage
5252
#

Example/web3swiftBrowser/Podfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,4 @@ platform :ios, '12.0'
33
target 'web3swiftBrowser' do
44
use_frameworks!
55
pod 'web3swift', :path => '../../'
6-
pod "WKBridge"
76
end

Example/web3swiftBrowser/Podfile.lock

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@ PODS:
1818
- PromiseKit (~> 6.8.4)
1919
- secp256k1.c (~> 0.1)
2020
- Starscream (~> 3.1.0)
21-
- WKBridge (0.2.4)
2221

2322
DEPENDENCIES:
2423
- web3swift (from `../../`)
25-
- WKBridge
2624

2725
SPEC REPOS:
2826
trunk:
@@ -31,7 +29,6 @@ SPEC REPOS:
3129
- PromiseKit
3230
- secp256k1.c
3331
- Starscream
34-
- WKBridge
3532

3633
EXTERNAL SOURCES:
3734
web3swift:
@@ -43,9 +40,8 @@ SPEC CHECKSUMS:
4340
PromiseKit: 9616b0afef31eae56ab9ce044c8ec2b8612a15cd
4441
secp256k1.c: db47b726585d80f027423682eb369729e61b3b20
4542
Starscream: 4bb2f9942274833f7b4d296a55504dcfc7edb7b0
46-
web3swift: d79140b9d5fdd06a377072936b086bb7ae187157
47-
WKBridge: 677fc36b9a9e4a80b6f9c4e915480d8fd91f5ad5
43+
web3swift: 8e869c9b8748d8a7ef75e422993433d06701056f
4844

49-
PODFILE CHECKSUM: ed17f63e9fc4feec3b3d9d88971f86da22d55a1f
45+
PODFILE CHECKSUM: 0fdcb66c1e21400e017387d14550cd6ae5ef8aaa
5046

5147
COCOAPODS: 1.8.4

Example/web3swiftBrowser/web3swiftBrowser.xcodeproj/project.pbxproj

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
81BD7DDF21944880006F9D6D /* Web3Swift.js in Resources */ = {isa = PBXBuildFile; fileRef = 81BD7DDE21944880006F9D6D /* Web3Swift.js */; };
11-
81BD7DE1219448B5006F9D6D /* Web3Swift.min.js in Resources */ = {isa = PBXBuildFile; fileRef = 81BD7DE0219448B5006F9D6D /* Web3Swift.min.js */; };
1210
81E09B202002623A005DF51D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81E09B1F2002623A005DF51D /* AppDelegate.swift */; };
1311
81E09B222002623A005DF51D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81E09B212002623A005DF51D /* ViewController.swift */; };
1412
81E09B252002623A005DF51D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81E09B232002623A005DF51D /* Main.storyboard */; };
@@ -18,6 +16,7 @@
1816
81E09B382002623B005DF51D /* web3swiftBrowserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81E09B372002623B005DF51D /* web3swiftBrowserTests.swift */; };
1917
81E09B432002623B005DF51D /* web3swiftBrowserUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81E09B422002623B005DF51D /* web3swiftBrowserUITests.swift */; };
2018
C2C40799AB45A254C5B8B694 /* Pods_web3swiftBrowser.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D2B1946592C2F6161DF2A16 /* Pods_web3swiftBrowser.framework */; };
19+
E2EDC5F0241EECFD00410EA6 /* browser.min.js in Resources */ = {isa = PBXBuildFile; fileRef = E2EDC5EF241EECFD00410EA6 /* browser.min.js */; };
2120
/* End PBXBuildFile section */
2221

2322
/* Begin PBXContainerItemProxy section */
@@ -40,8 +39,6 @@
4039
/* Begin PBXFileReference section */
4140
2F89255F9B9DFBDF61D676C1 /* Pods-web3swiftBrowser.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swiftBrowser.debug.xcconfig"; path = "Pods/Target Support Files/Pods-web3swiftBrowser/Pods-web3swiftBrowser.debug.xcconfig"; sourceTree = "<group>"; };
4241
3D2B1946592C2F6161DF2A16 /* Pods_web3swiftBrowser.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_web3swiftBrowser.framework; sourceTree = BUILT_PRODUCTS_DIR; };
43-
81BD7DDE21944880006F9D6D /* Web3Swift.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = Web3Swift.js; sourceTree = "<group>"; };
44-
81BD7DE0219448B5006F9D6D /* Web3Swift.min.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = Web3Swift.min.js; sourceTree = "<group>"; };
4542
81E09B1C2002623A005DF51D /* web3swiftBrowser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = web3swiftBrowser.app; sourceTree = BUILT_PRODUCTS_DIR; };
4643
81E09B1F2002623A005DF51D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
4744
81E09B212002623A005DF51D /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
@@ -56,6 +53,7 @@
5653
81E09B3E2002623B005DF51D /* web3swiftBrowserUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = web3swiftBrowserUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
5754
81E09B422002623B005DF51D /* web3swiftBrowserUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web3swiftBrowserUITests.swift; sourceTree = "<group>"; };
5855
81E09B442002623B005DF51D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
56+
E2EDC5EF241EECFD00410EA6 /* browser.min.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = browser.min.js; sourceTree = "<group>"; };
5957
FE32BFE26D945D8D376882BB /* Pods-web3swiftBrowser.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-web3swiftBrowser.release.xcconfig"; path = "Pods/Target Support Files/Pods-web3swiftBrowser/Pods-web3swiftBrowser.release.xcconfig"; sourceTree = "<group>"; };
6058
/* End PBXFileReference section */
6159

@@ -118,9 +116,8 @@
118116
81E09B1E2002623A005DF51D /* web3swiftBrowser */ = {
119117
isa = PBXGroup;
120118
children = (
119+
E2EDC5EF241EECFD00410EA6 /* browser.min.js */,
121120
81E09B1F2002623A005DF51D /* AppDelegate.swift */,
122-
81BD7DDE21944880006F9D6D /* Web3Swift.js */,
123-
81BD7DE0219448B5006F9D6D /* Web3Swift.min.js */,
124121
81E09B212002623A005DF51D /* ViewController.swift */,
125122
81E09B232002623A005DF51D /* Main.storyboard */,
126123
81E09B292002623A005DF51D /* Assets.xcassets */,
@@ -267,11 +264,10 @@
267264
isa = PBXResourcesBuildPhase;
268265
buildActionMask = 2147483647;
269266
files = (
270-
81BD7DE1219448B5006F9D6D /* Web3Swift.min.js in Resources */,
271267
81E09B2D2002623A005DF51D /* LaunchScreen.storyboard in Resources */,
272-
81BD7DDF21944880006F9D6D /* Web3Swift.js in Resources */,
273268
81E09B2A2002623A005DF51D /* Assets.xcassets in Resources */,
274269
81E09B252002623A005DF51D /* Main.storyboard in Resources */,
270+
E2EDC5F0241EECFD00410EA6 /* browser.min.js in Resources */,
275271
);
276272
runOnlyForDeploymentPostprocessing = 0;
277273
};
@@ -303,7 +299,6 @@
303299
"${BUILT_PRODUCTS_DIR}/CryptoSwift/CryptoSwift.framework",
304300
"${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework",
305301
"${BUILT_PRODUCTS_DIR}/Starscream/Starscream.framework",
306-
"${BUILT_PRODUCTS_DIR}/WKBridge/WKBridge.framework",
307302
"${BUILT_PRODUCTS_DIR}/secp256k1.c/secp256k1.framework",
308303
"${BUILT_PRODUCTS_DIR}/web3swift/web3swift.framework",
309304
);
@@ -313,7 +308,6 @@
313308
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CryptoSwift.framework",
314309
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PromiseKit.framework",
315310
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Starscream.framework",
316-
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WKBridge.framework",
317311
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/secp256k1.framework",
318312
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/web3swift.framework",
319313
);
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
3-
<device id="retina4_7" orientation="portrait">
4-
<adaptation id="fullscreen"/>
5-
</device>
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
3+
<device id="retina4_7" orientation="portrait" appearance="light"/>
64
<dependencies>
75
<deployment identifier="iOS"/>
8-
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
6+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
97
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
108
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
119
</dependencies>
1210
<scenes>
13-
<!--Browser View Controller-->
11+
<!--View Controller-->
1412
<scene sceneID="tne-QT-ifu">
1513
<objects>
16-
<viewController id="BYZ-38-t0r" customClass="BrowserViewController" customModule="web3swiftBrowser" customModuleProvider="target" sceneMemberID="viewController">
14+
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="web3swiftBrowser" customModuleProvider="target" sceneMemberID="viewController">
1715
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
1816
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
1917
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -23,6 +21,7 @@
2321
</viewController>
2422
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
2523
</objects>
24+
<point key="canvasLocation" x="138" y="134"/>
2625
</scene>
2726
</scenes>
2827
</document>

Example/web3swiftBrowser/web3swiftBrowser/ViewController.swift

Lines changed: 4 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -6,60 +6,10 @@
66
// Copyright © 2018 Alexander Vlasov. All rights reserved.
77
//
88

9-
import Foundation
109
import UIKit
11-
import WebKit
1210
import web3swift
13-
import WKBridge
1411

15-
class BrowserViewController: UIViewController {
16-
17-
enum Method: String {
18-
case getAccounts
19-
case signTransaction
20-
case signMessage
21-
case signPersonalMessage
22-
case publishTransaction
23-
case approveTransaction
24-
}
25-
26-
lazy var webView: WKWebView = {
27-
let websiteDataTypes = NSSet(array: [WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache])
28-
let date = NSDate(timeIntervalSince1970: 0)
29-
30-
WKWebsiteDataStore.default().removeData(ofTypes: websiteDataTypes as! Set<String>, modifiedSince: date as Date, completionHandler:{ })
31-
let webView = WKWebView(
32-
frame: .zero,
33-
configuration: self.config
34-
)
35-
webView.allowsBackForwardNavigationGestures = true
36-
webView.scrollView.isScrollEnabled = true
37-
webView.navigationDelegate = self
38-
webView.configuration.preferences.setValue(true, forKey: "developerExtrasEnabled")
39-
return webView
40-
}()
41-
42-
lazy var config: WKWebViewConfiguration = {
43-
let config = WKWebViewConfiguration()
44-
45-
var js = ""
46-
47-
if let filepath = Bundle.main.path(forResource: "Web3Swift.min", ofType: "js") {
48-
do {
49-
js += try String(contentsOfFile: filepath)
50-
NSLog("Loaded web3swift.js")
51-
} catch {
52-
NSLog("Failed to load web.js")
53-
}
54-
} else {
55-
NSLog("web3.js not found in bundle")
56-
}
57-
let userScript = WKUserScript(source: js, injectionTime: .atDocumentStart, forMainFrameOnly: false)
58-
config.userContentController.addUserScript(userScript)
59-
return config
60-
}()
61-
62-
12+
class ViewController: BrowserViewController {
6313
override func viewWillAppear(_ animated: Bool) {
6414
super.viewWillAppear(animated)
6515
webView.translatesAutoresizingMaskIntoConstraints = false
@@ -72,8 +22,7 @@ class BrowserViewController: UIViewController {
7222
webView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
7323
])
7424

75-
// webView.load(URLRequest(url: URL(string: "https://plasma-testnet.thematter.io/")!))
76-
webView.load(URLRequest(url: URL(string: "https://instant.airswap.io")!))
25+
webView.load(URLRequest(url: URL(string: "https://app.compound.finance")!))
7726

7827
do {
7928
let userDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
@@ -87,78 +36,14 @@ class BrowserViewController: UIViewController {
8736
}
8837
guard let sender = keystoreManager?.addresses![0] else {return}
8938
print(sender)
39+
9040
let web3 = Web3.InfuraRinkebyWeb3()
9141
web3.addKeystoreManager(keystoreManager)
9242

93-
self.webView.bridge.register({ (parameters, completion) in
94-
let url = web3.provider.url.absoluteString
95-
completion(.success(["rpcURL": url as Any]))
96-
}, for: "getRPCurl")
97-
98-
self.webView.bridge.register({ (parameters, completion) in
99-
let allAccounts = web3.browserFunctions.getAccounts()
100-
completion(.success(["accounts": allAccounts as Any]))
101-
}, for: "eth_getAccounts")
102-
103-
self.webView.bridge.register({ (parameters, completion) in
104-
let coinbase = web3.browserFunctions.getCoinbase()
105-
completion(.success(["coinbase": coinbase as Any]))
106-
}, for: "eth_coinbase")
107-
self.webView.bridge.register({ (parameters, completion) in
108-
if parameters == nil {
109-
completion(.failure(Bridge.JSError(code: 0, description: "No parameters provided")))
110-
return
111-
}
112-
let payload = parameters!["payload"] as? [String:Any]
113-
if payload == nil {
114-
completion(.failure(Bridge.JSError(code: 0, description: "No parameters provided")))
115-
return
116-
}
117-
let personalMessage = payload!["data"] as? String
118-
let account = payload!["from"] as? String
119-
if personalMessage == nil || account == nil {
120-
completion(.failure(Bridge.JSError(code: 0, description: "Not enough parameters provided")))
121-
return
122-
}
123-
let result = web3.browserFunctions.personalSign(personalMessage!, account: account!)
124-
if result == nil {
125-
completion(.failure(Bridge.JSError(code: 0, description: "Account or data is invalid")))
126-
return
127-
}
128-
completion(.success(["signedMessage": result as Any]))
129-
}, for: "eth_sign")
130-
self.webView.bridge.register({ (parameters, completion) in
131-
if parameters == nil {
132-
completion(.failure(Bridge.JSError(code: 0, description: "No parameters provided")))
133-
return
134-
}
135-
let transaction = parameters!["transaction"] as? [String:Any]
136-
if transaction == nil {
137-
completion(.failure(Bridge.JSError(code: 0, description: "Not enough parameters provided")))
138-
return
139-
}
140-
let result = web3.browserFunctions.signTransaction(transaction!)
141-
if result == nil {
142-
completion(.failure(Bridge.JSError(code: 0, description: "Data is invalid")))
143-
return
144-
}
145-
completion(.success(["signedTransaction": result as Any]))
146-
}, for: "eth_signTransaction")
43+
self.registerBridges(for: web3)
14744
}
14845
catch{
14946
print(error)
15047
}
15148
}
15249
}
153-
154-
extension BrowserViewController: WKNavigationDelegate {
155-
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
156-
157-
}
158-
}
159-
160-
extension BrowserViewController: WKScriptMessageHandler {
161-
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
162-
NSLog("message \(message.body)")
163-
}
164-
}

0 commit comments

Comments
 (0)