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

Investigate PWA #744

Closed
majora2007 opened this issue Nov 11, 2021 · 6 comments
Closed

Investigate PWA #744

majora2007 opened this issue Nov 11, 2021 · 6 comments
Labels
enhancement New feature or request UI Primarily UI impacting

Comments

@majora2007
Copy link
Member

The idea is to allow Kavita to be an installable application and have offline mode.

For offline mode, it will work similar to Plex. Offline content will only show. User will have to explicitly download it to their device (it does not just work with local content). This download will contain metadata about the series, like (next/previous chapters, page counts, etc) and will be used during API interception.

All API calls will be intercepted and saved in an Indexed DB. Once connection back to the server is made, data will sync back and update server.

This story is to try out these ideas by using a PWA. It may not be possible and is not a commitment.

@majora2007 majora2007 added enhancement New feature or request UI Primarily UI impacting labels Nov 11, 2021
@majora2007
Copy link
Member Author

This is a wash, after messing around, I was not able to solve the core issues to make this work as I want.

@lostmsu
Copy link

lostmsu commented Nov 30, 2021

@majora2007 I wonder what kind of issues you faced. I personally implemented a "PWA" epub reader previously as a static website, that just uses Google Drive for storage. The only thing I had to handle is to resolve book positions by simply attaching timestamps to them, and always picking the latest one.

If you're curious, https://h5reader.azurewebsites.net/

@majora2007
Copy link
Member Author

@lostmsu My idea was to all for intercepting of http calls and reroute them to local metadata that was stored on the disk.

So for example, my reader currently makes multiple calls to prefetch images or get metadata about next chapter to load. The idea would be to allow the user to download a set of metadata about a series thus making it available offline and when offline, the http interceptor would then interact with the underlying system. Progress would be stored in the indexed db and when online, I could sync it back to the server.

I was unable to get the level of detail needed (esp with Angular's service) so gave up on the idea. I would LOVE any help in moving this forward so I don't have to write native apps and can have offline reading experience without a drastic amount of code to support.

@sudopseudocode
Copy link

I know this is an old issue, but it would be a killer feature to have.

I suggested something similar for tachidesk webui in this issue, which I currently use for most manga reading & downloading (instead of dealing with Mylar). I think Kavita has a more polished UI, so if this was on the roadmap it would be a no-brainer to use Kavita for reading & try to get a working Mylar configuration.

I'll try to pull this down and look into how difficult it would be to integrate the front end with a service worker, indexed DB, etc.

@majora2007
Copy link
Member Author

@pauldiloreto feel free to, but just know that it may not be merged. I'm instead building a native app since Kavita already has basic PWA implementation (add to homescreen).

The end decision to merge depends on complexity as once you merge, I now own all the issues and enhancements with it for the life of the project.

@sudopseudocode
Copy link

Yeah that's absolutely a fair point. I'll play around with it & see.
I didn't realize you were building a native app, that will also reduce the need for this :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request UI Primarily UI impacting
Projects
None yet
Development

No branches or pull requests

3 participants