gnome-shell-extension: JS que funciona en espejo no funciona en extensión

gnome-shell-extension: JS que funciona en espejo no funciona en extensión

Tengo el siguiente fragmento de código que (en el espejo) me da una lista de contactos que tengo (administrados por 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

Estos dos fragmentos de código son (hasta donde yo sé) equivalentes, ya que ContactSearchProviderbásicamente getInitialResultSetllama al initial_searchmétodo de ContactSystem.get_default().

Sin embargo, cuando pongo estosmismobits de código en una extensión de gnome Shell (digamos el enablemétodo), y yo global.log(contacts.length)o global.log(contacts2.length),siempre lo consigo0.

Por lo tanto, por alguna razón, este código funciona en el espejo, peronoen una extensión. ¿Por qué es esto? ¿Los contactos no están cargados en el momento en que se ejecuta la extensión? ¿El proveedor de búsqueda de contactos de alguna manera no está conectado conmigo? ¿Cómo puedo solucionarlo?

Respuesta1

Pregunté esto en la lista de correo de gnome-Shell: resulta que las extensiones se cargan bastante temprano en el artículo, antes de que los contactos de un usuario se hayan cargado correctamente.

Agregar un retraso de 5 segundos al fragmento de código que recupera la lista de contactos (para darle al sistema la oportunidad de cargar todos los contactos) funciona de maravilla.

información relacionada