[epiphany/wip/sync: 31/31] prefs-dialog: After sign in, start periodical sync only after PrefsDialog is closed



commit a6b6f75e26f614915172cb984c63c90fe4299f9a
Author: Gabriel Ivascu <ivascu gabriel59 gmail com>
Date:   Fri Apr 14 18:48:40 2017 +0300

    prefs-dialog: After sign in, start periodical sync only after PrefsDialog is closed

 src/prefs-dialog.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)
---
diff --git a/src/prefs-dialog.c b/src/prefs-dialog.c
index b4a5c76..fc5c034 100644
--- a/src/prefs-dialog.c
+++ b/src/prefs-dialog.c
@@ -127,6 +127,7 @@ struct _PrefsDialog {
   GtkWidget *sync_frequency_60_min_radiobutton;
   GtkWidget *sync_now_button;
   guint32 sync_frequency;
+  gboolean sync_was_signed_in;
 
   WebKitWebView *fxa_web_view;
   WebKitUserContentManager *fxa_manager;
@@ -164,8 +165,11 @@ prefs_dialog_finalize (GObject *object)
     g_object_unref (dialog->fxa_manager);
   }
 
-  if (dialog->sync_frequency != g_settings_get_uint (EPHY_SETTINGS_SYNC, EPHY_PREFS_SYNC_FREQUENCY))
-    g_signal_emit_by_name (dialog->sync_service, "sync-frequency-changed");
+  if (ephy_sync_service_is_signed_in (dialog->sync_service) && !dialog->sync_was_signed_in) {
+    ephy_sync_service_start_periodical_sync (dialog->sync_service);
+  } else if (dialog->sync_frequency != g_settings_get_uint (EPHY_SETTINGS_SYNC, EPHY_PREFS_SYNC_FREQUENCY)) {
+      g_signal_emit_by_name (dialog->sync_service, "sync-frequency-changed");
+  }
 
   G_OBJECT_CLASS (prefs_dialog_parent_class)->finalize (object);
 }
@@ -238,9 +242,6 @@ sync_secrets_store_finished_cb (EphySyncService *service,
                            EPHY_PREFS_SYNC_USER,
                            ephy_sync_service_get_user_email (service));
 
-    /* Start syncing. */
-    ephy_sync_service_start_periodical_sync (service);
-
     g_free (text);
     g_free (account);
   } else {
@@ -457,6 +458,7 @@ on_sync_sign_out_button_clicked (GtkWidget   *button,
                       FALSE, FALSE, 0);
 
   g_settings_set_boolean (EPHY_SETTINGS_SYNC, EPHY_PREFS_SYNC_BOOKMARKS_INITIAL, TRUE);
+  dialog->sync_was_signed_in = FALSE;
 }
 
 static void
@@ -1589,8 +1591,9 @@ setup_sync_page (PrefsDialog *dialog)
 
   sync_settings = ephy_settings_get (EPHY_PREFS_SYNC_SCHEMA);
   dialog->sync_service = ephy_shell_get_sync_service (ephy_shell_get_default ());
+  dialog->sync_was_signed_in = ephy_sync_service_is_signed_in (dialog->sync_service);
 
-  if (!ephy_sync_service_is_signed_in (dialog->sync_service)) {
+  if (!dialog->sync_was_signed_in) {
     sync_setup_firefox_iframe (dialog);
     gtk_container_remove (GTK_CONTAINER (dialog->sync_page_box),
                           dialog->sync_firefox_account_box);


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