KMNBetaFeedbackManager.swift 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. //
  2. // KMNBetaFeedbackManager.swift
  3. // PDF Reader Pro Beta
  4. //
  5. // Created by kdanmobile on 2025/3/3.
  6. //
  7. import Cocoa
  8. class KMNBetaFeedbackManager: NSObject {
  9. static let defalutManager = KMNBetaFeedbackManager()
  10. public var isSupportOpenApp = false
  11. private var _isHaveFeedback: Bool = false
  12. public var isHaveFeedback: Bool {
  13. get {
  14. if KMMemberInfo.shared.isLogin {
  15. return _isHaveFeedback
  16. } else {
  17. return false
  18. }
  19. }
  20. set {
  21. _isHaveFeedback = newValue
  22. }
  23. }
  24. private var isHaveFeedbackRequested = false
  25. func betaConfigAction(complete: @escaping KMMemberCenterComplete) {
  26. if KMMemberCenterManager.manager.isConnectionAvailable() == false {
  27. let alert = NSAlert()
  28. alert.alertStyle = .critical
  29. alert.messageText = KMLocalizedString("Error Information", comment: "")
  30. alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
  31. alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
  32. alert.runModal()
  33. complete(false, nil)
  34. return
  35. }
  36. let urlString = KMMemberCenterConfig().activityBaseURL() + kURLAPI_memberSystem_beta_settings
  37. KMRequestServer.requestServer.request(urlString: urlString, method: .get, params: nil) { requestSerializer in
  38. } completion: { task, responseObject, error in
  39. var dic: NSDictionary = [:]
  40. if error == nil, let responseObject = responseObject as? NSDictionary {
  41. dic = responseObject
  42. } else {
  43. var info = responseObject
  44. if let error = error {
  45. if let data = error.userInfo["com.alamofire.serialization.response.error.data"] as? Data {
  46. info = try? JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? NSDictionary
  47. }
  48. }
  49. dic = (info as? NSDictionary) ?? [:]
  50. }
  51. let code: Int = dic["code"] as? Int ?? 0
  52. var isValid: Bool = false
  53. if let result = dic["result"] as? NSDictionary {
  54. isValid = result["isValid"] as? Bool ?? false
  55. }
  56. let message: String = dic["msg"] as? String ?? ""
  57. self.isSupportOpenApp = isValid
  58. let result = KMMemberCenterResult(code: code, msg: message, result: isValid)
  59. if code == 200 {
  60. complete(true, result)
  61. } else {
  62. complete(false, result)
  63. }
  64. }
  65. }
  66. func havingFeekbackAction(complete: @escaping KMMemberCenterComplete) {
  67. if KMMemberCenterManager.manager.isConnectionAvailable() == false {
  68. let alert = NSAlert()
  69. alert.alertStyle = .critical
  70. alert.messageText = KMLocalizedString("Error Information", comment: "")
  71. alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
  72. alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
  73. alert.runModal()
  74. complete(false, nil)
  75. return
  76. }
  77. if(isHaveFeedbackRequested) {
  78. complete(true,nil)
  79. }
  80. KMRequestServer.Member_POST(url: kURLAPI_memberSystem_beta_haveFeedback, params: nil) { success, resultModel, error in
  81. if(success) {
  82. self._isHaveFeedback = resultModel?.result ?? false
  83. self.isHaveFeedbackRequested = true
  84. complete(true, nil)
  85. } else {
  86. complete(false, nil)
  87. }
  88. }
  89. }
  90. func feekbackAction(filePaths: [String],content:String,complete: @escaping KMMemberCenterComplete) {
  91. if filePaths.count <= 0 || content.isEmpty == true {
  92. return
  93. }
  94. if KMMemberCenterManager.manager.isConnectionAvailable() == false {
  95. let alert = NSAlert()
  96. alert.alertStyle = .critical
  97. alert.messageText = KMLocalizedString("Error Information", comment: "")
  98. alert.informativeText = KMLocalizedString("Please make sure your internet connection is available.", comment: "")
  99. alert.addButton(withTitle: KMLocalizedString("OK", comment: ""))
  100. alert.runModal()
  101. return
  102. }
  103. var fileDatas: [Data] = []
  104. for filePath in filePaths {
  105. if let fileData = FileManager.default.contents(atPath: filePath) {
  106. fileDatas.append(fileData)
  107. }
  108. }
  109. let (major, minor, bugFix) = KMTools.getSystemVersion()
  110. let versionInfoString = "\(KMTools.getRawSystemInfo()) - \(major).\(minor).\(bugFix)"
  111. let params: [String : Any] = [
  112. "version" : versionInfoString,
  113. "content" : content,
  114. "files[]" : fileDatas,
  115. "email" : KMMemberInfo.shared.userEmail]
  116. KMRequestServer.Member_POST(url: kURLAPI_memberSystem_beta_feedbackSubmit, params: params) { success, resultModel, error in
  117. }
  118. }
  119. }