Implemented 'Remember my identity choice for this service' checkbox on main selector...
[moonshot-ui.git] / src / moonshot-identity-request.vala
index b00a5e5..2e1c132 100644 (file)
@@ -32,6 +32,8 @@
 public delegate void ReturnIdentityCallback(IdentityRequest request);
 
 public class IdentityRequest : Object {
+    static MoonshotLogger logger = get_logger("IdentityRequest");
+
     public IdCard? id_card = null;
     public bool complete = false;
     public bool select_default = false;
@@ -79,12 +81,12 @@ public class IdentityRequest : Object {
         return false;
     }
 
-    public void return_identity(IdCard? id_card) {
+    public void return_identity(IdCard? id_card, bool update_card = true) {
         this.id_card = id_card;
         this.complete = true;
 
         /* update id_card service list */
-        if (id_card != null && this.service != null && this.service != "")
+        if (update_card && id_card != null && this.service != null && this.service != "")
         {
             bool duplicate_service = false;
 
@@ -93,21 +95,17 @@ public class IdentityRequest : Object {
                 if (service == this.service)
                     duplicate_service = true;
             }
+            logger.trace("return_identity: duplicate_service=" + duplicate_service.to_string());
             if (duplicate_service == false)
             {
-                string[] services = new string[id_card.services.length + 1];
-
-                for (int i = 0; i < id_card.services.length; i++)
-                    services[i] = id_card.services[i];
-
-                services[id_card.services.length] = this.service;
-                id_card.services = services;
+                id_card.add_service(this.service);
 
                 this.id_card = this.parent_app.model.update_card(id_card);
             }
         }
 
         return_if_fail(callback != null);
+        logger.trace("return_identity: invoking callback");
         callback(this);
     }