Skip to content

Commit 53bc4ac

Browse files
authored
Update to 2.5.0
* Make login cookies check more robust * Bump pod version number
1 parent 756bf2e commit 53bc4ac

File tree

2 files changed

+11
-19
lines changed

2 files changed

+11
-19
lines changed

SwiftyInsta.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Pod::Spec.new do |s|
22

33
s.name = "SwiftyInsta"
4-
s.version = "2.4.3"
4+
s.version = "2.5.0"
55
s.summary = "Private and Tokenless Instagram RESTful API."
66

77
s.homepage = "https://github.com/TheM4hd1/SwiftyInsta"

SwiftyInsta/UI/LoginWebView.swift

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public class LoginWebView: WKWebView, WKNavigationDelegate {
1818
/// Called once the flow is completed.
1919
var completionHandler: ((Result<[HTTPCookie], Error>) -> Void)!
2020

21+
private var cookieTimer: Timer?
22+
2123
// MARK: Init
2224
@available(*, unavailable, message: "using a custom `userAgent` is no longer supported")
2325
public init(frame: CGRect, userAgent: String?, didReachEndOfLoginFlow: (() -> Void)? = nil) {
@@ -34,6 +36,7 @@ public class LoginWebView: WKWebView, WKNavigationDelegate {
3436
self.didReachEndOfLoginFlow = didReachEndOfLoginFlow
3537
super.init(frame: frame, configuration: configuration)
3638
self.navigationDelegate = self
39+
setCookieTimer()
3740
}
3841

3942
@available(*, unavailable, message: "use `init(frame:didReachEndOfLoginFlow:)` instead.")
@@ -79,9 +82,10 @@ public class LoginWebView: WKWebView, WKNavigationDelegate {
7982
}
8083

8184
// MARK: Clean cookies
82-
private func fetchCookies() {
83-
configuration.websiteDataStore.httpCookieStore.getAllCookies { [weak self] in
84-
self?.completionHandler?(.success($0))
85+
86+
private func setCookieTimer() {
87+
cookieTimer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] _ in
88+
self?.tryFetchingCookies()
8589
}
8690
}
8791

@@ -99,6 +103,9 @@ public class LoginWebView: WKWebView, WKNavigationDelegate {
99103
self?.navigationDelegate = nil
100104
// notify user.
101105
self?.completionHandler?(.success($0))
106+
// deinit timer
107+
self?.cookieTimer?.invalidate()
108+
self?.cookieTimer = nil
102109
}
103110
}
104111

@@ -109,20 +116,5 @@ public class LoginWebView: WKWebView, WKNavigationDelegate {
109116
completionHandler: completionHandler)
110117
}
111118

112-
// MARK: Navigation delegate
113-
public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
114-
switch webView.url?.absoluteString {
115-
case "https://www.instagram.com/"?:
116-
// notify user.
117-
didReachEndOfLoginFlow?()
118-
// fetch cookies.
119-
fetchCookies()
120-
// no need to check anymore.
121-
navigationDelegate = nil
122-
default:
123-
// try fetching cookies.
124-
tryFetchingCookies()
125-
}
126-
}
127119
}
128120
#endif

0 commit comments

Comments
 (0)