Commit Graph

2282 Commits

Author SHA1 Message Date
Ethan Pippin 4a63b52b17
Stateful - Set cleanup and `final` classes (#1465)
* cleanup

* Update Stateful.swift
2025-03-29 23:05:14 -06:00
Joe Kribs 16efcbefdc
Update players.md (#1454)
https://github.com/jellyfin/Swiftfin/pull/1453
2025-03-17 15:35:47 -04:00
Joe Kribs a0a20caf1b
[tvOS] "Native" Styled Menu Button (#1451)
* WIP

* Other Menu inits and AppSettingsView

* Linting & a touch of spacing.

* cleanup

* Init from CaseIterable

* User a Picker instead of just a ForEach

* Remove InlineEnumToggle.

* cleanup

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-03-17 12:22:35 -04:00
Quang 36be3cc43f
External display support (#1453) 2025-03-17 11:19:31 -04:00
Joe Kribs 0f1c8b42ec
[Meta] Library & Playback Documentation (#1450)
* Update players.md

Add a table for Track Selection as of 03/14/2025

* Create libraries.md

Library support
2025-03-16 20:07:52 -04:00
Joe Kribs e901317317
[iOS] Fix External Subtitle Selection (#1445)
* | Type          | Internal Subtitles | Internal Audio | External Subtitles | External Audio |
|---------------|-----------------|--------------------|----------------|----------------|
| Transcode     |               |                  |              |              |
| DirectPlay     |               |                  |              | *             |

* WIP - GetMasterHlsVideoPlaylistParameters

* WIP

* Cleanup unused code.

* Cleanup comments.

* Remove changes to GetMasterHlsVideoPlaylistParameters

* Change to use Max instead of a magic number.

* Update MediaStream.swift

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

* Update MediaStream.swift

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

* Update MediaStream.swift

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

* Update MediaStream.swift

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

* New and Improved.

* Ensure we are using the right audio track.

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-03-14 13:40:18 -04:00
Daniel Chick 1eef7c9ff5
[tvOS] Sign-In Flow - User Auto Time-Out (#1447)
* Rename extension

* Initial picker implementation

* Uncomment section

* present picker

* Present picker fullscreen

* layout improvements + cleanup

* picker improvements

* math fix + set to previous values

* fix

* comments

* compiler directive

* missed l10n

* fix package.resolved

---------

Co-authored-by: chickdan <=>
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-03-14 13:23:44 -04:00
Joe Kribs 890bf1fa31
[iOS & tvOS] Video Range Types (#1449)
* `VideoRangeType` "Extension" for now it's an enum until 10.10. Otherwise, done.

* Limit lines to 1 and variable width as needed.

* CodeFactor issue resolution

* AttributeViewModifier -> AttributeBadge

* change API

* `WrappingHStack`

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-03-14 13:01:23 -04:00
Joe Kribs 8f21860e5e
[tvOS] Season Selector Scrolling Bug (#1446)
* Ensure selectionViewModel is a valid season.

* Scolling issue

* Fix Scrolling! But fails to set button color...

* Move HStacks into their own folder.

* CollectionHStack

* SeasonHStack FINALLY done!

* ScrollToIndex NOT Element

* Remove refocus work

* Undo extra changes not for this PR

* Fix Episode Scrolling on iOS as well.

* Add the `.mask` in... Whatever that actually does??? Just trying to mirror the older version

* Linting

* Use playButtonItem instead

* Season ScrollTo

* Cleanup.

* Even more cleanup.

* Even more cleanup and comments

* LInting
2025-03-12 09:37:18 -04:00
Joe Kribs 718ea0f187
[tvOS] Episode Selector - State & Focus Handling (#1435)
* Catch empty episodes

* Linting.

* Mirror iOS more. Remove unused imports. Turn non-used cards into buttons to allow focus.

* Allow focusing on Empty / Error cards.

* Make ErrorCard Selectable

* cleanup

* Focusable Loading Card.

* Fall back to empty season.

* Last of the MacOS Catalyst stuff

* Force Unwrap.

* Don't force unwrap.

* Remove unneeded `focusedSection` from `EpisodeSelector`.

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-03-03 21:29:51 -07:00
Daniel Chick d2c5ac9985
[iOS] Fix Clipping Add User Button (#1441)
* Add what was removed

* tvos

---------

Co-authored-by: chickdan <=>
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-02-25 21:23:21 -07:00
Joe Kribs 35b72b3a5a
[iOS & tvOS] Use `AboutView` for Series Poster Routing (#1438)
* Move Series Button to the About Section IF the item is an episode. Otherwise, continue using that image as just an image. tvOS & iOS.

* use posterbutton

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-02-23 13:53:20 -05:00
Joe Kribs 137f0dbf13
[iOS & tvOS] Fix Version Selection (#1429)
* iOS + tvOS Versioning

* hasMultipleVersions

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

* v1

* Button Witdh to avoid overflow. Fix build issues.

* Let instead of Var.

* cleanup

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-02-20 00:02:11 -05:00
Joe Kribs c113c341bf
[tvOS] Mirror iOS Ratings + Attribute Settings (#1422)
* Copy + Paste + Settings

* Much bigger changes to allow attribute customization.

* wip

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-02-15 15:27:34 -07:00
Joe Kribs 846aabc868
[tvOS] ErrorViews - Creation (#1414)
* Button cleanup & errorViews

* Change the Sign Out button to be `ListRowButton`. Sets a better height value using `maxHeight` to ensure that it doesn't exceed the `ListRow` sizing.

* deleteUsersButton needs to be manually set back to 75

* wip

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-02-15 15:22:30 -07:00
Sam 6ee2b71cab
Make UnmaskSecureField respond to dynamic type (#1424)
* Make UnmaskSecureField respond to dynamic type

* use environment font

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-02-15 15:05:51 -07:00
Joe Kribs 0235793bc6
[iOS & tvOS] FilterViewModel - Cleanup (#1412)
* Filter Changes

* Use `viewModel.modifiedFilters` for tracking if the filter has been modified. Update the init and update. Hold only the modified filters in `modifiedFilters` instead of `(modifiedFilters, bool)` since that's just clunky and unnecessary.

* Reset button should be disabled when only THAT filter is non-default.

* ...

* PagingLIbraryViewModel.filterQueryTask is no longer in use since that should now be handled on the FilterViewModel

* fix merge

* cleanup

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-02-15 15:05:34 -07:00
Joe Kribs c934ac4219
[tvOS] Fix ItemType Libraries (#1423)
* Recursive on ItemType

This only really applies to tvOS.

* Cleanup

* setParentParameters DON'T set isRecursive unless .folder
2025-02-13 16:48:30 -07:00
samglt e21ca65109
Add existing localizations to Xcode project (#1417) 2025-02-07 14:35:22 -07:00
Daniel Chick 07c895ddba
[tvOS] App Settings & Splashscreen (#1419)
* Bring over iOS app settings

* Re-enable advanced settings menu option

* Conditionally show splash screen

* Disable app appearance setting

* cleanup

* File rename

* Change how version is displayed

* Disable app icon option due to not working

* comment

* Bring over signout interval section

* Enforce sign-out on close

* Revert change

* localizations

* wip

---------

Co-authored-by: chickdan <=>
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-02-06 20:59:18 -07:00
samglt c388ca2dec
[iOS] Show critic & community ratings alongside attributes (#1420) 2025-02-06 20:59:05 -07:00
samglt 98e4ae9917
[tvOS] Fix fresh tomato being shown for all rating values (#1421) 2025-02-06 19:35:58 -07:00
Joe Kribs 3ee2abec5c
[iOS & tvOS] ItemLibraryViewModel - Cleanup (#1411)
* Move ItemType to Filter

* Init but normally...

* filter on people?

* Default to easiest / least change solution.

* Reset `.collectionFolder`, `.folder`, and `.BaseItemPerson` in `PagingLibraryView` to have the default filters. This was originally in place. This Commit just ensures that iOS and tvOS have the same implementation.

* wip

* Update ItemLibraryViewModel.swift

* Update ItemLibraryViewModel.swift

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-02-02 12:17:46 -05:00
Joe Kribs 21cf7865c3
[Meta] Video Player Documentation - Move AV1 from Video to Container Section (#1416)
* [Meta] Video Player Documentation - Move AV1 from Video to Container Section

This should be under containers not video. Confusing since AV**i** vs AV**1**. Added a note for the Apple SOC that first added HWA AV1 decoding as this should correspond with AVKit's ability to use it.

Pre-AV1 Decoders, I tested, and AV1 works but is VERY choppy so defaulting this to disabled is still the right move!

* revisions

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-01-30 13:32:30 -05:00
Joe Kribs 35c39a8d0a
[tvOS] ItemTypeLibraryViewModel - Implement FilterViewModel (#1409)
* FilterViewModel only

* comments

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-01-26 14:24:24 -05:00
Joe Kribs c9ae01e792
[Bug] [iOS] Item Editor Photo Upload - Coordinator Doesn't Dismiss (#1410) 2025-01-25 19:17:03 -05:00
Joe Kribs 4ca788338d
[tvOS] PagingLibraryView - Mirror iOS "Hot Reload" Functionality (#1408)
* Update missing strings. Mirror iOS setting changes to make sure tvOS PagingLIbraryView updates with changes as well. Lay the groundwork for filtering.

* Revert back to rows over offset

* Reorder a bit.

* Move default layout to no values in closure. For whatever reason, I cannot do this to the non-defaults.

* 95% there

* Move `onChange`s to the `innerContent` to alleviate Type Checker issues

* All Value-less closures are moved with teh exception of viewModel.filterViewModel?.currentFilters

* Prepare for future letter picker location
2025-01-24 16:14:34 -05:00
Joe Kribs b0b604c4ad
[tvOS] Login Flow Cleanup - Second Pass (#1403)
* Background on Server User Signin. Button Sizing. More visible deletion notice. Menu ListView insets.

* wip

* Change Highlight. Move Add User Button. Remove Add User inline option.

* Take 2

* Undo user changes.

* Remove all changes.

* "selectServer" = "Select Server";

* Recommendations

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

* Update ServerDetailView.swift

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

* Update ServerDetailView.swift

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>

* build strings

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-01-23 22:25:08 -05:00
Joe Kribs 757ea4d475
[Meta] Re-Organize Admin Dashboard (#1401)
* Re-organize Admin Dashboard

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-01-22 20:05:33 -05:00
Daniel Chick b4c07bddfa
Refresh Server Info (#1402)
* Add function to update basic server info

* Add server info update in server check view model

* Update ServerCheckViewModel.swift

---------

Co-authored-by: chickdan <=>
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-01-22 19:07:00 -05:00
Greg C baf91164a9
Fixes #1368 Shrunken posters on iPad home screen (#1404) 2025-01-21 16:47:40 -05:00
Joe Kribs 553441d83e
[iOS] Media Item Menu - Edit Item Images (#1345)
* Good start but some missing items:

- Upload image isn't working
- Only a single image is shown per section. Need to make this the HCollection of all images for the group

* Upload still failing but now update and set are 2 different processes because I think that's better. Spacing on the add screen is still all wrong but we're getting closer

* ~70% Complete

TODO:

- Spacing for remote portrait images is wrong & cramped
- Upload image from file browser never works & produces 400 error
- Show all images for an item.imageType opposed to just the first
- Setting image works but produces a 400 error
- Error alert looks bad

* Merge with Main

* URL Changes

* Updating logic and confirmation screen

* Lots of changes:

Selecting a Remote image is now working without error and works consistently!

Upload a local file is still broken

Item types with multiple images is working as intended now!

Overriding an image on index doesn't seem to work but it doesn't work for Web either so........

UI is way more jank but the hard parts are getting solved!

* Breaking this even more with the hopes of a better tomorrow.

* Getting better?

* Refreshing is working but I might need to make this work mroe effiently...

* 90% There!

* Ability to cancel the update

* Still no luck uploading images?

* Stop reordering on deletion/addition

* 2025 disclaimers

* Uploading finally works!

* Functional but messy.

TODO:
- Figure out better resizing if too big?
- Upload from Photos
- Move upload logic to imageViewModel and make RemtoeImageViewModel PagingLibraryViewModel conformant
- Create a ImageInfoView for Selection & Deletion.

* Now conforms to PagingLIbraryViewModel but everything else is a mess

* Close!

* First no all appears

* Fix double pop/routerdismiss

* Uploading from Photos is (Finally) Ready!

* wip

* Reuse PhotoPicker and Crop code.

* 4/6 of the codefactor changes

* Pass around the URL NOT the UIImage

* Clean up ItemImageDetails types.

* Make sure the ImageView mirrors the real shape of the image. Posters should be uniform but this is the selection for the image so the dimensions are important to demonstrate.

* Rating Type label.

* Delete confirmation dialog.

* Remove double sizing. Remove Unused ViewModel. Change PhotoPicker to a checkmark instead a 1. Since there is only ever one picture selected, no need to count the images.

* Get the image URL as needed. No more Truples.  Localize ImageTypes.

* Remove attempt at ImageInfo Poster Comformance.

* Even more cleanup

* Delete vs Save flip

* Hide delete button

* Even more cleanup

* Fix tvOS build issues.

* Reduce delay & remove unused comment. Should finally be ready again.

* wip

* Update ItemImagesView.swift

* Event Only on upload failures.

* Remove unnecessary ViewModel's from tvOS.

* Add dismiss action to RemoteSearchResultView. While I am doing this here, fix it there.

* Move From Coordinator -> .Sheet. This fixes the popping issue / delay requirement!

* wip

* wip

* wip

* wip

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-01-20 16:17:35 -05:00
Joe Kribs 1530668042
[iOS & tvOS] Series Extras (#1398) 2025-01-16 19:52:12 -05:00
Daniel Chick f9ebebe6dd
[tvOS] Add pin prompt to sign-in screen (#1383)
* Add pin prompt to sign-in screen

* Bring over security views from iOS

* silence tvOS 17 warnings

* Add user profile and security views to routing

* Changes

* revert and remove commented code

* cleanup

* CodeFactor fixes

* Joe's Suggestions:

- Move UserProfileSettings to their own Coordinator
- Make Views Modal to better reflect existing items
- Fix CustomizeSettingsCoordinator (This is on me!)
- Change PINs to use SecureField
- Move all Settings View to use SplitFormWindowView to mirror existing Settings
- Use user profile image for SplitFormWindowView Icon
- Change Profile Security to use LearnMoreModal
- Use suggestion from https://forums.developer.apple.com/forums/thread/739545
- Tag Alert > TextFields with TODO so we can check this on tvOS 18

* Fix PIN for https://forums.developer.apple.com/forums/thread/739545 on SelectUserView

* Fix Build Issue.

* use user

---------

Co-authored-by: chickdan <=>
Co-authored-by: Joe <jpkribs@outlook.com>
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-01-09 15:48:58 -07:00
Joe Kribs a13f604be0
[iOS] Admin Dashboard - User Access Tags (#1377)
* Edit View. Still need to make an Add View

* Finished with EditPage. Need labels tho

* Deletion deletes TOO many records. Also, need to search existing tags

* Fin

* Fix merge issues

* Check for exisitng Access Tags before allowing saving

* 2025 Disclaimer / Build Fixes

* update

* Update EditServerUserAccessTagsView.swift

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-01-02 23:47:20 -07:00
Joe Kribs adec8de122
[Meta] 2025 Disclaimer (#1381) 2025-01-02 16:05:15 -07:00
Daniel Chick cd94142a8a
[tvOS] Delete User from User Selection Screen (#1359)
* Extract handlers into function

* Color Improvements to move away from UIColor

* Bring over edit user feature from iOS

* Fix UserGridButton overlay when editing

* Move advanced menu to be near server select menu

* Re-enable context menu

* Add bottom button bar

* hook up user deletion

* improvements

* Refactor buttons for highlight hover effect

* Pass in user count

* Don't cancel editing if delete alert is cancelled

* cleanup

* Pad bottom of buttons

* Cancel editing after user deletion

* Revert ServerSelectionMenu back to button

* Remove padding that pushed the server selection menu up too far

* Make delete button red to match iOS

* Update SelectUserView.swift

* workaround Menu layout issues

* Bring select/deselect all users behavior from iOS

* Fixes after merge with main

* Fix vertical focus

---------

Co-authored-by: chickdan <=>
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-31 14:19:23 -07:00
Joe Kribs 486995b0cf
[iOS] Media Item Menu - Identify Media Item (#1369)
* WIP

* All item types.

* V2: Functionally better. UI still weird

* Rework!

* Organization, new LoadingIcon, remove unnecessary components, and standardize: CancellableLoadingButton

* Organization & Static Method Re-Use.

* wip

* fix tvOS

* wip

* localize

* Update RemoteSearchResultRow.swift

* Update Localizable.strings

* Update RemoteSearchResultRow.swift

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-31 14:16:34 -07:00
Joe Kribs 23beb088da
[iOS] Admin Dashboard - User Profiles (#1328)
* Make user profile more generic. Still need to make it work for the reset image / other stuff like delete & username.

* Username Changing and PFP deletion.

* Functional, refreshing, and good to go!

* Clean up localizations

* Migrate [UserDto] -> IdentifiedArrayOf<UserDto>

* Solve "Username should probably be at the top of this section."

* allow notification filter

* WIP:

Created `UserProfileHeroImage` but I haven't used it anywhere.

* Centralize UserProfileHeroImages

* Rename UserProfileImages

* Fix Merge Issue?

* Move to UserProfileImage

* Merge with Main

* Fix Merge?

* Clear the cache on update.

* Delete duplicate `UserProfileImage`

* wip

* wip

* Update ImagePipeline.swift

* fix tvOS build issue and update comment to be more accurate

* clean up

* fix string

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-28 22:35:10 -07:00
Daniel Chick 2f13093cc0
[iOS] Select all Users When Editing (#1373) 2024-12-23 11:43:18 -07:00
Joe Kribs af602d3d98
[Meta] Automatic String Organization (#1372)
* Automate String Organization.

* Comment the script so it's easier to maintain? Or messier?

* Linting post comments

* Rename ShellScript -> Alphabetize Strings for tvOS

* use swift regex, add error messages, clean up separators

* Only search for ./Translations/en.lproj/Localizable.strings

* Purge Unused Strings Script

* Organize Translation Scripts into a Folder. Update references at the project level.

* clean up

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-21 00:01:11 -07:00
Joe Kribs a6bd093960
[iOS & tvOS] Unused Localization Cleanup (#1362) 2024-12-20 13:05:57 -07:00
Joe Kribs d580e8dcfd
[tvOS] SelectServerView Change to Menu (#1363)
* Selection & Fix ServerSelectionMenu padding

* ButtonStyle

* Move from `FullScreenMenu` to just use `Menu` Remove usages of `FullScreenMenu` since it's no longer used anywhere else.

* Remove unused `FullScreenMenu`

* Remove unused `SelectServerView` since it's now in the `ServerSelectionMenu`

* Selection menu fixes

* Focus issues

* clean up

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-19 15:38:27 -07:00
Joe Kribs 97affd198e
[tvOS] Update ConnectToServerView & UserSignInView (#1365)
* UserSignInView and ConnectToServerView Cleanup

* Public User icon changes, move the Jellyfin 'NavigationBar' to a `View Modifier` for easier re-use.

* A better solution

* isLoading == isLoading NOT isLoading == true

* clean up

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-19 14:30:01 -07:00
Ethan Pippin 7685048258
Trim Fastlane Options (#1367) 2024-12-17 14:58:44 -07:00
Ethan Pippin fe9a6375aa
Update Fastlane Runner (#1366) 2024-12-17 13:54:51 -07:00
Joe Kribs b0583125f7
[iOS & tvOS] Localize Existing Strings (#1361) 2024-12-13 12:40:37 -07:00
Joe Kribs d001a96d6c
[iOS] Admin Dashboard - User Access Schedules (#1358)
* Initial layout. No Add functionality yet.

* Cleanup ServerTasks. Get Access Schedules Fixed

* duplicate schedule warning, cleanup

* localize

* cleanup

* don't move to Title Case

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-12 13:24:34 -07:00
Joe Kribs ba5c037ece
[iOS] Admin Dashboard - Parental Ratings (#1353)
* Labels and Max Parental Rating

* Parental Ratings

* UnratedItem.displayTitle

* Linting Fixes

* Localizations, LearnMore, & cleaner grouping

* Strings.swift

* Review changes + Age Groups change

* cleanup, use SeparatorVStack in LearnMoreButton

* fix colors

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-11 13:33:44 -07:00
Joe Kribs 8f05169097
[iOS & tvOS] Error Cleanup (#1357)
* Error Cleanup

* Localize everything!

* cleanup

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-10 23:23:05 -07:00