ProgressHUDState.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // ProgressHUDState.swift
  3. // fiveConstant
  4. //
  5. // Created by 李建 on 2023/1/18.
  6. //
  7. import Foundation
  8. import AlertToast
  9. import SwiftUI
  10. class ProgressState: ObservableObject {
  11. static let manager = ProgressState()
  12. @Published var isNeedLogin: Bool = false
  13. @Published var showTabar: Bool = true
  14. }
  15. class HUD: ObservableObject {
  16. static let instance = HUD()
  17. @Published var isPresendted: Bool = false {
  18. didSet {
  19. startDispatchTime()
  20. }
  21. }
  22. var type: AlertToast.AlertType = .regular
  23. var displayMode: AlertToast.DisplayMode = .alert
  24. var title: String = ""
  25. private var isAnimating = false
  26. public static func show(title: String) {
  27. instance.title = title
  28. instance.type = .regular
  29. instance.isPresendted = true
  30. }
  31. public static func loading() {
  32. instance.type = .loading
  33. instance.isPresendted = true
  34. }
  35. public static func hide() {
  36. instance.isPresendted = false
  37. }
  38. private func startDispatchTime() {
  39. if isAnimating {
  40. return
  41. }
  42. isAnimating = true
  43. DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
  44. withAnimation {
  45. self.isPresendted = false
  46. self.isAnimating = false
  47. }
  48. }
  49. }
  50. }