mirror of
https://github.com/AU-COVIDSafe/mobile-ios.git
synced 2025-01-19 01:06:35 +00:00
73 lines
2.8 KiB
Swift
73 lines
2.8 KiB
Swift
// Copyright © 2020 Australian Government All rights reserved.
|
|
|
|
import CoreGraphics
|
|
import Foundation
|
|
|
|
public var defaultFeedbackSettings: FeedbackSettings?
|
|
|
|
public struct FeedbackSettings {
|
|
let JIRATarget: JMCTarget
|
|
let issueType: String
|
|
let issueComponents: [String]
|
|
let customFields: [String: AnyObject]
|
|
let reporterAvatarImage: CGImage?
|
|
var reporterUsernameOrEmail: String?
|
|
let getReporterInfoAsynchronously: ((@escaping (String?, URL?) -> Void) -> Void)?
|
|
let navigationBarStyle: NavigationBarStyle
|
|
|
|
public init(
|
|
JIRATarget: JMCTarget,
|
|
issueType: String? = nil,
|
|
issueComponents: [String]? = nil,
|
|
customFields: [String: AnyObject]? = nil,
|
|
navigationBarStyle: NavigationBarStyle,
|
|
reporterAvatarImage: CGImage? = nil,
|
|
reporterUsernameOrEmail: String? = nil,
|
|
getReporterInfoAsynchronously: ((@escaping (_ usernameOrEmail: String?, _ avatarImageURL: URL?) -> Void) -> Void)? = nil
|
|
) {
|
|
let defaultIssueType = JIRAIssueType.support.rawValue
|
|
let defaultIssueComponents = ["iOS"]
|
|
let defaultCustomFields = [String: AnyObject]()
|
|
|
|
self.JIRATarget = JIRATarget
|
|
self.issueType = (issueType ?? defaultFeedbackSettings?.issueType) ?? defaultIssueType
|
|
self.issueComponents = (issueComponents ?? defaultFeedbackSettings?.issueComponents) ?? defaultIssueComponents
|
|
self.customFields = (customFields ?? defaultFeedbackSettings?.customFields) ?? defaultCustomFields
|
|
self.reporterAvatarImage = reporterAvatarImage ?? defaultFeedbackSettings?.reporterAvatarImage
|
|
self.reporterUsernameOrEmail = reporterUsernameOrEmail ?? defaultFeedbackSettings?.reporterUsernameOrEmail
|
|
self.getReporterInfoAsynchronously = getReporterInfoAsynchronously ?? defaultFeedbackSettings?.getReporterInfoAsynchronously
|
|
self.navigationBarStyle = navigationBarStyle
|
|
}
|
|
|
|
public init(
|
|
issueType: String? = nil,
|
|
issueComponents: [String]? = nil,
|
|
customFields: [String: AnyObject]? = nil,
|
|
navigationBarStyle: NavigationBarStyle = .defaultStyle,
|
|
reporterAvatarImage: CGImage? = nil,
|
|
reporterUsernameOrEmail: String? = nil,
|
|
getReporterInfoAsynchronously: ((@escaping (_ usernameOrEmail: String?, _ avatarImageURL: URL?) -> Void) -> Void)? = nil
|
|
) throws {
|
|
let target = try defaultFeedbackSettings?.JIRATarget ?? JMCTarget.createTargetFromJSONOnDisk()
|
|
|
|
self.init(
|
|
JIRATarget: target,
|
|
issueType: issueType,
|
|
issueComponents: issueComponents,
|
|
customFields: customFields,
|
|
navigationBarStyle: navigationBarStyle,
|
|
reporterAvatarImage: reporterAvatarImage,
|
|
reporterUsernameOrEmail: reporterUsernameOrEmail,
|
|
getReporterInfoAsynchronously: getReporterInfoAsynchronously
|
|
)
|
|
}
|
|
}
|
|
|
|
public enum JIRAIssueType: String {
|
|
case support = "Support"
|
|
case bug = "Bug"
|
|
case task = "Task"
|
|
case improvement = "Improvement"
|
|
case story = "Story"
|
|
case epic = "Epic"
|
|
}
|