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

关于 Evernote 标签和标题同步的改进需求 #1104

Closed
zhaocai opened this issue Jun 4, 2019 · 9 comments
Closed

关于 Evernote 标签和标题同步的改进需求 #1104

zhaocai opened this issue Jun 4, 2019 · 9 comments

Comments

@zhaocai
Copy link

zhaocai commented Jun 4, 2019

需求

有一些 Evernote 的笔记需要不时改变标签。例如,标记为 #todo, #tomorrow, 等。因为这些操作有时是在移动端进行,有时是批量修改,不可能到小书匠客户端更改。

问题

小书匠 ⇆ Evernote 基本是单向同步 。如果在 Evernote 修改了标签,下次小书匠保存时会覆盖。

改进

每次小书匠保存笔记到 Evernote时,对比上次保存时间和 Evernote 端笔记最新更新时间,以最新的 标签和标题为最新。因为标题和标签都是纯文本,实现上应该是比较容易的:

  1. 记录上次保存的时间。
  2. 保存之前加一小段代码比较。
@suziwen
Copy link
Owner

suziwen commented Jun 4, 2019

感觉不太好。
如果我保存的时候,明确想要修改标题和标签,而 {上次保存时间} 没有 { Evernote 端笔记最新更新的时间} 新的情况下,要怎么处理。

@zhaocai
Copy link
Author

zhaocai commented Jun 4, 2019

@suziwen
如果保存的时候,发现相对于上次保存时间,Evernote 端的笔记较新,意味着笔记在上次保存之后 Evernote 端修改过,这个情况可以分开来看:

A. 内容

如果是内容不一致,那就涉及到强制更新本地缓存 或者自己手动在小书匠端添加修改的内容,否则的话,就会被覆盖。
这样的情况需要手动处理,此处可以略过不论。

B. 标题或者标签

如果我保存的时候,明确想要修改标题和标签,而 {上次保存时间} 没有 {Evernote 端笔记最新更新的时间} 新的情况下,要怎么处理。

如果明确想要修改标题和标签,那就先保存一次保证双方同步,之后再修改就好了。

总的来讲:

这样的改进相当于实现 标题和标签 的正常双向同步,而 内容 仍然是单向同步+逆向手动。

@suziwen
Copy link
Owner

suziwen commented Jun 4, 2019

刚测试了下,如果没有开保护文档 选项,用户在 evernote 端的修改我这边是无法区分出是修改了内容还是标题或者标签。(比较难区分,如果硬要区分出来也是有办法的,应该是消耗更多的计算和存储吧。这里注明下)

但就算是能区分出 内容标题/标签,按照你描述的两次保存,感觉逻辑上也不太好理解,特别对其他没看到这个帖子的用户来说,可能他们会不时遇到,在小书匠修改的标题/标签,为什么有时保存一次就可以,有时要保存两次才能正常同步呢?是不是系统不稳定等。就得跟他解释他在 evernote 端上先修改了标题的行为引起的?这个不太符合一般的思维习惯。

@zhaocai
Copy link
Author

zhaocai commented Jun 4, 2019

  1. 不需要区分修改了内容还是标题或者标签,只需要比时间戳就好:哪边的时间戳新就用哪边的标签和标题即可。

  2. 通常也不是两次保存,事实上 Evernote 端的笔记更新应该是较少发生的事件。而且,在配置选项上加一条 保存之前先同步标签和标题的选项就不会影响到之前的用户啦。

@suziwen
Copy link
Owner

suziwen commented Jun 4, 2019

加选项应该可以,应该会加个保存文章之前,检查服务器版本是否被修改过的提示的选项(包括标题,标签和内容)

标题/标签的时间戳是没办法单独拿到的, evernote 服务器只会提供一个文章的修改时间戳,只要你修改了标题/标签/内容中的任何一项 , 这个时间戳都会变化。

@suziwen
Copy link
Owner

suziwen commented Jun 4, 2019

然后是什么情况下把 evernote 最新的标题/标签同步到小书匠当前文章。这个还要再考虑下。

  1. 弹出 服务器版本有更新的修改版本 提示后,自动把标题/标签同步下来?
  2. 弹出 服务器版本有更新的修改版本 提示后,用户在文件树列表里,通过右键上下文菜单 ,自己手动右键更新本地缓存版本,把服务器的标题,标签更新下来。

我感觉是第二种方案比较好些。

@zhaocai
Copy link
Author

zhaocai commented Jun 5, 2019

然后是什么情况下把 evernote 最新的标题 / 标签同步到小书匠当前文章。这个还要再考虑下。

  1. 弹出 服务器版本有更新的修改版本 提示后,自动把标题 / 标签同步下来?
  2. 弹出 服务器版本有更新的修改版本 提示后,用户在文件树列表里,通过右键上下文菜单 ,自己手动右键更新本地缓存版本,把服务器的标题,标签更新下来。

我感觉是第二种方案比较好些。

既然已经加了选项,那就应该更“自动”一些才是。弹出 服务器版本有更新的修改版本 提示时,加上几个“Yes/No"的选项就好。

@suziwen
Copy link
Owner

suziwen commented Jun 5, 2019

这个自动想放在更容易让用户明白的地方。

因为我始终还是觉得在保存这个动作上是我覆盖目标意图更大,而不是目标自动合并到我当前的文件上。就好像我 git push 到一个远程目标分支上时,远程目标分支发现他有更新的版本,虽然这个最新版本可以自动合并进来,但 git 还是要求你本地先 git pull ,让 git 程序自动合并后,再执行 git push

所以设计上还是保存时只会提示到是否有最新版本比较好些。在提示完后,如果用户忽略就直接覆盖,如果不忽略,就提供用户选择哪边的标题/标签。

现在还有在额外思考的是,什么情况下让这个合并自动发生,比如用户每次切换文章时或者用户点击目录树的节点时,检查服务器是否有最新版本。

@zhaocai
Copy link
Author

zhaocai commented Jun 5, 2019

保存时提示是否有最新版本,同时显示两边的区别让用户打钩选择即可。

@zhaocai zhaocai closed this as completed Jun 18, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants