advplyr / audiobookshelf-app

Mobile application for Audiobookshelf
https://audiobookshelf.org
GNU General Public License v3.0
1.32k stars 173 forks source link

[Enhancement]: Save local progress over server #1355

Open bjhiggins opened 3 weeks ago

bjhiggins commented 3 weeks ago

Describe the Feature/Enhancement

I listen to audiobooks everywhere and make sure I have a local copy on my Android device. I usually start in the house - same network as my Audiobookshelf server. I then move to the car and continue the book in the car - my server is unavailable via the Internet so the progress is kept on the app. When I return to the house and restart the book, all progress from the car was lost.

I would like a feature so that the progress on the mobile app is preferred over the server. As this would likely be specific to this use case, perhaps an option in the app to enable/disable the feature.

This could be implemented so that if the progress on the mobile app is further than the server, use the apps progress. Of the other way around, use the servers progress.

In the Audible app, if you are listening from multiple devices - if the progress is not in sync, there is a pop up box explaining the two different positions and asks the user which to use

Why would this be helpful?

A feature allowing the user to determine whether the mobile app or server is the preferred point of progress would prevent users from losing their place in the book when changing locations.

Future Implementation (Screenshot)

Likely would be a Boolean checkbox in Settings to enable/disable the feature. Perhaps a more advanced implementation would have a pop up message indicating the difference with two buttons "Use Server Progress" and "Use Device Progress"

Audiobookshelf App Version

Android App - 0.9.76

Current Implementation (Screenshot)

No response

mattheys commented 3 weeks ago

I have the same issue where progress offline is lost when reconnecting. I was thinking a solution could be using the most recent listened to device. So if you listened a bit on the phone offline but say only 5 mins, then went to a PC connected to the server and listened for a few hours. Which ever device had the most recent listening entry would then sync to the other device.

I however prefer your idea of a popup box giving you the choice in that situation as it could be different from time to time. Maybe it says you are at 2:53:23 on this device but 1:05:14 on the server which one would you like to keep.

bjhiggins commented 2 weeks ago

After thinking about this - for my use case - the popup would need to work in Android Auto as well as natively in the app. With (what I assume) limitations of AA - not sure if it would be possible ...

nintendoeats commented 2 weeks ago

I have a similar workflow. I would very much like the implementation where the most recently updated listen status is respected. Right now it's basically like I have two different databases, one with the network on and one with the network off.

Doublemyst commented 1 week ago

I'm having the same issue .. Listened offline for 9 hours and when connected to the server, it got reseted: (had to manually reset the time to the 9+ hours) Unbenannt

kanine commented 2 days ago

Came here to report this exact same issue. It seems a little odd behaviour but hopefully the devs can resolve or at least give a rationale for why it's working this way.

I'd prefer the app to just keep track of the current position and offline history, then report it when it comes back online. If the last offline event is after the last online event then that should take precedent and get merged into the history (with an appropriate merge event to show what happened). Likewise if the same thing happens in reverse.

I guess the case when the server is accessed via an alternative method (eg web app) and the android app never connects the app should just be oblivious to those online events until such time as it reconnects. I don't really see any alternative to that.