gnome-shell-extension: JS, das in Looking Glass funktioniert, funktioniert in der Erweiterung nicht

gnome-shell-extension: JS, das in Looking Glass funktioniert, funktioniert in der Erweiterung nicht

Ich habe den folgenden Codeausschnitt, der mir (im Blickfeld) eine Liste meiner Kontakte anzeigt (verwaltet von 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

Diese beiden Codeteile sind (soweit ich weiß) gleichwertig, da ContactSearchProviderim getInitialResultSetGrunde die initial_searchMethode von aufruft ContactSystem.get_default().

Wenn ich diese jedochDasselbeTeile des Codes in eine Gnome-Shell-Erweiterung (sagen wir die enableMethode), und ich global.log(contacts.length)oder global.log(contacts2.length),Ich bekomme immer0.

Aus irgendeinem Grund funktioniert dieser Code in Looking-Glass, abernichtin einer Erweiterung. Warum ist das so? Werden die Kontakte nicht geladen, wenn die Erweiterung ausgeführt wird? Ist der Kontaktsuchanbieter irgendwie nicht mit mir verbunden? Wie kann ich das umgehen?

Antwort1

Ich habe dies auf der Gnome-Shell-Mailingliste gefragt – es stellte sich heraus, dass die Erweiterungen ziemlich früh im Stück geladen werden, bevor die Kontakte eines Benutzers richtig geladen wurden.

Das Hinzufügen einer 5-Sekunden-Verzögerung zum Code-Snippet, das die Kontaktliste abruft (um dem System die Möglichkeit zu geben, alle Kontakte zu laden), funktioniert wunderbar.

verwandte Informationen