Closed sabigara closed 1 year ago
一度ローカルストレージを消去して再ログインしたら今は動いています。(それが原因かはわかりませんが)
あと関係あるかはわかりませんが以下のような notice が返ってきているようです。
Home-df0e5fc7.js:2049 NOTICE: wss://nostr.h3z.jp: Subscription rejected: Too many subscriptions: Number of subscriptions must be less than or equal to 10
(anonymous) @ Home-df0e5fc7.js:2049
(anonymous) @ Home-df0e5fc7.js:2049
x @ Home-df0e5fc7.js:2049
setInterval (async)
t.onmessage @ Home-df0e5fc7.js:2049
ミニファイされていて見にくいですが、一応エラーを吐いているソースの一部も
, G2 = ({shortcuts: e=K2, onShortcut: t})=>{
const n = z2(e);
Je(()=>{
const r = F2(s=>{
if (s.type !== "keydown" || s.ctrlKey || s.altKey || s.metaKey || s.target instanceof HTMLTextAreaElement || s.target instanceof HTMLInputElement)
return;
const o = n.get(s.key);
o != null && t(o)
}
, 50);
window.addEventListener("keydown", r),
Wt(()=>{
window.removeEventListener("keydown", r)
}
)
}
)
}
, W2 = ()=>{
const e = Cd();
G2({
onShortcut: t=>{
e(t.command).then(()=>console.debug(`shortcut key '${t.key}' was processed successfully`), n=>console.error(n))
}
})
}
, q2 = L('<div class="absolute inset-0 flex w-screen flex-row overflow-hidden"><div class="flex h-full snap-x snap-mandatory flex-row overflow-y-hidden overflow-x-scroll"></div></div>')
, aw = ()=>{
W2();
const e = Va()
, {persistStatus: t} = Xa()
, n = Xn()
, {config: r} = J()
, s = as();
Mo(()=>{
r().relayUrls.map(async l=>{
(await n().ensureRelay(l)).on("notice", h=>{
console.error(`NOTICE: ${l}: ${h}`)
}
)
}
)
}
);
const {followingPubkeys: o} = h2(()=>ke([s()])(([l])=>({
relayUrls: r().relayUrls,
pubkey: l
})))
調査ありがとうございます。
ローカルストレージにはリレーの設定が入っているのですが、もし消したことによって改善したとすると、削除前とデフォルト値のリレーの違いが影響している可能性がありますね。
再現を試みているのですが、私のほうで再現ができず・・・
ホームタブだけでその事象が起きているとすると、いま怪しいと思っているのは followingPubkeys()
の処理です。
followingPubkeys()
はフォローしているユーザの配列を取得する関数で、これを元にホームタイムラインを構築しています。
followingPubkeys()
が空になってしまっていると、フォールバックとして自分のpubkeyを使います。
一瞬フォローしている人の投稿が映って、その後自分だけの投稿になるという挙動を見ると、何らかの原因で followingPubkeys()
が空になっているのではないかなと予想しています。
まとめると、推測される原因はリレーの違い、あるいはフォロー一覧取得関連のバグかなと思っています。
なるほど・・・
現在ローカルストレージには2つ (RabbitPersistStatus
と RabbitConfig
)のデータがありますが、消した時はもっと多かった気がするので、もしかしたら過去のスキーマと競合していたのかなと想像しています。もし変えていたらですが・・・
このissueをクローズされるかはお任せします。引き続き開発を続けていただけたら嬉しいです。ありがとうございました。
おそらくコレだろうという原因が判明しました。
followingsの取得失敗時にリトライ処理を入れるようにしていませんでした。 nostr-tools 1.3.2では2.4秒がタイムアウト時間に設定されていますが、重いリレーだと期間内にデータを返さない可能性があります。 https://github.com/nbd-wtf/nostr-tools/blob/v1.3.2/pool.ts#L53-L56-L56
nostr-tools 1.3.2だとタイムアウト時間を変更できないので、失敗時にリトライするように修正しました。
これでしばらく様子見したいと思います。まだ発生するようでしたらご報告いただけますと大変助かります。
おそらく1時間前のコミットはすでにリリースされていると思いますが、そこから正常に動いているようです。(朝の時点では自分の投稿しか表示されていませんでした)
対応いただきありがとうございました!また何かあれば報告させていただきます。
便利なクライアントを開発していただきありがとうございます。
おそらく一番難しい部分なのだとは思いますが、ホームタイムラインが正しく取得されないことがよくあります(もし想定通りの挙動でしたらすみません)。以下の画面収録のように、(リ)ロード直後には自分の最近の投稿のみが数件表示され、他の人の投稿はロード以後のものしか追加されません。他のカラムは正しく動いているように見えます。
https://user-images.githubusercontent.com/41217985/226097713-16ea5671-2147-4cef-bc3b-6a8b1f2df4d1.mov
過去の投稿も見られたらうれしいです。よろしくお願いします!
環境