web-dev-qa-db-ja.com

gnome-Shell-extension:ガラスのように見えるJSは拡張されません

私は次のコードスニペットを持っています。これは(見た目で)私が持っている連絡先のリストを私に与えます(gnome-contactsによって管理されています):

_// METHOD 1:
const ContactDisplay = imports.ui.contactDisplay;
let csp = new ContactDisplay.ContactSearchProvider();
let contacts = csp.getInitialResultSet(['']);
contacts.length // 120 contacts

// METHOD 2:
const ContactSystem = Shell.ContactSystem;
let cs = ContactSystem.get_default();
let contacts2 = cs.initial_search(['']);
contacts2.length // 120 contacts
_

ContactSearchProvidergetInitialResultSetは基本的にContactSystem.get_default()の_initial_search_メソッドを呼び出すため、この2つのコードは(私が知る限り)同等です。

ただし、これらの同じビットのコードをgnome Shell拡張機能(たとえばenableメソッド)に入れると、global.log(contacts.length)またはglobal.log(contacts2.length)私は常に_0_を取得します。

したがって、何らかの理由で、このコードは鏡面では機能しますが、拡張機能ではnotです。どうしてこれなの?拡張機能が実行された時点で連絡先が読み込まれていませんか?連絡先検索プロバイダーがどういうわけか私に接続されていませんか?どうすれば回避できますか?

2

私はこれをgnome-Shellメーリングリストで尋ねました-ユーザーの連絡先が適切にロードされる前に、拡張機能がピースのかなり早い段階でロードされていることがわかりました。

連絡先リストを取得するコードスニペットに5秒の遅延を追加すると(システムにすべての連絡先をロードする機会を与えるため)、魅力的です。

2