Supports joining Patreon via web view + downloading app in single flow

Asks user to connect Patreon account if they are signed-in inside WebViewController but not in AltStore settings.
This commit is contained in:
Riley Testut
2023-12-07 15:14:55 -06:00
committed by Magesh K
parent 703db062e6
commit 74b6fb6ec0
5 changed files with 274 additions and 27 deletions

View File

@@ -293,7 +293,12 @@ public extension PatreonAPI
extension PatreonAPI
{
private func saveAuthCookies() async
public var authCookies: [HTTPCookie] {
let cookies = HTTPCookieStorage.shared.cookies(for: URL(string: "https://www.patreon.com")!) ?? []
return cookies
}
public func saveAuthCookies() async
{
let cookieStore = await MainActor.run { WKWebsiteDataStore.default().httpCookieStore } // Must access from main actor
@@ -311,22 +316,15 @@ extension PatreonAPI
let cookieStore = await MainActor.run { WKWebsiteDataStore.default().httpCookieStore } // Must access from main actor
if let cookies = HTTPCookieStorage.shared.cookies(for: URL(string: "https://www.patreon.com")!)
for cookie in self.authCookies
{
for cookie in cookies
{
Logger.main.debug("Deleting Patreon cookie \(cookie.name, privacy: .public) (Expires: \(cookie.expiresDate?.description ?? "nil", privacy: .public))")
await cookieStore.deleteCookie(cookie)
HTTPCookieStorage.shared.deleteCookie(cookie)
}
Logger.main.debug("Deleting Patreon cookie \(cookie.name, privacy: .public) (Expires: \(cookie.expiresDate?.description ?? "nil", privacy: .public))")
Logger.main.info("Cleared Patreon cookie cache!")
}
else
{
Logger.main.info("No Patreon cookies to clear.")
await cookieStore.deleteCookie(cookie)
HTTPCookieStorage.shared.deleteCookie(cookie)
}
Logger.main.info("Cleared Patreon cookie cache!")
}
}