mattttvaughn / chronicle

GNU General Public License v3.0
216 stars 58 forks source link

Force sync and refresh are inconsistent across devices and often seem to do nothing #43

Open oucil opened 2 years ago

oucil commented 2 years ago

I have my android phone, Pixel 3, which I do most of my listening on, and I have an Android VM running on my PC so I can use Chronicle there (until I can pony up for a win 11 compatible machine). When switching back and forth, even when using a manual "refresh" by pulling down on the main screen of the last device I was listening to, and then using "force sync" on the actual book page on the device that I'm moving to, to pick up at the last spot... I often have to do this 4 or 5 times before the TO device actually picks up the new point.

oucil commented 2 years ago

As a follow up, I finally got the two devices to sync up, left for a few minutes and came back and the TO device had reverted to it's place rather than the newly synced stop time that I had just got it to see from the FROM device. Both devices are currently set to sync "Always".

oucil commented 2 years ago

And a further follow up... no matter what I did I could not get the TO device to sync to the from devices spot, so I went to the FROM device, played for a few seconds just to get a new spot, then refreshed on the home screen. Then on the TO device, I "Force Synced" and the new time showed up successfully.... then I went to hit PLAY, and it jumped right back to the spot it was before the sync, ignoring the new synced location. I watched this happen live.

mattttvaughn commented 2 years ago

Thanks for bringing this up, I only use Chronicle on my phone so I don't think about these issues much. Yea force sync currently doesn't "push", it just pulls. Same with a manual/timed refresh. The only way to "push" progress is to play the book, currently.

Some things that can be done to make syncing better:

  1. Force sync can be changed to "push" progress
  2. Library refresh could be changed to "push" progress for the X most recently listened books.

And the scenario you described where you force synced, updated progress, then it resumed playback from the pre-sync progress sounds like a bug. If you can sus out a way to reproduce that behavior consistently could you write up steps to reproduce it and create another ticket?

mattttvaughn commented 2 years ago

And some implementation details about 1. & 2. if anyone plans on picking these up:

oucil commented 2 years ago

@mattttvaughn If there could be a preference such as "always ask" or "always use highest progress", etc. that would be great. I would set the default to "ask" until people become familiar with it and choose a more automated / aggressive overwrite.

As for the potential bug, I'll give it a shot, and I'll try with a couple extra phones as well just in case the VM is a unique edge case.

oucil commented 2 years ago

@mattttvaughn Ok, I think I've figured out the cause, and I can consistently reproduce it. The scenario is this, I'm at my desk, I have the "tablet" (VM) running and am listening while I work, then I pause, go out for my walk and throw on my headphones with my phone, launch the app, it sync's and plays properly, then when I get back I pause on the phone, go back to the STILL-RUNNING but paused app on the "tablet", press the FORCE-SYNC which correctly gets the new time.... and this is the cause... the previous session is still in-process, just paused at the last location, still showing along the bottom of the app.... so I go to press play, either one, and it jumps right back to the spot I had paused ON THAT DEVICE, eliminating the force-synced position from the other device.

So the kicker is that the existing session, if there is one, needs to be updated with the force-sync position. I would suggest that EVERY TIME you press play in either the main app window, or in the currently playing window, that it checks the stored stop point before playing, and if it's further along, auto-advances to it in the player window, then continues to play.

This is obviously my edge case, but I tried with another phone and could reproduce the same issue when switching back and forth between them, so I would imagine that this will affect anyone that listens on more than one device.

Hope that helps!