Repository: getsentry/sentry

Issue:
iPhone model can not show properly
### Environment

SaaS (https://sentry.io/)

### Steps to Reproduce

Upload a message with the iPhone 15 series or newer.


### Expected Result

Show the iPhone model name.

### Actual Result

It displays the iPhone‘s internal device code instead of the model name.
<img width="537" alt="Screenshot 2024-04-10 at 8 32 45 PM" src="https://github.com/getsentry/sentry/assets/78807862/2d7458c6-aa19-4de0-950d-29149198267c">


### Product Area

Unknown

### Link

_No response_

### DSN

_No response_

### Version

_No response_


Discussion:
Assigning to @getsentry/support for [routing](https://open.sentry.io/triage/#2-route) ⏲️
Routing to @getsentry/product-owners-issues for [triage](https://develop.sentry.dev/processing-tickets/#3-triage) ⏲️

Resolving patch:
diff --git a/src/sentry/profiles/device.py b/src/sentry/profiles/device.py
--- a/src/sentry/profiles/device.py
+++ b/src/sentry/profiles/device.py
@@ -96,11 +96,14 @@ def get_platform(device_os_name: str, is_emulator: bool) -> Platform:
 IPADGEN7 = "iPad (7th gen)"
 IPADGEN8 = "iPad (8th gen)"
 IPADGEN9 = "iPad (9th gen)"
+IPADGEN10 = "iPad (10th gen)"
 
 IPADAIRGEN1 = "iPad Air (1st gen)"
 IPADAIR2 = "iPad Air 2"
 IPADAIRGEN3 = "iPad Air (3rd gen)"
 IPADAIRGEN4 = "iPad Air (4th gen)"
+IPADAIRGEN5 = "iPad Air (5th gen)"
+
 IPADPRO12GEN1 = "iPad Pro (12.9-inch, 1st gen)"
 IPADPRO9GEN1 = "iPad Pro (9.7-inch, 1st gen)"
 IPADPRO12GEN2 = "iPad Pro (12.9-inch, 2nd gen)"
@@ -110,7 +113,9 @@ def get_platform(device_os_name: str, is_emulator: bool) -> Platform:
 IPADPRO11GEN2 = "iPad Pro (11-inch, 2nd gen)"
 IPADPRO12GEN4 = "iPad Pro (12.9-inch, 4th gen)"
 IPADPRO11GEN3 = "iPad Pro (11-inch, 3rd gen)"
+IPADPRO11GEN4 = "iPad Pro (11-inch, 4th gen)"
 IPADPRO12GEN5 = "iPad Pro (12.9-inch, 5th gen)"
+IPADPRO12GEN6 = "iPad Pro (12.9-inch 6th gen)"
 
 IPADMINIGEN1 = "iPad mini (1st gen)"
 IPADMINI2 = "iPad mini 2"
@@ -183,6 +188,10 @@ def get_platform(device_os_name: str, is_emulator: bool) -> Platform:
     "iPhone14,8": "iPhone 14 Plus",
     "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",
     "iPod1,1": "iPod touch (1st gen)",
     "iPod2,1": "iPod touch (2nd gen)",
     "iPod3,1": "iPod touch (3rd gen)",
@@ -220,6 +229,8 @@ def get_platform(device_os_name: str, is_emulator: bool) -> Platform:
     "iPad11,4": IPADAIRGEN3,
     "iPad13,1": IPADAIRGEN4,
     "iPad13,2": IPADAIRGEN4,
+    "iPad13,16": IPADAIRGEN5,
+    "iPad13,17": IPADAIRGEN5,
     "iPad6,7": IPADPRO12GEN1,
     "iPad6,8": IPADPRO12GEN1,
     "iPad6,3": IPADPRO9GEN1,
@@ -261,8 +272,14 @@ def get_platform(device_os_name: str, is_emulator: bool) -> Platform:
     "iPad5,2": IPADMINI4,
     "iPad11,1": IPADMINIGEN5,
     "iPad11,2": IPADMINIGEN5,
+    "iPad13,18": IPADGEN10,
+    "iPad13,19": IPADGEN10,
     "iPad14,1": IPADMINIGEN6,
     "iPad14,2": IPADMINIGEN6,
+    "iPad14,3": IPADPRO11GEN4,
+    "iPad14,4": IPADPRO11GEN4,
+    "iPad14,5": IPADPRO12GEN6,
+    "iPad14,6": IPADPRO12GEN6,
     "Watch1,1": APPLEWATCHGEN1,
     "Watch1,2": APPLEWATCHGEN1,
     "Watch2,6": APPLEWATCHSERIES1,


Test patch: