Skip to content

Bad_state_No_elementが表示される

darlington95 edited this page Apr 7, 2024 · 8 revisions

なぜか、ビルドしたmiriaを起動すると
Bad state: No element
が表示されるようになりまして、(ウィンドウのサイズは変えています)

調べたところ、タイムラインを構成するためにtabSettingを基にaccountProviderを見に行って、ないよ! となっていました。
alt text
alt text

TabSettingの読み込み側で確認すると、
alt text
適宜ファイル保存して"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読み込み側で確認すると、
alt text
適宜ファイル保存して"host"を抽出

% jq '.[].host' accounts.json 
"misskey.io"

5〜7個目のタブで使うhost情報がアカウントにありません。
この原因は、たぶん、misskey_dartに変な変更を加えた状態でデバッガ実行していたのが理由のように思います。
とは言っても、このままでは起動しないので、処置が必要ですね。

  • 設定を全消しするか (MacOS上なので)
  • この設定状態のための、何らかのバイパス処理を追加するか

その後、try catchでアカウントに関係するものをバイパスする処置を加え、他ところ、起動するようになった。

アカウント設定が更新できない

起動したところで、アカウントの無くなったタブを削除し、改めて2番目のサーバを追加して、そのタイムラインが表示できることを確認したが、
アプリを再起動すると、やはり、accountProviderにない状態になる。

  • セキュアなストリングに保存できていないのか?

調べたところ、setStringSecure内でMacOSなのでprefs.writeで書きます。デバッグコンソールで確認すると、writeするときのvalueには2番目のサーバの部分が含まれています。
alt text
しかしreadの結果(下図のresult)は1番目のサーバの部分のみとなってしまいました。
alt text
試しに、setStringSecureの中でdeleteしてからwriteするように変更したところ、2番目のサーバの部分も保存されるようになりました。
alt text
どうやら、上書きするとダメで、消してから書けば大丈夫です。

他のユーザから報告が無いのでしたら、
うちの環境依存かもしれません。 (Intel MacOS 14.4.1ですが、これが原因ではないかもしれません)