jellyfin-vue icon indicating copy to clipboard operation
jellyfin-vue copied to clipboard

feat(DLNA): create DLNA settings

Open LPkkjHD opened this issue 2 years ago • 4 comments

This PR tracks the progress of the implementation of the DLNA settings page. Required for this to be complete the following things have to be done:

  • [x] create page
  • [ ] allow creation of DlnaProfiles (currently only saving profiles with a new name/saving server profiles creates a new custom one)
  • [ ] allow editing for DlnaProfiles (apart from setting configurations in arrays every other setting works)
    • [x] Info
    • [x] Identification
    • [x] Subtitle
    • [x] Direct Play
    • [x] Transcoding
    • [x] Containers
    • [x] Codecs
    • [x] Responses
    • [x] XML
  • [ ] adding translation strings

For the visual design I tried sticking to the scheme which is defined by the pages of settings as well as the devices and api keys. With this card based approach I'm planning to unify the "devices" and "settings" pages which used to be separated by a drawer into a single one which should provide a better user experience.

Things I'm currently unsure/unsatisfied with

SelectedDlnaProfile's template is massive

Normally I'd split the template into multiple subcomponents, however, this approach doesn't seem very feasible here as the currentProfile holding the information we want to edit/bind to components cannot be passed around easily and working with $emit hooks doesn't seem very elegant to me.

API interaction is a mess

Currently every component I wrote calls the API and processes the data as it pleases. I think this should be centralized somewhere, but I'm uncertain of the way to do this properly.

DLNA settings are visually weird

As it stands the DLNA settings (the ones on the left side) change the mouse to a weird pointer (and would highlight an entry if clicked) which is undesirable in my opinion. What I was trying to achieve was an effect similar to the one where the server information is displayed (light up on mouse hover, however, not clickable). Also the text boxes aren't aligned properly. Maybe there is another component from Vuetify which makes more sense here.

Undocumented deprecation and removal of X-DLNA cap and X-DLNA doc

Those two flags can still be set by the stable client of jellyfin-web, however, they don't appear in any api documentation and setting them doesn't actually result in anything (the server doesn't process them). I dropped them as a result.

LPkkjHD avatar May 07 '22 10:05 LPkkjHD

DLNA itself might be moved to a plugin, this is why the API might not be so much love. Still a good idea to have this page, just I would say not to worry so much about it looking extremely pretty, just good enough is good I think.

ferferga avatar May 07 '22 10:05 ferferga

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 5 Code Smells

No Coverage information No Coverage information
0.0% 0.0% Duplication

sonarcloud[bot] avatar May 19 '22 11:05 sonarcloud[bot]

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 6 Code Smells

No Coverage information No Coverage information
0.1% 0.1% Duplication

sonarcloud[bot] avatar Jun 22 '22 07:06 sonarcloud[bot]

I think that's enough tinkering around for the moment. As I hit a wall and thought of a better way to implement this I'll do a rewrite from scratch in the next couple of days.

LPkkjHD avatar Jun 22 '22 07:06 LPkkjHD