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
parent 39e170d56a
commit 623ec97684
5 changed files with 274 additions and 27 deletions

View File

@@ -217,16 +217,6 @@ private extension DownloadAppOperation
fileURL = sourceURL
self.progress.completedUnitCount += 3
}
else if let (isPledged, isPledgeRequired) = await self.context.$appVersion.perform({ $0?.app.map { ($0.isPledged, $0.isPledgeRequired) } }), isPledgeRequired && !isPledged
{
// Not pledged, so just show Patreon page.
guard let presentingViewController = self.context.presentingViewController,
let patreonURL = await self.context.$appVersion.perform({ $0?.app?.source?.patreonURL })
else { throw OperationError.pledgeRequired(appName: self.appName) }
// Intercept downloads just in case they are in fact pledged.
fileURL = try await self.downloadFromPatreon(patreonURL, presentingViewController: presentingViewController)
}
else if let host = sourceURL.host, host.lowercased().hasSuffix("patreon.com") && sourceURL.path.lowercased() == "/file"
{
// Patreon app