Closed
Description
/api/block/moveBlock调用后,在新文档中无法实时显示块,需要F5刷新才行,怎么改进?
In what scenarios do you need this feature?
假设有A,B两个文档,A,B文档同时打开,A文档的块通过api /api/block/moveBlock
移动到B文档后,如果第一次移动到B时,B文档无法实时显示移动过来的块,需要按F5刷新才行,有没有办法不通过刷新也能实时显示?
目前通过 protyle.reload() 刷新实现,但这种刷新,如果移动过来的块在文档的下方,页面会闪动以下,体验不好。
Describe the optimal solution
期望移动过来的块能实时显示。
Describe the candidate solution
No response
Other information
No response
Metadata
Metadata
Assignees
Type
Projects
Relationships
Development
No branches or pull requests
Activity
88250 commentedon Apr 10, 2025
我这里分屏后测试,两个页签都会自动刷新内容的。
88250 commentedon Apr 10, 2025
补充个录屏:
issue.webm
暂时关了,欢迎随时跟帖,谢谢。
wish5115 commentedon Apr 10, 2025
两个以上同时移动更容易出问题,如下图所示
总之,这个api不稳定,每次仅移动一个块时,时好时坏,同时移动多个块时,第一次移动到新文档一般都有问题。
我测试的版本有 v3.1.24,v3.1.27,v3.1.10 ,都有这个问题,记得其他版本也有问题。
附测试代码
wish5115 commentedon Apr 10, 2025
另外,这个api还有一个小问题,就是当只用parentID且previousID填空字符串时,会报错:previousID can not be the ID of a document
必须删除previousID或填undefined才行
TCOTC commentedon Apr 10, 2025
请使用 3.1.27 测试
wish5115 commentedon Apr 10, 2025
3.1.27 也是一样的问题。
wish5115 commentedon Apr 10, 2025
暂时用这种方案,移动后,先检查目标文档所有块是否已显示,有未显示的再刷新
88250 commentedon Apr 10, 2025
#14559 (comment) 我这里可以重现了 @Vanessa219
#14559 (comment)
previousID
和parentID
是二选一的,优先使用previousID
,所以如果传入了这个字段的话值不能为空。[-]/api/block/moveBlock调用后,在新文档中无法实时显示块,需要F5刷新才行,怎么改进?[/-][+]Improve editor refresh for kernel API `/api/block/moveBlock`[/+]wish5115 commentedon Apr 10, 2025
收到,感谢D大!
88250 commentedon Apr 13, 2025
我和 V 分析了下,这个前端无法实时刷新(因为跨编辑器 move 比较复杂),但可以实现内核推送编辑器刷新,将就就用这个方案吧。
🧑💻 Improve editor refresh for kernel API `/api/block/moveBlock` #14559
wish5115 commentedon Apr 13, 2025
OK!感谢D大和V姐!辛苦了!
WorkSync commentedon May 1, 2025
D大,我用protyle.stransaction执行事务操作,修改块,发现块没法实时刷新,也是得F5刷新整个页面才行。
还有一个问题,通过update事务操作修改一个块的html,给它增加子块。之后操作这个子块,发现显示没法找到这个子块,明明块ID什么都有,是不是后端没有同步这个块的信息呀55