[gnome-photos/wip/uajain/de_dup: 3/3] share-point-google: Add remote object after uploading image



commit 75ecc8ca4fe0c38013d6ba7983bcab6941fd7541
Author: Umang Jain <mailumangjain gmail com>
Date:   Wed Aug 24 15:41:49 2016 +0530

    share-point-google: Add remote object after uploading image
    
    https://bugzilla.gnome.org/show_bug.cgi?id=770267

 src/photos-share-point-google.c |   60 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 1 deletions(-)
---
diff --git a/src/photos-share-point-google.c b/src/photos-share-point-google.c
index 94bd7ed..7b7fe6e 100644
--- a/src/photos-share-point-google.c
+++ b/src/photos-share-point-google.c
@@ -26,6 +26,7 @@
 #include <glib/gi18n.h>
 
 #include "photos-base-item.h"
+#include "photos-filterable.h"
 #include "photos-share-point-google.h"
 #include "photos-source.h"
 #include "photos-utils.h"
@@ -91,6 +92,55 @@ photos_share_point_google_parse_error (PhotosSharePoint *self, GError *error)
 }
 
 
+
+static void
+photos_share_point_google_entry_callback (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+  GTask *task = G_TASK (user_data);
+  GError *error = NULL;
+
+  photos_share_point_online_tracker_entry_finish (PHOTOS_SHARE_POINT_ONLINE (source_object), res, &error);
+  if (error != NULL)
+    {
+      g_warning ("Failed to create tracker entry and embed metadata: %s", error->message);
+      g_task_return_error (task, error);
+      goto out;
+    }
+
+  g_task_return_boolean (task, TRUE);
+  g_print ("Everything was done cleanly!\n");
+
+out:
+  g_object_unref (task);
+}
+
+
+static void
+photos_share_point_google_create_tracker_entry (PhotosSharePointGoogle *self, GDataPicasaWebFile 
*file_entry, gpointer user_data)
+{
+  PhotosSharePointGoogleShareData *data;
+  GTask *task = G_TASK (user_data);
+  GCancellable *cancellable;
+  const gchar *id;
+  const gchar *title;
+
+  cancellable = g_task_get_cancellable (task);
+  data = (PhotosSharePointGoogleShareData *) g_task_get_task_data (task);
+
+  id = gdata_entry_get_id (GDATA_ENTRY (file_entry));
+  title = gdata_entry_get_title (GDATA_ENTRY (file_entry));
+
+  photos_share_point_online_tracker_entry_async (PHOTOS_SHARE_POINT_ONLINE (self),
+                                                cancellable,
+                                                data->item,
+                                                title,
+                                                id,
+                                                photos_share_point_google_entry_callback,
+                                                g_object_ref (task));
+  g_object_unref (task);
+}
+
+
 static void
 photos_share_point_google_share_save_to_stream (GObject *source_object, GAsyncResult *res, gpointer 
user_data)
 {
@@ -121,7 +171,8 @@ photos_share_point_google_share_save_to_stream (GObject *source_object, GAsyncRe
       goto out;
     }
 
-  g_task_return_boolean (task, TRUE);
+  /* Map remote to local object and vice-versa */
+  photos_share_point_google_create_tracker_entry (self, file_entry, g_object_ref (task));
 
  out:
   g_clear_object (&file_entry);
@@ -266,6 +317,12 @@ photos_share_point_google_dispose (GObject *object)
 
 
 static void
+photos_share_point_google_finalize (GObject *object)
+{
+  G_OBJECT_CLASS (photos_share_point_google_parent_class)->dispose (object);
+}
+
+static void
 photos_share_point_google_init (PhotosSharePointGoogle *self)
 {
 }
@@ -280,6 +337,7 @@ photos_share_point_google_class_init (PhotosSharePointGoogleClass *class)
   object_class->constructed = photos_share_point_google_constructed;
   object_class->dispose = photos_share_point_google_dispose;
   share_point_class->parse_error = photos_share_point_google_parse_error;
+  object_class->finalize = photos_share_point_google_finalize;
   share_point_class->share_async = photos_share_point_google_share_async;
   share_point_class->share_finish = photos_share_point_google_share_finish;
 }


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