jellyfin-vue
jellyfin-vue copied to clipboard
feat(DLNA): create DLNA settings
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.
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.
Kudos, SonarCloud Quality Gate passed!
0 Bugs
0 Vulnerabilities
0 Security Hotspots
5 Code Smells
No Coverage information
0.0% Duplication
Kudos, SonarCloud Quality Gate passed!
0 Bugs
0 Vulnerabilities
0 Security Hotspots
6 Code Smells
No Coverage information
0.1% Duplication
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.