WIP Fix AppBadge

This commit is contained in:
Kylmakalle 2025-07-04 16:23:15 +03:00
parent 9b8e109fda
commit fce69ba1cf
5 changed files with 24 additions and 50 deletions

View File

@ -0,0 +1,9 @@
filegroup(
name = "SGAppBadgeOffset",
srcs = glob([
"Sources/**/*.swift",
]),
visibility = [
"//visibility:public",
],
)

View File

@ -0,0 +1,9 @@
import Foundation
extension Window1 {
func sgAppBadgeOffset(_ defaultOffset: CGFloat) -> CGFloat {
var additionalOffset: CGFloat = 0.0
additionalOffset += 30.0
return defaultOffset + additionalOffset
}
}

View File

@ -1,9 +1,13 @@
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library") load("@build_bazel_rules_swift//swift:swift.bzl", "swift_library")
sgsrc = [
"//Swiftgram/SGAppBadgeOffset:SGAppBadgeOffset"
]
swift_library( swift_library(
name = "Display", name = "Display",
module_name = "Display", module_name = "Display",
srcs = glob([ srcs = sgsrc + glob([
"Source/**/*.swift", "Source/**/*.swift",
]), ]),
copts = [ copts = [

View File

@ -389,33 +389,3 @@ public enum DeviceMetrics: CaseIterable, Equatable {
return self.hasTopNotch || self.hasDynamicIsland return self.hasTopNotch || self.hasDynamicIsland
} }
} }
// MARK: Swifgram
public extension DeviceMetrics {
var deviceModelCode: String {
var systemInfo = utsname()
uname(&systemInfo)
let modelCode = withUnsafePointer(to: &systemInfo.machine) {
$0.withMemoryRebound(to: CChar.self, capacity: 1) {
ptr in String.init(validatingUTF8: ptr)
}
}
return modelCode ?? "unknown"
}
var modelHasDynamicIsland: Bool {
switch self.deviceModelCode {
case "iPhone15,2", // iPhone 14 Pro
"iPhone15,3", // iPhone 14 Pro Max
"iPhone15,4", // iPhone 15
"iPhone15,5", // iPhone 15 Plus
"iPhone16,1", // iPhone 15 Pro
"iPhone16,2": // iPhone 15 Pro Max
return true
default:
return false
}
}
}

View File

@ -1219,25 +1219,7 @@ public class Window1 {
if let image = self.badgeView.image { if let image = self.badgeView.image {
self.updateBadgeVisibility() self.updateBadgeVisibility()
// MARK: Swiftgram self.badgeView.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((self.windowLayout.size.width - image.size.width) / 2.0), y: self.sgAppBadgeOffset(5.0)), size: image.size)
var badgeOffset: CGFloat
if case self.deviceMetrics = DeviceMetrics.iPhone14ProZoomed {
badgeOffset = self.deviceMetrics.statusBarHeight - DeviceMetrics.iPhone14ProZoomed.statusBarHeight
if self.deviceMetrics.modelHasDynamicIsland {
badgeOffset += 3.0
}
} else if case self.deviceMetrics = DeviceMetrics.iPhone14ProMaxZoomed {
badgeOffset = self.deviceMetrics.statusBarHeight - DeviceMetrics.iPhone14ProMaxZoomed.statusBarHeight
if self.deviceMetrics.modelHasDynamicIsland {
badgeOffset += 3.0
}
} else {
badgeOffset = self.deviceMetrics.statusBarHeight - DeviceMetrics.iPhone13ProMax.statusBarHeight
}
if badgeOffset != 0 {
badgeOffset += 3.0 // Centering badge in status bar for Dynamic island devices
}
self.badgeView.frame = CGRect(origin: CGPoint(x: floorToScreenPixels((self.windowLayout.size.width - image.size.width) / 2.0), y: 5.0 + badgeOffset), size: image.size)
} }
} }
} }