-
Notifications
You must be signed in to change notification settings - Fork 0
Bad_state_No_elementが表示される
なぜか、ビルドしたmiriaを起動すると
が表示されるようになりまして、(ウィンドウのサイズは変えています)
調べたところ、タイムラインを構成するためにtabSettingを基にaccountProviderを見に行って、ないよ! となっていました。
TabSettingの読み込み側で確認すると、
適宜ファイル保存して"host"を抽出
% jq '.[].acct.host' tab_settings.json
"misskey.io"
"misskey.io"
"misskey.io"
"misskey.io"
"live-theater.net"
"live-theater.net"
"live-theater.net"
Account読み込み側で確認すると、
適宜ファイル保存して"host"を抽出
% jq '.[].host' accounts.json
"misskey.io"
5〜7個目のタブで使うhost情報がアカウントにありません。
この原因は、たぶん、misskey_dartに変な変更を加えた状態でデバッガ実行していたのが理由のように思います。
とは言っても、このままでは起動しないので、処置が必要ですね。
- 設定を全消しするか (MacOS上なので)
- この設定状態のための、何らかのバイパス処理を追加するか
その後、try catchでアカウントに関係するものをバイパスする処置を加え、他ところ、起動するようになった。
起動したところで、アカウントの無くなったタブを削除し、改めて2番目のサーバを追加して、そのタイムラインが表示できることを確認したが、
アプリを再起動すると、やはり、accountProviderにない状態になる。
- セキュアなストリングに保存できていないのか?
調べたところ、setStringSecure内でMacOSなのでprefs.writeで書きます。デバッグコンソールで確認すると、writeするときのvalueには2番目のサーバの部分が含まれています。
しかしreadの結果(下図のresult)は1番目のサーバの部分のみとなってしまいました。
試しに、setStringSecureの中でdeleteしてからwriteするように変更したところ、2番目のサーバの部分も保存されるようになりました。
どうやら、上書きするとダメで、消してから書けば大丈夫です。
他のユーザから報告が無いのでしたら、
うちの環境依存かもしれません。 (Intel MacOS 14.4.1ですが、これが原因ではないかもしれません)