Files
2025-11-21 11:55:49 +01:00

45 lines
1.3 KiB
Swift

//
// Copyright (c) 2025 Proton Technologies AG
//
// This file is part of Proton Mail.
//
// Proton Mail is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Proton Mail is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Proton Mail. If not, see https://www.gnu.org/licenses/.
import Sentry
import proton_app_uniffi
public final class SentryIssueReporter: IssueReporter {
public init() {
}
public func report(level: IssueLevel, userId: String?, message: String, keys: [String: String]) {
let event = Event(level: level.sentryLevel)
event.extra = keys
event.message = .init(formatted: message)
event.user = userId.map(User.init)
SentrySDK.capture(event: event)
}
}
private extension IssueLevel {
var sentryLevel: SentryLevel {
switch self {
case .critical: .fatal
case .error: .error
case .warning: .warning
}
}
}