ar_sync
ar_sync copied to clipboard
外部からの強制データ上書き・一定期間有効なパッチ上書き
ar_syncの通知・自動反映を待っていると、ラグが気になることがある (ボタンを押したらすぐ何か変化があって欲しい、など) appoloとかでやっているらしい、postしたら(そのレスポンスを元に)データいい感じに更新してくれるやつ
const newtitle = 'あたらしいタイトル'
await response = post('/post/3', { title: newtitle })
ArSync.foobarUpdateAllData('Post', 3, { title: response.title })
const newtitle = 'あたらしいタイトル'
const patch = ArSync.foobarAddPatch('Post', 3, { title: newtitle }, { time: 10000 })
try {
await response = post('/post/3', { title: 'あたらしいタイトル' })
patch.invalidate()
ArSync.foobarUpdateAllData('Post', 3, { title: response.title })
} catch(e) {
patch.invalidate()
}
こんな感じのAPI用意しとけばいいかな?
ArSyncで提供しなくてもこれでできるから別に良さそう...
const [post, status] = useArSyncModel(...)
const [patchedPost, createPatch] = useFoobarPatch(post)
const submit = (title: string, body: string) => {
const patch = createPatch({ title, body })
try {
await myApi.updatePost(post.id, { title, body })
patch.invalidate(n * 1000) // n秒後に無効にする(無効になる前にarsyncで更新されればよし)
} catch(e) {
patch.invalidate()
}
}
もっとまとめると
const [post, status] = useArSyncModel(...)
const [patchedPost, updatePost] = useFoobarPatch(post, myApi.updatePost)
const submit = (title: string, body: string) => updatePost({ title, body }))
このusePatchを含めてしまえば良い?