Skip to content

Unify DeviceProfile Views#1917

Merged
LePips merged 10 commits intojellyfin:mainfrom
JPKribs:unifiedDeviceProfiles
Feb 27, 2026
Merged

Unify DeviceProfile Views#1917
LePips merged 10 commits intojellyfin:mainfrom
JPKribs:unifiedDeviceProfiles

Conversation

@JPKribs
Copy link
Member

@JPKribs JPKribs commented Feb 24, 2026

Summary

Merges the views for iOS and tvOS for Custom Device Profiles & Edit Custom Device Profile.

  • Adds a check to tvOS to prompt for Save if exiting the Edit Custom Device Profile without saving
  • Creates a .labeledContentStyle(.deviceProfile) instead of manually formatting this with VStacks
  • Cleans up some of the naming between DeviceProfile & CustomDeviceProfile to make it all more consistent and less wordy
  • When adding custom profiles on top of the default profiles, default profiles are now shown below them
  • To go from defaults profiles into the format we are using, I added a generic string? utility to go from a list,or,strings to [Type] where Raw Representable

Videos

iOS

Simulator.Screen.Recording.-.iPhone.-.2026-02-23.at.23.39.43.mov

tvOS

Simulator.Screen.Recording.-.Apple.TV.-.2026-02-23.at.23.44.55.mov

…. Add `onExitCommand` logic to stop tvOS closure without saving.
@JPKribs JPKribs added developer Alters the developer experience iOS Impacts iOS or iPadOS tvOS Impacts tvOS labels Feb 24, 2026
@JPKribs JPKribs marked this pull request as ready for review February 24, 2026 06:59
@JPKribs JPKribs requested a review from LePips February 24, 2026 06:59
@JPKribs
Copy link
Member Author

JPKribs commented Feb 24, 2026

There are two parts of this that might not be wanted:

  1. Showing the default profiles. I added this because I think it's useful information to have when adding profiles on top of the existing. This way you can see what's already in the device profiles so you don't accidentally recreate an existing profile. It's also just good information where someone might say "I want X codec support" and then they can see it already exists in the profiles. IMO, it was simple enough to add and I believe the context is valuable but I can also understand the argument that it's extra clutter.

  2. For default profiles, I am using ListRow. This is an older implementation where we're are using modifiers. Since I am not using the leading content, this is: ListRow {} content {...}. I would normally change this but I can see this is changed here: https://github.com/LePips/SwiftFin/blob/f465963433b4bf98ca3765d56dca3681a76cd17e/Shared/Components/ListRow.swift. I can steal this change for this PR if that's the way we want to take this. Or, if we don't want 1) with the default profiles, this part doesn't matter and we can ignore this until it's part of Posters, Libraries, Home #1752. The reason i am using the ListRow is that I wanted this to be focusable and consistent but these do not need to be buttons nor should they appear the same as buttons.

Let me know!

Otherwise, this should be a really simple copy from iOS and tvOS with some cleanup like moving to use the Chevron button instead of recreating this in our view and using labeled content styles instead of creating it for every usage manually.

@LePips LePips merged commit af0fd19 into jellyfin:main Feb 27, 2026
4 checks passed
@JPKribs JPKribs deleted the unifiedDeviceProfiles branch February 27, 2026 22:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

developer Alters the developer experience iOS Impacts iOS or iPadOS tvOS Impacts tvOS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants