Commit Graph

257 Commits

Author SHA1 Message Date
Ashik K 76453fe0ab Update bundle identifier to org.ashik.jellypig and fix SwiftGen script
Changes:
- Update bundle identifier from org.jellyfin.swiftfin to org.ashik.jellypig
  - Updated in project.pbxproj (4 occurrences)
  - Updated in LogManager.swift (logger label)
  - Updated in DataCache.swift (cache paths)
- Fix SwiftGen build script to skip gracefully without error
  - Changed "error:" to "note:" to prevent Xcode build errors
  - Script now exits cleanly when SwiftGen not installed (English-only fork)

This allows the app to be signed with a personal Apple Developer account
and built successfully without SwiftGen dependency.
2025-10-17 11:38:51 +02:00
Ashik K 9a78115a93 Add channel support and debug logging for Xtream content display
- Add .channel to BaseItemKind.supportedCases for proper filtering
- Implement channel API routing in ItemLibraryViewModel
- Add comprehensive debug logging to track API calls and filtering
- Support channels in MediaViewModel library views
- Fix channel items not appearing in media libraries

This enables Xtream plugin channels (VOD/Series) to display correctly
in jellypig tvOS. Channels now use proper /Channels API endpoints
instead of falling back to regular /Items API.

Related to ongoing fix for Xtream content media display.
2025-10-17 10:49:20 +02:00
Joe Kribs e43efdce04
Default to Recursive mirroring prior to #1495. Resolves: https://github.com/jellyfin/Swiftfin/issues/1557 (#1558) 2025-06-05 13:04:51 -06:00
Quang c1563e52d3
Played/Unplayed status for "Collection" and "TV Shows" (#1495)
* off recursive

* pr feedback

* Cleanup

Instantiate the collectionType in the `if let` since failure to cast `as? BaseItemDto` should count as false as well. Only set `parameters.isRecursive` once in if/else opposed to if -> override.

* wip

* fix recursive and item kinds

* rename, fix folders

---------

Co-authored-by: Quang <quang.ha@a2:3c:68:56:26:8d.home>
Co-authored-by: Joe <jpkribs@outlook.com>
Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
Co-authored-by: Quang <quang.ha@QrM3P.local>
2025-06-03 15:42:11 -06:00
lostb1t 413477ae22
optimize: Send media source id to playback info (#1546) 2025-05-26 20:20:00 -04:00
Ethan Pippin 8be5df69b0
Cleanup `ItemView`s (#1543)
* wip

* wip

* Update ItemView.swift

* cleanup, fix images

* cleanup

* Update Package.resolved

* Update Localizable.strings
2025-05-20 22:15:34 -06:00
Joe Kribs 6700ce969c
Complete Collections' `ItemView` (#1500)
* WIP

* Remove Divider

* self deprecation message

* `OrderedDictionary<BaseItemKind, [BaseItemDto]>`

* Localization fun

* cleanup

* Remove play button items & order by BaseItemKind.

* Fix AttributesHStack on iPad and make sure they align to the correct side. Looks jarring on Collections since Collections are often more limited on AttributesHStack items.

* Localization fix

* cleanup

* cleanup

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-05-17 11:34:04 -04:00
Rasko 103982f6e7
Implement localization for hardcoded strings (#1510)
* first string

* add a bunch of localization

* more hardcode to localization

* small changes for two strings

* fix space formatting

* Update Localizable.strings

Put the localizations back in. Don't know why this changes anything but 🤷‍♂️

* Fix encoding

Why???

Also, missing ;

* implement requested changes

---------

Co-authored-by: Joe Kribs <jpkribs@outlook.com>
2025-05-02 13:04:34 -04:00
Ethan Pippin 2b8e347a96
move to macro (#1512) 2025-04-24 12:31:34 -06:00
Joe Kribs a3dab2e165
[iOS & tvOS] Cleanup Permission Validation (#1499)
* Move permissions to centralized spot

* Move `identifiableTypes` to `BaseItemKind`. Use `showEditMenu`

* Cleanup showMenu options for iOS and tvOS. Metadata allows Subtitle, Lyrics, and Collection edits as well.

* Comment out Lyrics and Subtitles with a TODO for when they are available.

* Update BaseItemKind.swift

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

* Review Revisions

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-04-24 12:06:18 -04:00
Sam 7a9bcc4d2d
Explicitly request (transparent) png logos (#1507) 2025-04-22 15:51:19 -04:00
Joe Kribs a2e8076f98
[iOS] Replace Gear Icon with User Icon Only (#1497)
* Resolves Gear showing through transparent user icons and defaults user icon to the user placeholder instead of the gear. Mirrors Jellyfin-Web's behavior.

* wip

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-04-19 17:07:05 -04:00
Sam 48cf179691
Round corners with RoundedRect when rounding all corners (#1504) 2025-04-19 15:19:18 -04:00
Joe Kribs d4330f130b
[iOS] Admin Dashboard - User Activity (#1485)
* Very Very WIP

* Details page.

TODOs:

- Duplicate ViewModels are initialized.
- Routing Cleanup
- Localizations for fields
- Get Played Item Details (See ActiveSessionDetails)
- Move all details to ActivityDetailsViewModel for Users & Items
- Localizations for enums
- Enum the types if possible

* Details View complete. TODO:

- Filters
- Default with No Filters

* Ready

* Fix localization

* cleanup

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-04-13 00:42:48 -04:00
Ethan Pippin cfc0105dc7
cleanup (#1484) 2025-04-07 09:08:54 -04:00
Joe Kribs 0025422634
[iOS & tvOS] Upgrade SDK to 10.10 (#1463)
* Buildable!

* Update file names.

* Default sort to sort name NOT name.

* SessionInfoDto vs SessionInfo

* Targetting

* Fix many invalid `ItemSortBy` existing. Will need to revisit later to see which can still be used!

* ExtraTypes Patch.

* Move from Binding to OnChange. Tested and Working.

* Update README.md

Update README to use 10.10.6. Bumped up from 10.8.13

* Update to Main on https://github.com/jellyfin/jellyfin-sdk-swift.git

* Now using https://github.com/jellyfin/jellyfin-sdk-swift.git again!

* Paths.getUserViews() userId moved to parameters

* Fix ViewModels where -Dto suffixes were removed by https://github.com/jellyfin/Swiftfin/pull/1465 auto-merge.

* SupportedCaseIterable

* tvOS supportedCases fixes for build issue.

* cleanup

* update API to 0.5.1 and correct VideoRangeTypes.

* Remove deviceProfile.responseProfiles = videoPlayer.responseProfiles

* Second to last adjustment:
Resolved: // TODO: 10.10 - Filter to only valid SortBy's for each BaseItemKind.
Last outstanding item: // TODO: 10.10 - What should authenticationProviderID & passwordResetProviderID be?

* Trailers itemID must precede userID

* Force User Policy to exist.

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-04-06 23:42:47 -04:00
Ethan Pippin 0845545417
Clean Up `SelectUserView` (#1482)
* cleanup

* fix adaptive layout
2025-04-06 21:58:47 -04:00
Glenn Hevey e6cc848138
[tvOS] Move AddUserButton to the bottom bar of Select User View (#1468)
* Added add user button to select user bottom bar

* Replaced AddUserButton with NoUserView

This commit removes the AddUserButton as it is no longer required.
Also when no user is logged in the GridView shows a new NoUserView

* Added multi server support

- When no user is logged in. Grid view shows the original AddUserButton.
- When there is a logged in user AddUserButton is replaced with AddUserBottomButton
- AddUserBottomButton will show a menu when in all server mode (just like AddUserbutton)
- Removed NoUserView as it isn't required anymore
- changed bottom bar layout to  allow for a larger service selection button

* cleaned up AddUserBottomButton

* cleaned up AddUserBottomButton

fixed formatting

* cleanup

* fix conflict

* cleaned up unused localisation

* cleanup

* removed debug background

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-04-06 16:51:44 -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
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 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 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 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 a6bd093960
[iOS & tvOS] Unused Localization Cleanup (#1362) 2024-12-20 13:05:57 -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 548d35b19e
[tvOS] Media Item Menu - Refresh / Delete Items (#1348)
* Mirror tvOS to iOS

* Fix router dismiss. Remove redundent viewModel.refresh from itemView

* reset dev team info

* View Modifier and ViewModel cleanup

* Remove testing comments / events

* Cleanup `.errorMessage($error)`

* Cleanup all viewModel.states for item editing, add errorViews if the data fails to load, and add errorMessage on failed events.

MARK sections: Var/Func always unless only Body and Var/Lets only if there are several of varying types / functions.
2024-12-10 13:37:22 -07:00
Ethan Pippin bbfa944b52
Fix optional ID case for libraries (#1352) 2024-12-09 17:18:13 -07:00
Ethan Pippin c8acd780be
Static Notification Payloads, Move more to `IdentifiedArray` (#1349)
* wip

* wip

* wip

* wip

* clean up

* clean up

* Update VideoPlayerManager.swift

* clean up
2024-12-08 23:57:16 -07:00
Joe Kribs a3d84a958f
[iOS] Media Item Menu - Edit Arrays (People, Genres, Studios, & Tags) (#1336)
* Cleanup / Genre & Tag Management

* Move searching to a backgroundState. Fix the font Color when bulk editing tags / genres should be secondary when editing & not selected

* Cleanup

* Now that cancelling is handled better this should prevent the issue where the suggestions fails to update on a letter entry

* Change from using an event for searchResults to using a published searchResults var

* Moved all logic to a local list where all genres/tags are populated on refresh then filterd locally instead of calling the server for changes.

* Inheritance

* Split metadata from components then alphabetize. Also, fix but where you can't add a people

* People & Permissions

* Functional but dirty. TODO: Cleanup + Trie? Trei?

* nil coalescing operator is only evaluated if the lhs is nil, coalescing operator with nil as rhs is redundant

* TODO: Search improvements & Delay search on name change

* Cleanup & reordering

* Debouncing

* Trie implementation

* Permissions Cleanup Squeezing in: https://github.com/jellyfin/jellyfin-web/issues/6361

* enhance Trie

* cleanup

* cleanup

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-06 15:22:11 -07:00
Joe Kribs 2ac9283dfa
[iOS] Admin Dashboard - Media Access / Deletion Settings (#1333)
* ServerUserAdminViewModel cleanup & testing. ServerUserAccessView.

* Change the enableAllLibraries to use the binding extensions

* Use coalesce for enableAllFolders & enableContentDeletion

* use contains binding

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-12-02 22:54:33 -07:00
Joe Kribs da40f6a3b5
[iOS] Media Item Menu | Edit Metadata (#1323)
* Playback Quality - Learn More

* TODO: Fix leading not working on second line.

* Remove layoutDirection.

* Implement for tvOS. Slightly different spacing.

* VStack

* WIP - tvOS Implementaiton. SUBJECT TO CHANGE / ELIMINATION.

* Background Icon & formatting

* wip

* Review Changes. Remove unused Strings, clean up comments.

* Remove duplicate items used for testing

* Remove tvOS scrollIfLargerThanContainer for now.

* Edit Text-based Metadata

* ViewModel Cleanup

* use binding extensions

* Huge overhaul:

- Fix the notification when metadata was updated to work with 100% consistency
- Flip the locking to be true -> lock like server
- Redo the whole itemEditorViewModel to be more in-line with other viewModels | also fixes iPad weirdness
- Use itemViewModel for the edit view so I can just reuse those existing notifications instead of recreating the wheel
- More human dates for people - Date of death instead of "End date" (yikes)

* String fixes & overview size

* Fix build issues & String cleanup

* fix overview sizing, cleanup

* itemMetadataWasEdited -> temMetadataDidChange

* Creation of the NavigationBarMenuButtonModifier for an "ellipsis.circle" menu object in the toolbar. Makes it easier to ensure that this format looks the same throughout.

* Custom vs Official Rating + Menu Button Label change

* Menu button spacing and groundwork for other menu items (canDownload) since we already have the bool available. Currently disabled.

* Linting

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-11-30 23:56:49 -07:00
Joe Kribs b9ac50c164
[iOS] Admin Dashboard - User Permissions (#1313)
* WIP

* WIP

* Localization and better planning. Remove the Username as this will end up in another section. Updated planning here: https://github.com/jellyfin/Swiftfin/discussions/1283 | 5 more views required!

* Initializing an optional variable with nil is redundant line

* Remove Live TV since that will go in another section

* Cleanup Coordinator / Merge with Main

* Remove all 'Allows' from strings

* Fix Merge Issues

* Use CaseIterablePicker, Binding.map

* BackgroundState == updating, change all of the buttons to visible when custom by process of elimination opposed to the default custom value. Make all of the input fields use temp values to make it less jarring.

* Update SessionsSection.swift

* Learn more!

* Validate > 0, don't allow inputs to be less than 1 and reset tempValues when the enum is updated.

* use new binding extensions

* String fixes

* Don't test against adminDefault for users or userDefault for admins.

* Linting indentation

* Default vs UserDefault + no more reason to have temporary variables.

* cleanup

* format

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-11-27 11:22:37 -07:00
Joe Kribs 994e99d141
[iOS] Playback Quality - Learn More (#1316)
* Playback Quality - Learn More

* TODO: Fix leading not working on second line.

* Remove layoutDirection.

* Implement for tvOS. Slightly different spacing.

* VStack

* WIP - tvOS Implementaiton. SUBJECT TO CHANGE / ELIMINATION.

* Background Icon & formatting

* wip

* Review Changes. Remove unused Strings, clean up comments.

* Remove duplicate items used for testing

* Remove tvOS scrollIfLargerThanContainer for now.

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-11-21 13:47:11 -07:00
Joe e0990e321a
[iOS] Admin Dashboard - Users (#1287) 2024-10-31 15:56:00 -06:00
Daniel Chick 9e119017db
Project Settings Changes (#1297)
* Add compiler flag for long type checking warning

* duplicate file references.

* Reduce expression complexity

* Replace deprecated SwiftLint rule

* Bump SwiftFormat version

* Bump Swift version of SwiftLint
2024-10-31 13:18:19 -06:00
Daniel Chick fed9c654ef
Resolve some todos (#1295)
* Partially resolve color todo

* Update localizations for quick connect steps. use bulleted list

* Same change for tvos

* Remove padding2 modifier

* Localisation
2024-10-29 11:17:56 -06:00
Joe c46ee13dbc
[iOS] Admin Dashboard - Add/Delete Task Triggers (#1276)
* All Working. TODO: Figure out why TimeInterval crashes Swiftfin if I select 'Cancel'

* Cleanup. Kind of a typeAlias but not really? Fixed the minute crash, I was make a recursive calc. All good now. Make sure temp values default to existing value at startup

* Manual Run action from Edit View

* Issues resolved.

* Labels / soft merge with Main

* Utilize events to print a success/failure message for when there is an attempted change with a TaskTrigger.

* Fix label wrong value & remove TODO for completed item.

* Fix all the merge issues.

* wip

* wip

* localize

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-10-23 16:30:12 -06:00
Joe a04f97e1ba
[iOS] Admin Dashboard - Device Management (#1277)
* Split out Devices Logic - Ready to go!

* Review Items + Reworking the deleteDevices logic to all use the same deleteDevice core + deleteDevices. Delete All Devices now just uses the more generic deleteDevices

* Allow Filtering on UserID for later usage on UserDetailView.

* Fully remove DeleteAll action in favor of Delete Devices. Change view to pass in the viewModel.devices as a 'Delete All' function

* DeviceDetailsView

* Section Split out, Localization, and cleanup.

* I guess I missed there on first upload.

* Initial Select All / Delete Devices logic. Checkbox options on the list. Hopefully this is good.

* Initial Review Item!

* Custom Device Name is now a field. Change DevicesViewModel to Eventful to capture updates

* Revised Device Interaction Buttons

* Remove unused Label.

* Make DeviceRow mirror UserRow. UpdateDevicesView to have DeleteButton when in EditMode. Also, it's EDITMODE not SELECTMODE... Finally, make sure the SelectedDevice and SelectedDevices are both empty if the user tries to delete themselves and fails. Change how the single device delete works to confirm deleting from an array still works as needed.

* wip

* Review Changes: 61b3716239

* Merge issues + testing again to make sure. Checks out.

* wip

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-10-21 15:10:25 -06:00
Daniel Chick 11d6907735
Fix: Missing Chapters (#1281) 2024-10-19 15:07:31 -06:00
Joe 50e0cfef73
[iOS] Admin Dashboard - Active Devices Icons (#1275)
* Add Device images & Reference using the Enum as a filler if the NowPlayingItem is Nil

* Localize DeviceTypes.DisplayTitles

* Review changes. Last potential TODO: Image: ImageResource might not be the correct format

* DeviceType is needed to build tvOS

* Mirror Jellyfin-Blue-Blob for SVG configuration. Use ImageResource for the Device/Client Images

* Merge missing }

* Don't recreate the ImageResource since it's already generated.

* New webOS logo! Fix tvOS not having the new logos

* use if let, implicit self

* use secondary system fill for other

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-10-15 21:34:38 -06:00
Joe 8ae55dc57b
[iOS] Admin Dashboard - Active Sessions Play Method Fix (#1272)
* Fixes. But is this right?

* Ensure there IS an item playing.

* https://github.com/jellyfin/Swiftfin/pull/1272#discussion_r1801713951

* Fix the missing labels after merging with Main.
2024-10-15 16:04:32 -06:00
Joe 2bda693143
Generic Button to Input from an Alert (#1273)
* Creation of an Alert Input Button based on the Chevron Button.

* Only one button required for both iOS and tvOS

* wip

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2024-10-15 00:42:42 -06:00