-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Conflict Resolution Dialog #14798
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
Comments
Why does your screenshot of the prompt show the local and web with the exact same timestamp? I've noticed that during beta testing a few times and found it odd and a bit confusing actually. As a user, I also want to choose which option to keep and not which to discard. |
Those are the timestamps of the last post modifications. If both versions were modified at the same time the timestamps will match. As a side note, I didn't take that screenshot so I'm not sure about the context of it.
@osullivanchris - did you work on this dialogue in Android? Any thoughts on this? |
Thanks for the clarification! I think it would be good to update but also feel the conflict resolution dialog would benefit from a redesign and we could discuss that elsewhere and talking about it here may hinder the progress of this step and I don't want to do that. 👍 |
Hey thanks for the ping! The dialog pre-dates me. But I did find it confusing and explored an alternative last summer on p2-paCBwp-dh My exploration was a completely different way to resolve conflicts, where the user can actually have a look at the versions first, then decide which one to load. However, it would be quite a big thing to build, and we decided against it at the time. So if we want a smaller, quicker fix, I agree with this comment from @designsimply
Another option I had tried was to just let the user directly select the one to load, rather than this strange negative action we're asking them to do now. I had suggested we try using the row itself as a tap area. We didn't do it at the time on Android because we couldn't make a row like that tapable without building a custom dialog. Here's a rough wireframe Two other assumptions I'd be open to challenging
Sorry for opening any cans of worms rather than providing a simple yes/no answer 😄 |
This autosave revision dialog PR seems very relevant to this task. |
I've done a bit of research on this task and thought I'd share it here to provide more background in to the problem. I'd welcome any input or corrections. Types of UpdatesThere appear to be three different types of updates a post can undergo when first arriving at the post list. Update Conflict ResolutionEach of these changes can happen to a post when it is in one of four states. I've highlighted the states that I believe are causing the errors the users are reporting in #9449 . The blue case has been solved within the PR I posted above. The scope of this task is to fix the local autosave draft conflict, however the other issues need to be considered as they will touch similar code and there are resources within the remote autosave solution that could be reused. Plus in all likelihood the publish local autosave vs new remote published post issue will likely need to be fixed as a first step towards fixing the draft issue here. Tasks
ExtrasIt may be appropriate to have some form of |
I think this is why the remote posts don't appear until we discard local changes. PostListViewController.predicateForFetchRequest:403 displays the latest revision let basePredicate = NSPredicate(format: "blog = %@ && revision = nil", blog) PostService.findPostWithID:758 merges the remote post in to the original post not the latest revision request.predicate = [NSPredicate predicateWithFormat:@"blog = %@ AND original = NULL AND postID = %@", blog, postID]; |
I guess the main questions I have here regard whether the local autosave conflict resolution described in this issue should be kept separate to the existing solution for remote autosaves. Should the conflict resolution design described in this issue apply only to local autosaves? Or now that we're handling remote and local autosave conflicts should we apply a dialog that covers both cases (the existing one appears to do this)? The other issue is what should we do when we have both local and remote autosaves? I believe the current logic is to overwrite remote autosaves with local ones. |
Purely in terms of UI, the mockup I showed above was to get away from the original image in the issue description, where the user had to choose a negative action, quite confusing. The same thing is solved in #12947 that you mentioned. I forgot we had already done that on iOS. I am fine with the UI used there.
I think the same dialog can probably be applied to multiple cases. However its been a while since I was working on this stuff, so it would take me a while to reacquaint myself with all the different scenarios...well done for capturing them in the above table, its hard to get to the bottom of. Not 100% sure how many of the above questions are UX v technical. But ping me again if you need design input. |
Hey @osullivanchris I've two design related questions regarding this I'd love to get your input on.
|
What do you mean by 'regular versions'? I'm not so certain that 'save' is much stronger than Autosave. In a way its confusing that we have both. If I become accustomed to Autosave, it might not seem important to me whether I saved or not. I do think changing it to published is a very strong action which we could highlight. But I'm not sure it will be easy to say 'this is one that autosaved', 'this is one you deliberately saved' and to be sure the distinction was important to the user.
That's a good point. I think 'from another device' is good. I believe we used 'from another device' in one of these scenarios before. Maybe it was on Android. |
For how we resolve autosave conflicts it appears the Android version has two very different behaviors for these each type of conflict.
Do we want to keep these two different resolution behaviors for remote autosaves and local ones? |
@Deco354 - For simplicity and to avoid scope creep, I think it would be best if we kept those separated and followed Android's lead for now. Does that sound good? Let me know if you foresee any issue with this approach. |
Some feedback came in from a user about synchronization not working properly, including synchronizing content from various devices, and I am noting their feedback here for reference. 👍
Translated from Spanish using Google Translate:
2-star - Oct 10, 2020 - WPiOS 15.8 - app-store reviewId=6521434431 |
I'm releasing this issue as I'm not currently working on it. |
The "local changes" scenario was eliminated in the scope of pcdRpT-6vS-p2 and the conflict detection and resolution were added – closing. |
We've been receiving a lot of complaints of users confused about posts not being updated and displaying the "Local Changes" label (ref #9449).
To reproduce this issue:
Our goal is to match the implemented behavior in Android, which displays a clear message to the user and prompts for an action:
Acceptance criteria
Showing label
Showing prompt to the user
Choosing "Discard web"
Choosing "Discard local"
The text was updated successfully, but these errors were encountered: