Compare commits
2 Commits
849882287f
...
160f48679b
Author | SHA1 | Date |
---|---|---|
Shadowfacts | 160f48679b | |
Shadowfacts | 4931665b45 |
|
@ -83,7 +83,7 @@ public class Client {
|
||||||
completion(.failure(Error(request: request, type: .invalidResponse)))
|
completion(.failure(Error(request: request, type: .invalidResponse)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
guard response.statusCode == 200 else {
|
guard response.statusCode == 200 || request.additionalAcceptableHTTPCodes.contains(response.statusCode) else {
|
||||||
let mastodonError = try? Client.decoder.decode(MastodonError.self, from: data)
|
let mastodonError = try? Client.decoder.decode(MastodonError.self, from: data)
|
||||||
let type: ErrorType = mastodonError.flatMap { .mastodonError(response.statusCode, $0.description) } ?? .unexpectedStatus(response.statusCode)
|
let type: ErrorType = mastodonError.flatMap { .mastodonError(response.statusCode, $0.description) } ?? .unexpectedStatus(response.statusCode)
|
||||||
completion(.failure(Error(request: request, type: type)))
|
completion(.failure(Error(request: request, type: type)))
|
||||||
|
|
|
@ -38,6 +38,8 @@ extension Timeline {
|
||||||
request.queryParameters.append("local" => true)
|
request.queryParameters.append("local" => true)
|
||||||
}
|
}
|
||||||
request.range = range
|
request.range = range
|
||||||
|
// 206 can happen when the timeline is being regenerated and therefore is incomplete
|
||||||
|
request.additionalAcceptableHTTPCodes = [206]
|
||||||
return request
|
return request
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ public struct Request<ResultType: Decodable>: Sendable {
|
||||||
let endpoint: Endpoint
|
let endpoint: Endpoint
|
||||||
let body: Body
|
let body: Body
|
||||||
var queryParameters: [Parameter]
|
var queryParameters: [Parameter]
|
||||||
|
var additionalAcceptableHTTPCodes: [Int] = []
|
||||||
|
|
||||||
init(method: Method, path: Endpoint, body: Body = EmptyBody(), queryParameters: [Parameter] = []) {
|
init(method: Method, path: Endpoint, body: Body = EmptyBody(), queryParameters: [Parameter] = []) {
|
||||||
self.method = method
|
self.method = method
|
||||||
|
|
|
@ -14,6 +14,7 @@ import UserAccounts
|
||||||
import ComposeUI
|
import ComposeUI
|
||||||
|
|
||||||
let stateRestorationLogger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "StateRestoration")
|
let stateRestorationLogger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "StateRestoration")
|
||||||
|
private let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "AppDelegate")
|
||||||
|
|
||||||
@UIApplicationMain
|
@UIApplicationMain
|
||||||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||||
|
@ -94,6 +95,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
|
||||||
return Preferences.shared.reportErrorsAutomatically ? event : nil
|
return Preferences.shared.reportErrorsAutomatically ? event : nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let clazz = NSClassFromString("SentryInstallation"),
|
||||||
|
let objClazz = clazz as AnyObject as? NSObjectProtocol,
|
||||||
|
objClazz.responds(to: Selector(("id"))),
|
||||||
|
let id = objClazz.perform(Selector(("id"))).takeRetainedValue() as? String {
|
||||||
|
logger.info("Initialized Sentry with installation/user ID: \(id)")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override func buildMenu(with builder: UIMenuBuilder) {
|
override func buildMenu(with builder: UIMenuBuilder) {
|
||||||
|
|
Loading…
Reference in New Issue