-
-
Notifications
You must be signed in to change notification settings - Fork 230
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
feat,fix,refactor&perf: offline navigation, full item reactivity, simplifications and bug fixes #2201
Conversation
This composable reactively runs requests and returns reactive BaseItemDto copies Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
With the new composables the store is indeed obsolete Also remove audios from the resume section Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
…nts to api composables Signed-off-by: Fernando Fernández <[email protected]>
Rely only on axios interceptor to report the loading state Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
Use the new composable in LikeButton Signed-off-by: Fernando Fernández <[email protected]>
* Ensure reactivity by not destructuring itemId in most places * Removed placeholder for Vuetify skeletons, we're not going to use them anymore with the refactors Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
* Endless loading was fixed by initializing the loading ref to false. resolveAndAdd has full control now. * Requests loops were happening because the watcher could fire. Given the passed objects are getters, it was difficult for it to determine if the args really changed. Now, we map toValue and check for equality Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
This was the main thing that lead to ReferenceErrors and circular dependencies. Wasn't refactored before to at least get the client working in production (although with quite a lot of reference errors) Signed-off-by: Fernando Fernández <[email protected]>
When there's no connection, the request will be saved so it gets executed as soon as the connection to the server is recovered Signed-off-by: Fernando Fernández <[email protected]>
Allows for fine-grained control over the loading state. Merge skipCache with it. Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
* Remove the animation, showing only the Vuetify's background colors for each color scheme. * Move all the splashscreen logic to App.vue, so we can hide the splashscreen only when suspense has finished resolving everything Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
Do a single loop instead of 2 Signed-off-by: Fernando Fernández <[email protected]>
…t in progress Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
We've never been using Suspense to blcok navigation properly (which wasn't so relevant, since we didn't have many long promises like we have now) We were wrongly swapping the key prop in the div, which effectively killed the inner suspense, not taking into account the async dependency tree Signed-off-by: Fernando Fernández <[email protected]>
…ary page Signed-off-by: Fernando Fernández <[email protected]>
Signed-off-by: Fernando Fernández <[email protected]>
2a043a8
to
bcae7f7
Compare
This is probably better than having a giant collection with another level of nesting Signed-off-by: Fernando Fernández <[email protected]>
a708c19
to
98df2d6
Compare
Was going to test #2129, and noticed when you attempt a login with incorrect password it shows the error as expected, however does not reset the "loading" state. This works as expected on nightly (aside from the infinite loading bar). |
@ferferga Thank you for taking the time to write all this up! Great explanation and it makes total sense. ;) |
Signed-off-by: Fernando Fernández <[email protected]>
9e23eeb
to
c68d0f1
Compare
@EffakT Good catch! Try now please, both issues should be fixed |
c68d0f1
to
3b4e9d2
Compare
@ferferga Not sure if its related to the last change, it doesn't seem to be loading the video information (video/audio/subtitles) on first load of a episode page. Though, can confirm both the login and play status issues are sorted. |
* Do a first pass on playback's manager watchers. The lack of sync was causing playback reporting to miss updates * Set post as flush timer for stores cleanup Signed-off-by: Fernando Fernández <[email protected]>
* Also removed unnecessary setting from VSCode settings.json (reported by Volar) Signed-off-by: Fernando Fernández <[email protected]>
3b4e9d2
to
6c9fdf4
Compare
Quality Gate passedThe SonarCloud Quality Gate passed, but some issues were introduced. 4 New issues |
Cloudflare Pages deployment
|
@EffakT I fixed it as well, not caused by this PR but no hassle to include it either. Shipping now! |
I've been out a lot due to uni, but I'm not with empty hands either :):
Fixes #2194 #2129 #1921, possibly fixes #1803 #1717 #801 #762
Improves #2028 (major leak was fixed, but there are still some on full music's player swiper and the draggable queue)
Development improvements
Fully new data fetching. Created the new
useApi
anduseBaseItem
composables, deprecateuserLibraries
anditemsStore
, createdapiStore
. Both composables are fully documented in the codebase, but here's a brief explanation:undefined
Fix Suspense not really blocking navigation before resolve.
Fix development build not working
Fix the memory leak (root source was the items store, which we couldn't properly fix back at the time). The most memory and CPU intensive parts of the application are still the library pages, but even while on them, the GC fires with light scrolling, so it looks like that all our data structures are easily GCeable.
User facing improvements
Some videos:
2024-01-08.18-56-23.mp4
2024-01-08.18-57-55.mp4
2024-01-08.19-01-52.mp4