Icons.swift 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import Foundation
  2. import UIKit
  3. enum Icon_: String, CaseIterable, Identifiable {
  4. case primary = "pod_colorful"
  5. case text = "iAPS"
  6. case podBlack = "podTemplateBlack"
  7. case popWhite = "podTemplateWhite"
  8. case cyan = "iAPS_Loop_Cyan_Text"
  9. case podPurple
  10. case catWithPod
  11. case catWithPodWhite = "catWithPodWhiteBG"
  12. case loopWhiteText = "iAPS_Loop_White_Text"
  13. case loopText = "iAPS_Loop_Text"
  14. case black = "iAPS_Black_Black"
  15. case clean = "iAPS_Clean"
  16. case purple = "iAPS_Purple"
  17. case glow = "iAPS_Glow_BG"
  18. case gray = "iAPS_Gray"
  19. case whiteAndGray = "iAPS_WhiteAndGray"
  20. case grayAndLoopNoButtons = "iAPS_NoButtons_Gray_White_BG"
  21. case purpleBG = "iAPS_Purple_BG"
  22. case whiteBG = "iAPS_White_BG"
  23. case loop = "iAPS_Loop"
  24. var id: String { rawValue }
  25. }
  26. class Icons: ObservableObject, Equatable {
  27. @Published var appIcon: Icon_ = .primary
  28. static func == (lhs: Icons, rhs: Icons) -> Bool {
  29. lhs.appIcon == rhs.appIcon
  30. }
  31. func setAlternateAppIcon(icon: Icon_) {
  32. let iconName: String? = (icon != .primary) ? icon.rawValue : nil
  33. guard UIApplication.shared.alternateIconName != iconName else { return }
  34. UIApplication.shared.setAlternateIconName(iconName) { error in
  35. if let error = error {
  36. print("Failed request to update the app’s icon: \(error)")
  37. }
  38. }
  39. appIcon = icon
  40. }
  41. init() {
  42. let iconName = UIApplication.shared.alternateIconName
  43. if iconName == nil {
  44. appIcon = .primary
  45. } else {
  46. appIcon = Icon_(rawValue: iconName!)!
  47. }
  48. }
  49. }