AccountCenterWindowController.swift 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. //
  2. // AccountCenterWindowController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by User-Tangchao on 2024/10/22.
  6. //
  7. import Cocoa
  8. let kAccountTokenKey = "AccountToken"
  9. let kTermsOfUseUrlString = "https://www.anyrecover.com/company/terms-conditions/"
  10. let kPrivacyPolicyUrlString = "https://www.anyrecover.com/company/privacy-policy/"
  11. let kResetpasswordUrlString = "https://account.anyrecover.com/reset-password/"
  12. let kCancelSubscriptionUrlString = "https://www.anyrecover.com/support/cancel-subscription/"
  13. let kPwdInputStrings = "!\"#$%&'()*+,-./:;<>=?@[\\]^_`{|}~0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
  14. class AccountCenterWindowController: NSWindowController {
  15. @IBOutlet weak var contentBox: NSBox!
  16. private lazy var rightDatas_: [String] = {
  17. return [NSLocalizedString("Handle PDF Documents with AI", comment: ""),
  18. NSLocalizedString("Unlimited file conversion", comment: ""),
  19. NSLocalizedString("PDF text and image editing", comment: ""),
  20. NSLocalizedString("Batch PDF processing", comment: ""),
  21. NSLocalizedString("Advanced PDF management", comment: ""),
  22. NSLocalizedString("PDF annotations", comment: ""),
  23. NSLocalizedString("Create&fill forms", comment: ""),
  24. NSLocalizedString("PDF Protect", comment: ""),
  25. NSLocalizedString("Advanced OCR technology", comment: "")]
  26. }()
  27. private var inputC_: AccountInputController?
  28. private var centerC: AccountCenterController?
  29. private lazy var closeButton_: NSButton = {
  30. let view = NSButton()
  31. view.isBordered = false
  32. view.title = ""
  33. return view
  34. }()
  35. override func windowDidLoad() {
  36. super.windowDidLoad()
  37. self.window?.appearance = NSAppearance(named: .aqua)
  38. self.contentBox.borderWidth = 0
  39. self.window?.contentView?.addSubview(self.closeButton_)
  40. self.closeButton_.km_add_right_constraint(constant: -10)
  41. self.closeButton_.km_add_top_constraint(constant: 10)
  42. self.closeButton_.km_add_size_constraint(size: .init(width: 24, height: 24))
  43. self.closeButton_.target = self
  44. self.closeButton_.action = #selector(_closeAction)
  45. self.closeButton_.image = NSImage(named: "KMImageNameAccountClose")
  46. // self.signIn()
  47. // self.loginIn()
  48. // self.productDatas()
  49. self.rightDatas()
  50. if let token = KMDataManager.ud_string(forKey: kAccountTokenKey), token.isEmpty == false {
  51. let header = ["Token" : token]
  52. KMHTTP.OEM_POST(urlString: kURLAPI_oemGetPermissions, parameter: nil, headers: header) { success, dataDict, err in
  53. if success == false {
  54. self.gotoLogin()
  55. return
  56. }
  57. let model = AccountRightModel(dict: dataDict ?? [:])
  58. self.gotoCenter(model: model, infoModel: nil)
  59. }
  60. } else {
  61. self.gotoSignin()
  62. }
  63. }
  64. func gotoLogin() {
  65. self.closeButton_.isHidden = false
  66. self.inputC_ = AccountInputController()
  67. self.inputC_?.rightDatas = self.rightDatas_
  68. self.contentBox.contentView = self.inputC_?.view
  69. self.inputC_?.gotoLogin()
  70. self.inputC_?.itemClick = { idx, params in
  71. guard let model = params.first as? AccountInfoModel else {
  72. return
  73. }
  74. if let data = model.token, data.isEmpty == false {
  75. KMDataManager.ud_set(data, forKey: kAccountTokenKey)
  76. }
  77. let state = self._isConnectionAvailable()
  78. if !state {
  79. self._showHud(msg: NSLocalizedString("Unable to connect to server, please check your connection.", comment: ""))
  80. return
  81. }
  82. let header = ["Token" : model.token ?? ""]
  83. KMHTTP.OEM_POST(urlString: kURLAPI_oemGetPermissions, parameter: nil, headers: header) { success, dataDict, err in
  84. if success == false {
  85. return
  86. }
  87. let rmodel = AccountRightModel(dict: dataDict ?? [:])
  88. self.gotoCenter(model: rmodel, infoModel: model)
  89. }
  90. }
  91. }
  92. func gotoSignin() {
  93. self.closeButton_.isHidden = false
  94. self.inputC_ = AccountInputController()
  95. self.contentBox.contentView = self.inputC_?.view
  96. self.inputC_?.goToSignIn()
  97. self.inputC_?.rightDatas = self.rightDatas_
  98. self.inputC_?.itemClick = { idx, params in
  99. guard let model = params.first as? AccountInfoModel else {
  100. return
  101. }
  102. if let data = model.token, data.isEmpty == false {
  103. KMDataManager.ud_set(data, forKey: kAccountTokenKey)
  104. }
  105. let state = self._isConnectionAvailable()
  106. if !state {
  107. self._showHud(msg: NSLocalizedString("Unable to connect to server, please check your connection.", comment: ""))
  108. return
  109. }
  110. let header = ["Token" : model.token ?? ""]
  111. KMHTTP.OEM_POST(urlString: kURLAPI_oemGetPermissions, parameter: nil, headers: header) { success, dataDict, err in
  112. if success == false {
  113. return
  114. }
  115. let rmodel = AccountRightModel(dict: dataDict ?? [:])
  116. self.gotoCenter(model: rmodel, infoModel: model)
  117. }
  118. }
  119. }
  120. func gotoCenter(model: AccountRightModel?, infoModel: AccountInfoModel?) {
  121. self.closeButton_.isHidden = true
  122. self.centerC = AccountCenterController()
  123. self.centerC?.rightDatas = self.rightDatas_
  124. self.centerC?.model = model
  125. self.centerC?.infoModel = infoModel
  126. self.contentBox.contentView = self.centerC?.view
  127. }
  128. func rightDatas() {
  129. let header = ["Token" : "7130d162c7533b5a51daefdd4faf17ea1729747785"]
  130. KMHTTP.OEM_POST(urlString: kURLAPI_oemGetPermissions, parameter: nil, headers: header) { success, dataDict, err in
  131. let model = AccountRightModel(dict: dataDict ?? [:])
  132. KMPrint("")
  133. }
  134. }
  135. func productDatas() {
  136. let header = ["Token" : "7130d162c7533b5a51daefdd4faf17ea1729747785"]
  137. KMHTTP.OEM_POST(urlString: kURLAPI_oemGetProductData, parameter: nil, headers: header) { success, dataDict, err in
  138. let array = dataDict?["list"] as? [Any]
  139. var datas: [ProductListModel] = []
  140. for data in array ?? [] {
  141. guard let dict = data as? [String : Any] else {
  142. continue
  143. }
  144. let model = ProductListModel(dict: dict)
  145. datas.append(model)
  146. }
  147. KMPrint("")
  148. }
  149. }
  150. func loginIn() {
  151. let params = ["email" : "aaaa1@qq.com", "password" : "e10adc3949ba59abbe56e057f20f883e", "device_code" : "weqwerwer23243435435wedsf"]
  152. KMHTTP.OEM_POST(urlString: kURLAPI_oemLogin, parameter: params, headers: nil) { success , dataDict, err in
  153. let model = AccountInfoModel(dict: dataDict ?? [:])
  154. KMPrint("")
  155. }
  156. }
  157. func signIn() {
  158. let params = ["email" : "aaaa5@qq.com", "password" : "e10adc3949ba59abbe56e057f20f883e", "device_code" : "weqwerwer23243435435wedsf"]
  159. KMHTTP.OEM_POST(urlString: kURLAPI_oemRegister, parameter: params, headers: nil) { success , dataDict, err in
  160. let model = AccountInfoModel(dict: dataDict ?? [:])
  161. KMPrint("")
  162. }
  163. }
  164. // MARK: - Private Methods
  165. @objc private func _closeAction() {
  166. self.km_quick_endSheet()
  167. }
  168. private func _isConnectionAvailable() -> Bool {
  169. if Reachability.forInternetConnection().currentReachabilityStatus().rawValue == 0 {
  170. return false
  171. }
  172. return true
  173. }
  174. private func _showHud(msg: String) {
  175. if let data = self.window?.contentView {
  176. // _ = CustomAlertView(message: msg, from: data, with: .black)
  177. CustomAlertView.alertView(message: msg, fromView: data, withStyle: .black)
  178. }
  179. }
  180. }