Guest User

Untitled

a guest
Sep 11th, 2018
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Vala 2.24 KB | None | 0 0
  1. using Folks;
  2. using Gee;
  3. using TelepathyGLib;
  4. using Tpl;
  5.  
  6. public class FolksLoader : Object {
  7.     BackendStore backend_store;
  8.     IndividualAggregator aggregator;
  9.     AccountManager account_manager;
  10.     ArrayList<string> account_ids;
  11.  
  12.     public FolksLoader () {
  13.         account_ids = new ArrayList<string> ();
  14.         backend_store = BackendStore.dup ();
  15.         aggregator = new IndividualAggregator ();
  16.         account_manager = AccountManager.dup ();
  17.         load_accounts ();
  18.     }
  19.  
  20.     public async void load_accounts () {
  21.         // Load accounts and add them to account_ids then trigger load_backends
  22.         try {
  23.             yield account_manager.prepare_async (null);
  24.         } catch (GLib.Error e) {
  25.                 critical ("Error in loading backends");
  26.         }
  27.         var accounts = account_manager.get_valid_accounts ();
  28.         var log_manager = LogManager.dup_singleton ();
  29.         foreach (Account account in accounts) {
  30.             stdout.printf("Fetching contacts for %s\n", account.get_display_name ());
  31.             account_ids.add (account.get_display_name ());
  32.         }
  33.         load_backends ();
  34.     }
  35.  
  36.     public async void load_backends (){
  37.         // Load backends and only load persona stores from accounts_ids
  38.         yield backend_store.prepare ();
  39.         try {
  40.             yield backend_store.load_backends ();
  41.         } catch (GLib.Error e) {
  42.                 critical ("Error in loading backends");
  43.         }
  44.         Gee.Collection<Folks.Backend> backends = backend_store.list_backends ();
  45.         foreach (Backend b in backends) {
  46.             foreach (string a in b.persona_stores.keys) {
  47.                 if (account_ids. contains(b.persona_stores.get (a).display_name))
  48.                     load_backend_personas (b.persona_stores.get (a));
  49.             }
  50.         }
  51.     }
  52.  
  53.     public async void load_backend_personas (Folks.PersonaStore a) {
  54.         yield a.prepare ();
  55.         if (a.is_prepared) {
  56.             var contacts = a.personas;
  57.             stdout.printf("Backend %s: %i contacts\n", a.display_name, contacts.size);
  58.         }
  59.     }
  60. }
  61.  
  62. public void main (string[] args) {
  63.     FolksLoader loader;
  64.     var mainloop = new MainLoop ();
  65.     loader = new FolksLoader ();
  66.     mainloop.run ();
  67. }
Add Comment
Please, Sign In to add comment