Icons.swift 1.7 KB

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