[calls] new-call-box: Don't auto select offline accounts



commit 36b10bc7645dd60ad1e0721362d8176ed409f406
Author: Evangelos Ribeiro Tzaras <devrtz fortysixandtwo eu>
Date:   Fri May 20 10:17:09 2022 +0200

    new-call-box: Don't auto select offline accounts

 src/calls-new-call-box.c | 25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)
---
diff --git a/src/calls-new-call-box.c b/src/calls-new-call-box.c
index e03e559d..d35627c8 100644
--- a/src/calls-new-call-box.c
+++ b/src/calls-new-call-box.c
@@ -24,6 +24,7 @@
 
 #define G_LOG_DOMAIN "CallsNewCallBox"
 
+#include "calls-account.h"
 #include "calls-main-window.h"
 #include "calls-manager.h"
 #include "calls-new-call-box.h"
@@ -85,23 +86,39 @@ get_origin (CallsNewCallBox *self,
   CallsManager *manager = calls_manager_get_default ();
   CallsSettings *settings = calls_manager_get_settings (manager);
 
-  g_autoptr (CallsOrigin) origin = NULL;
   GListModel *model;
   gboolean auto_use_def_origin =
     calls_settings_get_use_default_origins (settings);
 
   if (auto_use_def_origin) {
+    guint n_items;
+
     model = calls_manager_get_suitable_origins (calls_manager_get_default (),
                                                 target);
-    if (g_list_model_get_n_items (model) == 0)
+    n_items = g_list_model_get_n_items (model);
+
+    if (n_items == 0)
       return NULL;
 
-    origin = g_list_model_get_item (model, 0);
+    for (guint i = 0; i < n_items; i++) {
+      g_autoptr (CallsOrigin) origin = g_list_model_get_item (model, i);
+      g_autofree char *origin_name = NULL;
 
-    return g_steal_pointer (&origin);
+      if (CALLS_IS_ACCOUNT (origin) &&
+          calls_account_get_state (CALLS_ACCOUNT (origin)) != CALLS_ACCOUNT_STATE_ONLINE)
+        continue;
+
+      origin_name = calls_origin_get_name (origin);
+      g_debug ("Using origin '%s' for call to '%s'",
+               origin_name, target);
+
+      return g_steal_pointer (&origin);
+    }
   } else {
     return get_selected_origin (self);
   }
+
+  return NULL;
 }
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]