расширение оболочки гнома: JS, который работает в зеркале, не делает в расширении

У меня есть следующий отрывок кода, который (в зеркале) дает мне список контактов, которые я имею (управляемый контактами гнома):

// 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

Это, которое две части кода (насколько я знаю), эквивалентный, как ContactSearchProvider getInitialResultSet в основном вызовы initial_search метод ContactSystem.get_default().

Однако, когда я поместил эти те же биты кода в расширение оболочки гнома (скажите enable метод), и я global.log(contacts.length) или global.log(contacts2.length), Я всегда добираюсь 0.

Следовательно по некоторым причинам этот код работает в зеркале, но не в расширении. Почему это? Разве контакты не загружаются в точке, расширение выполняется? Контакт, ищут поставщика, так или иначе не соединенного до меня? Как я могу работать вокруг этого?

2
задан 22 April 2012 в 16:33

1 ответ

Я спросил об этом в списке рассылки gnome-shell - оказалось, что расширения загружаются довольно рано, до того, как контакты пользователя будут загружены должным образом.

Добавление 5-секундной задержки к фрагменту кода, который извлекает список контактов (чтобы дать системе возможность загрузить все контакты), создает эффект.

0
ответ дан 22 April 2012 в 16:33

Другие вопросы по тегам:

Похожие вопросы: