Icons.swift 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import Foundation
  2. import UIKit
  3. enum Icon_: String, CaseIterable, Identifiable {
  4. case primary = "oiapsBlack"
  5. case oiAPSWhiteShadow
  6. case oiapsColorBG
  7. case oiapsWhite
  8. case oiaps3D
  9. case wilford = "diabeetus"
  10. case catWithPod
  11. case catWithPodWhite = "catWithPodWhiteBG"
  12. case loop = "OiAPS_Loop"
  13. var id: String { rawValue }
  14. }
  15. class Icons: ObservableObject, Equatable {
  16. @Published var appIcon: Icon_ = .primary
  17. static func == (lhs: Icons, rhs: Icons) -> Bool {
  18. lhs.appIcon == rhs.appIcon
  19. }
  20. func setAlternateAppIcon(icon: Icon_) {
  21. let iconName: String? = (icon != .primary) ? icon.rawValue : nil
  22. guard UIApplication.shared.alternateIconName != iconName else { return }
  23. UIApplication.shared.setAlternateIconName(iconName) { error in
  24. if let error = error {
  25. print("Failed request to update the app’s icon: \(error)")
  26. }
  27. }
  28. appIcon = icon
  29. }
  30. init() {
  31. let iconName = UIApplication.shared.alternateIconName
  32. if iconName == nil {
  33. appIcon = .primary
  34. } else {
  35. appIcon = Icon_(rawValue: iconName!)!
  36. }
  37. }
  38. }