FlandreDaisuki / Patchouli

An image searching and browsing tool on pixiv
MIT License
80 stars 6 forks source link

一鍵取消收藏 #23

Closed maple3142 closed 6 years ago

maple3142 commented 6 years ago

Is your feature request related to a problem? Please describe.

按下愛心是收藏,但是再按一次需要到新分頁才能取消收藏有點麻煩

Describe the solution you'd like

當目前的狀態是已收藏,再按一次就取消收藏

Describe alternatives you've considered

No

FlandreDaisuki commented 6 years ago

是可以做 因為我是直接套 pixiv 原本的 script 所以這個邏輯根本不是我寫的www 然後我又很少有取消收藏的需求就沒有特別改

maple3142 commented 6 years ago

https://github.com/maple3142/browser-extensions/blob/3bda1055ce5b3b192b0699a23fc39311d1a8ff27/scripts/pixiv-one-click-bookmark-ex.user.js#L33-L52 我這邊是有可以 post 新增/取消收藏的程式碼,不過似乎還沒有判斷取消收藏成功的方法

FlandreDaisuki commented 6 years ago

其實有新API有個 bookmarkData 的東西,非 null 即代表有收藏

maple3142 commented 6 years ago

@FlandreDaisuki 不過這樣取消收藏需要發三次 request...

FlandreDaisuki commented 6 years ago

一開始知道狀態了存在 vuex 根據狀態點擊發 doBookmarkunBookmark 就不再確認了,然後假設成功並改變 vuex 狀態

目前我 doBookmark 也沒有事後做確認 (因為我根本沒有做 doBookmark)

FlandreDaisuki commented 6 years ago

這個 API response 小一點 https://github.com/FlandreDaisuki/Patchouli/wiki/New-API#getillustbookmarkdata

maple3142 commented 6 years ago

不過剛測試了一下,在移除後馬上再去抓一次 bookmarkData 會有問題,需要等 1~2 秒才會更新

FlandreDaisuki commented 6 years ago

這大概就是 pixiv db 更新的頻率了,無能為力

而且就算真的監控 1~2s 成功失敗再來改狀態 以我來說,不會假設我點下去一到兩秒後失敗了我還繼續盯著或滾回去再加(點)一次 我一定是等下次又搜到這張圖發現還沒加 bookmark 而再加一次 所以我覺得假設成功這件事還算符合使用者行為

FlandreDaisuki commented 6 years ago

@maple3142 有新的移除 API

maple3142 commented 6 years ago

我剛測試了一下沒辦法用 json 傳遞,必須用 application/x-www-form-urlencoded 才會成功

除此之外 postAddBookmarkpostDeleteBookmark 都能用 /rpc/index.php 去呼叫: https://github.com/maple3142/browser-extensions/blob/2c0b3e3403709a6644f05a4f1414eafda9b01123/scripts/pixiv-one-click-bookmark-ex.user.js#L40-L41

FlandreDaisuki commented 6 years ago

已更新 wiki (有錯你應該也有權限可以直接改

maple3142 commented 6 years ago

看起來我是沒辦法編輯的,不過那也沒有什麼錯誤

還有我看我明天幫忙把愛心按鈕一鍵收藏/取消的功能弄好發 PR?

FlandreDaisuki commented 6 years ago

可以阿,交給你了

maple3142 commented 6 years ago

這個應該可以關了