✅/を含むリンク先にスクロールできない
from takker99/ScrapBubble
現象
/を含むリンク先にスクロールできない
例:/takker/2022-01-09 振り返り->/takker/takker99/takker-scheduler<-/takker-memex/日刊記録sheet 2021-11-05
/takker-memex/日刊記録sheet 2021-11-05中にある/takker/2022-01-09 振り返りのリンクにスクロールしない
原因
2022-01-15 13:28:23 %2F(=encodeURIComponent("/"))がtoLc()で%2fに変換されている
このせいで文字列の等値比較に失敗している
titleLcではなくtitleのままで渡さないとだめかtakker.icon
15:03:19 titleLcでなければならない処理はどれだ?
Bubbleのrenderingでは必要ない
<a>でURLを指定するときに使うタイトルは、大文字でも小文字でもどちらでもいい
useBubbles()でtitleLcを使っている?
react componentを構築するときのidに使っている
同じページかどうかの判定
でもそれはuseBubbles()で完結すればいいことであって、外部に持ち出す必要はない
show()にtitleLcを渡している
show()を使う場面ではtitleLcしか取得できないのか?
仮に取得できなかったとしても、titleとみなして渡せばいい気がする
titleLc扱いする理由がない
App.tsxで<a>.hrefから取得したタイトルを渡している
toLc(decodeURI(title))している
このtoLc()いらないじゃん
てことは、この一連のtitleLcバケツリレーは全てtitleに置き換えられるということか
あとこのバグの実質的な原因はdecodeURIComponent()ではなくdecodeURI()を使っていることだな
このせいで%2Fが/に変換されず、そのままtoLc()に渡って%2fに誤変換されてしまっている
decodeURIComponent()に戻そう
なんでdecodeURI()にしたんだっけ?
%2Fがタイトル名に含まれていると、それが/にされてしまうと思ったから?
実際には%2Fはhrefに%252Fの形で格納されているので、単に%2Fに戻るだけ
この問題への対策
toLc(decodeURI(title))をtoLc(decodeURIComponent(title))に置き換える
問題の分析過程で現れた別の問題
titleLcにする必要がない
別途titleに全て置き換えよう
✅不要なtitleLcを消す
2022-01-15
15:48:28 merged
15:42:37 テスト中
fetchPage()で/をencodeしていなかった問題が表面化した
15:30:51 PR出した
#2022-01-15 15:17:23
#2022-01-09