Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Folks;
- using Gee;
- using TelepathyGLib;
- using Tpl;
- public class FolksLoader : Object {
- BackendStore backend_store;
- IndividualAggregator aggregator;
- AccountManager account_manager;
- ArrayList<string> account_ids;
- public FolksLoader () {
- account_ids = new ArrayList<string> ();
- backend_store = BackendStore.dup ();
- aggregator = new IndividualAggregator ();
- account_manager = AccountManager.dup ();
- load_accounts ();
- }
- public async void load_accounts () {
- // Load accounts and add them to account_ids then trigger load_backends
- try {
- yield account_manager.prepare_async (null);
- } catch (GLib.Error e) {
- critical ("Error in loading backends");
- }
- var accounts = account_manager.get_valid_accounts ();
- var log_manager = LogManager.dup_singleton ();
- foreach (Account account in accounts) {
- stdout.printf("Fetching contacts for %s\n", account.get_display_name ());
- account_ids.add (account.get_display_name ());
- }
- load_backends ();
- }
- public async void load_backends (){
- // Load backends and only load persona stores from accounts_ids
- yield backend_store.prepare ();
- try {
- yield backend_store.load_backends ();
- } catch (GLib.Error e) {
- critical ("Error in loading backends");
- }
- Gee.Collection<Folks.Backend> backends = backend_store.list_backends ();
- foreach (Backend b in backends) {
- foreach (string a in b.persona_stores.keys) {
- if (account_ids. contains(b.persona_stores.get (a).display_name))
- load_backend_personas (b.persona_stores.get (a));
- }
- }
- }
- public async void load_backend_personas (Folks.PersonaStore a) {
- yield a.prepare ();
- if (a.is_prepared) {
- var contacts = a.personas;
- stdout.printf("Backend %s: %i contacts\n", a.display_name, contacts.size);
- }
- }
- }
- public void main (string[] args) {
- FolksLoader loader;
- var mainloop = new MainLoop ();
- loader = new FolksLoader ();
- mainloop.run ();
- }
Add Comment
Please, Sign In to add comment