Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

User/Server Sign In Redesign #1045

Merged
merged 81 commits into from
May 15, 2024
Merged

Conversation

LePips
Copy link
Member

@LePips LePips commented Apr 24, 2024

This actually turned into a very large refactor and I also implemented more features so that I don't have to look at this area again for a while. However, there is still a lot that could be done as cleanup.


Redesign

The entire user/server connection flow has been redesigned. Instead of separate "screens" for the server list, user list, server connection, and user sign in, everything is now rooted into a single view for user selection.

Preview
Select User Select Server Connect To Server
User Sign In App Settings

Things don't look too much different, but this actually required a lot of work especially since I had the desire for the an feature of listing all connected users on the device. I have come to like this new flow since it made some other designs more simple, like not requiring the splash screen on the user sign in view, since everything is now a sheet presentation. However, I'm not entirely final on how the server selection works with a Menu. I went back and forth for a while between that and a sheet presentation but I'll have to think about it more. The switch wouldn't be much work.

App Settings

The settings view accessible from here are settings meant for the app, and not necessarily settings for users while signed-in. This will receive some more work when I get to the Super User feature which will allow locked-down control of local device settings.

Other highlights

  • display users in a list
  • single or multi-user deletion
  • the grid view will be static until enough users are added to fill the screen where it will then scroll
  • the grid view will position the last row of items to be centered. This is most noticeable on iPads with many users.
  • background splash screen
  • allow sign out after some time
  • allow sign out after force close
  • allow pin or device authentication to sign into a user
  • user settings are now per-user and not shared
    • sadly I'm not performing a migration for this, so settings will be defaulted
  • nicer animations when signing in and switching users
  • when launching the app, if any database or other migrations need to be performed it will go to a brief loading screen
    • there will be a database migration from this work
    • will show an error if the migration failed, however if one does occur then the user can't do anything else within the app and is required to re-install
  • when signing in, will now go to a loading view as a "reachability" measure and don't show tabs/home unless we have performed a basic network call to the server
    • for a potential offline mode, this flow would change
  • network timeouts have been reduced from 60 to 15 seconds
  • user settings view has been redesigned around the user/server area
    • authorize Quick Connect
    • change Jellyfin user password
    • change local device pin/auth access
  • user access token now stored in the Keychain instead of Core Data
  • remember sort order and display for libraries, if enabled
  • a lot of other cleanup, polish, and developer-facing changes

tvOS

tvOS again gets less work done, but even worse this time as this is all incomplete on tvOS. I got the basics done but lost motivation after I ran into many design problems with SwiftUI on tvOS. I had wanted to finally figure out what to do with tvOS users <-> Swiftfin user mapping but, again, lost motivation.

Even though there was work done with the database, I am sadly unsure if the issue of #776 is resolved since I didn't work much on tvOS. I didn't even tough my own device while working on it and only worked within the simulator.


@LePips LePips changed the title Redo User/Server Sign In User/Server Sign In Redesign Apr 30, 2024
@LePips LePips force-pushed the redo-user-server-sign-in branch from 9474b89 to 310e781 Compare May 14, 2024 18:04
@LePips LePips marked this pull request as ready for review May 14, 2024 21:17
@LePips LePips merged commit 74b8b28 into jellyfin:main May 15, 2024
3 of 4 checks passed
@LePips LePips deleted the redo-user-server-sign-in branch May 15, 2024 05:42
@iamnikv iamnikv mentioned this pull request Oct 7, 2024
@LePips LePips added the enhancement New feature or request label Oct 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment