summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-05 02:13:15 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-05 02:13:15 +0000
commitf79ba42613fe603d251ef509bc52a8e54412a9e6 (patch)
tree1718e1fa462aaae12607d6f858ada83012c7602b
parent02b47bc0fd79b80f97324e29eb65d62b336cf20a (diff)
automatic import of gnome-photosopeneuler24.03_LTS
-rw-r--r--.gitignore1
-rw-r--r--0001-Remove-Facebook-Flickr-and-Google-support.patch1987
-rw-r--r--gnome-photos.spec593
-rw-r--r--sources1
4 files changed, 2582 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..697086a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/gnome-photos-40.0.tar.xz
diff --git a/0001-Remove-Facebook-Flickr-and-Google-support.patch b/0001-Remove-Facebook-Flickr-and-Google-support.patch
new file mode 100644
index 0000000..8c6f104
--- /dev/null
+++ b/0001-Remove-Facebook-Flickr-and-Google-support.patch
@@ -0,0 +1,1987 @@
+From ec6ed17f9e55b73e7bf42cf9e119d6c2504e58ba Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir@gnome.org>
+Date: Fri, 23 Apr 2021 02:54:59 +0200
+Subject: [PATCH] Remove Facebook, Flickr and Google support
+
+In theory, support for Facebook, Flickr and Google is still desired.
+However, right now Facebook and Google are completely broken, and the
+Grilo code used for Flickr support has code quality issues.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1913641
+---
+ meson.build | 3 -
+ src/meson.build | 7 -
+ src/photos-application.c | 24 --
+ src/photos-facebook-item.c | 339 ---------------------
+ src/photos-facebook-item.h | 36 ---
+ src/photos-flickr-item.c | 407 -------------------------
+ src/photos-flickr-item.h | 35 ---
+ src/photos-google-item.c | 349 ---------------------
+ src/photos-google-item.h | 36 ---
+ src/photos-share-point-google.c | 516 --------------------------------
+ src/photos-share-point-google.h | 35 ---
+ src/photos-utils.c | 8 -
+ 12 files changed, 1795 deletions(-)
+ delete mode 100644 src/photos-facebook-item.c
+ delete mode 100644 src/photos-facebook-item.h
+ delete mode 100644 src/photos-flickr-item.c
+ delete mode 100644 src/photos-flickr-item.h
+ delete mode 100644 src/photos-google-item.c
+ delete mode 100644 src/photos-google-item.h
+ delete mode 100644 src/photos-share-point-google.c
+ delete mode 100644 src/photos-share-point-google.h
+
+diff --git a/meson.build b/meson.build
+index ee1ca0dd3080..0d8ca768da1d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -166,13 +166,10 @@ goa_dep = dependency('goa-1.0', version: '>= 3.8.0')
+ config_h.set('GOA_API_IS_SUBJECT_TO_CHANGE', true)
+
+ gobject_dep = dependency('gobject-2.0')
+-grilo_dep = dependency('grilo-0.3', version: '>= 0.3.5')
+ gsettings_desktop_schemas_dep = dependency('gsettings-desktop-schemas')
+ gtk_dep = dependency('gtk+-3.0', version: '>= 3.22.16')
+ gtk_unix_print_dep = dependency('gtk+-unix-print-3.0')
+ libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.26.0')
+-libgdata_dep = dependency('libgdata', version: '>= 0.17.13')
+-libgfgraph_dep = dependency('libgfbgraph-0.2', version: '>= 0.2.1')
+ libhandy_dep = dependency ('libhandy-1', version: '>= 1.1.90')
+ libjpeg_dep = dependency('libjpeg')
+ libpng_dep = dependency('libpng16')
+diff --git a/src/meson.build b/src/meson.build
+index 154f7d528814..becaa9cb480f 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -130,15 +130,12 @@ sources = common_sources + files(
+ 'photos-embed.c',
+ 'photos-empty-results-box.c',
+ 'photos-error-box.c',
+- 'photos-facebook-item.c',
+ 'photos-fetch-collection-state-job.c',
+ 'photos-fetch-collections-job.c',
+ 'photos-fetch-ids-job.c',
+ 'photos-fetch-metas-job.c',
+ 'photos-filterable.c',
+- 'photos-flickr-item.c',
+ 'photos-gesture-zoom.c',
+- 'photos-google-item.c',
+ 'photos-image-view.c',
+ 'photos-image-view-helper.c',
+ 'photos-import-dialog.c',
+@@ -188,7 +185,6 @@ sources = common_sources + files(
+ 'photos-share-notification.c',
+ 'photos-share-point.c',
+ 'photos-share-point-email.c',
+- 'photos-share-point-google.c',
+ 'photos-share-point-manager.c',
+ 'photos-share-point-online.c',
+ 'photos-single-item-job.c',
+@@ -387,13 +383,10 @@ deps = common_deps + [
+ geocode_glib_dep,
+ gexiv_dep,
+ goa_dep,
+- grilo_dep,
+ gsettings_desktop_schemas_dep,
+ gtk_dep,
+ gtk_unix_print_dep,
+ libgd_dep,
+- libgdata_dep,
+- libgfgraph_dep,
+ libhandy_dep,
+ m_dep,
+ tracker_sparql_dep,
+diff --git a/src/photos-application.c b/src/photos-application.c
+index 9017fd3ef621..83ec1ad65916 100644
+--- a/src/photos-application.c
++++ b/src/photos-application.c
+@@ -35,7 +35,6 @@
+ #include <gio/gio.h>
+ #include <glib.h>
+ #include <glib/gi18n.h>
+-#include <grilo.h>
+ #include <handy.h>
+ #include <tracker-sparql.h>
+
+@@ -2586,11 +2585,9 @@ static void
+ photos_application_startup (GApplication *application)
+ {
+ PhotosApplication *self = PHOTOS_APPLICATION (application);
+- GrlRegistry *registry;
+ GtkIconTheme *icon_theme;
+ GtkSettings *settings;
+ GVariant *state;
+- gboolean grl_plugins_loaded;
+ const gchar *delete_accels[3] = {"Delete", "KP_Delete", NULL};
+ const gchar *edit_accels[2] = {"<Primary>e", NULL};
+ const gchar *fullscreen_accels[2] = {"F11", NULL};
+@@ -2613,27 +2610,6 @@ photos_application_startup (GApplication *application)
+
+ photos_gegl_init ();
+
+- grl_init (NULL, NULL);
+- registry = grl_registry_get_default ();
+-
+- {
+- g_autoptr (GError) error = NULL;
+-
+- grl_plugins_loaded = grl_registry_load_all_plugins (registry, FALSE, &error);
+- if (error != NULL)
+- g_warning ("Unable to load Grilo plugins: %s", error->message);
+- }
+-
+- if (grl_plugins_loaded)
+- {
+- {
+- g_autoptr (GError) error = NULL;
+-
+- if (!grl_registry_activate_plugin_by_id (registry, "grl-flickr", &error))
+- g_warning ("Unable to activate Grilo's Flickr plugin: %s", error->message);
+- }
+- }
+-
+ self->create_window_cancellable = g_cancellable_new ();
+ self->refresh_miner_ids = g_hash_table_new (g_direct_hash, g_direct_equal);
+
+diff --git a/src/photos-facebook-item.c b/src/photos-facebook-item.c
+deleted file mode 100644
+index 9053550a0409..000000000000
+--- a/src/photos-facebook-item.c
++++ /dev/null
+@@ -1,339 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2013 Álvaro Peña
+- * Copyright © 2014 – 2019 Red Hat, Inc.
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- * + Documents
+- */
+-
+-
+-#include "config.h"
+-
+-#include <gfbgraph/gfbgraph.h>
+-#include <gfbgraph/gfbgraph-goa-authorizer.h>
+-#include <gio/gio.h>
+-#include <glib.h>
+-#include <glib/gi18n.h>
+-#include <goa/goa.h>
+-
+-#include "photos-base-manager.h"
+-#include "photos-debug.h"
+-#include "photos-error.h"
+-#include "photos-facebook-item.h"
+-#include "photos-search-context.h"
+-#include "photos-source.h"
+-#include "photos-utils.h"
+-
+-
+-struct _PhotosFacebookItem
+-{
+- PhotosBaseItem parent_instance;
+- PhotosBaseManager *src_mngr;
+-};
+-
+-
+-G_DEFINE_TYPE_WITH_CODE (PhotosFacebookItem, photos_facebook_item, PHOTOS_TYPE_BASE_ITEM,
+- photos_utils_ensure_extension_points ();
+- g_io_extension_point_implement (PHOTOS_BASE_ITEM_EXTENSION_POINT_NAME,
+- g_define_type_id,
+- "facebook",
+- 0));
+-
+-
+-static gchar *
+-photos_facebook_item_create_filename_fallback (PhotosBaseItem *item)
+-{
+- const gchar *const facebook_prefix = "facebook:";
+- const gchar *identifier;
+- const gchar *mime_type;
+- g_autofree gchar *extension = NULL;
+- gchar *ret_val;
+- gsize prefix_len;
+-
+- prefix_len = strlen (facebook_prefix);
+- identifier = photos_base_item_get_identifier (item) + prefix_len;
+- mime_type = photos_base_item_get_mime_type (item);
+- extension = photos_utils_get_extension_from_mime_type (mime_type);
+- if (extension == NULL)
+- extension = g_strdup ("tmp");
+-
+- ret_val = g_strdup_printf ("%s.%s", identifier, extension);
+-
+- return ret_val;
+-}
+-
+-
+-static gchar *
+-photos_facebook_item_create_name_fallback (PhotosBaseItem *item)
+-{
+- PhotosFacebookItem *self = PHOTOS_FACEBOOK_ITEM (item);
+- g_autoptr (GDateTime) date_modified = NULL;
+- const gchar *provider_name;
+- g_autofree gchar *date_modified_str = NULL;
+- gchar *ret_val;
+- gint64 mtime;
+-
+- provider_name = photos_utils_get_provider_name (self->src_mngr, item);
+-
+- mtime = photos_base_item_get_mtime (item);
+- date_modified = g_date_time_new_from_unix_local (mtime);
+- date_modified_str = g_date_time_format (date_modified, "%x");
+-
+- /* Translators: this is the fallback title in the form
+- * "Facebook — 2nd January 2013".
+- */
+- ret_val = g_strdup_printf (_("%s — %s"), provider_name, date_modified_str);
+-
+- return ret_val;
+-}
+-
+-
+-static GFBGraphPhoto *
+-photos_facebook_get_gfbgraph_photo (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
+-{
+- PhotosFacebookItem *self = PHOTOS_FACEBOOK_ITEM (item);
+- GFBGraphGoaAuthorizer *authorizer = NULL; /* TODO: use g_autoptr */
+- GFBGraphPhoto *photo = NULL;
+- GoaObject *object;
+- PhotosSource *source;
+- const gchar *const facebook_prefix = "facebook:";
+- const gchar *identifier;
+- const gchar *resource_urn;
+- gsize prefix_len;
+-
+- resource_urn = photos_base_item_get_resource_urn (item);
+- source = PHOTOS_SOURCE (photos_base_manager_get_object_by_id (self->src_mngr, resource_urn));
+- object = photos_source_get_goa_object (source);
+- authorizer = gfbgraph_goa_authorizer_new (object);
+-
+- if (!gfbgraph_authorizer_refresh_authorization (GFBGRAPH_AUTHORIZER (authorizer), cancellable, error))
+- goto out;
+-
+- prefix_len = strlen (facebook_prefix);
+- identifier = photos_base_item_get_identifier (item) + prefix_len;
+- photo = gfbgraph_photo_new_from_id (GFBGRAPH_AUTHORIZER (authorizer), identifier, error);
+-
+- out:
+- g_clear_object (&authorizer);
+- return photo;
+-}
+-
+-
+-static gboolean
+-photos_facebook_item_create_thumbnail (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
+-{
+- g_autoptr (GFile) local_file = NULL;
+- g_autoptr (GFile) remote_file = NULL;
+- GFBGraphPhoto *photo = NULL; /* TODO: use g_autoptr */
+- const GFBGraphPhotoImage *thumbnail_image;
+- gboolean ret_val = FALSE;
+- const gchar *uri;
+- g_autofree gchar *local_dir = NULL;
+- g_autofree gchar *local_path = NULL;
+- gint64 height;
+- gint64 width;
+- guint size;
+-
+- photo = photos_facebook_get_gfbgraph_photo (item, cancellable, error);
+- if (photo == NULL)
+- goto out;
+-
+- size = (guint) photos_utils_get_icon_size ();
+- thumbnail_image = gfbgraph_photo_get_image_near_width (photo, size);
+- if (thumbnail_image == NULL)
+- {
+- g_set_error (error, PHOTOS_ERROR, 0, "Failed to find an image for the thumbnail");
+- goto out;
+- }
+-
+- remote_file = g_file_new_for_uri (thumbnail_image->source);
+-
+- local_path = photos_base_item_create_thumbnail_path (item);
+- local_file = g_file_new_for_path (local_path);
+- local_dir = g_path_get_dirname (local_path);
+- g_mkdir_with_parents (local_dir, 0700);
+-
+- uri = photos_base_item_get_uri (item);
+-
+- height = photos_base_item_get_height (item);
+- width = photos_base_item_get_width (item);
+-
+- photos_debug (PHOTOS_DEBUG_NETWORK, "Downloading %s from Facebook to %s", thumbnail_image->source, local_path);
+- if (!photos_utils_file_copy_as_thumbnail (remote_file,
+- local_file,
+- uri,
+- height,
+- width,
+- cancellable,
+- error))
+- goto out;
+-
+- ret_val = TRUE;
+-
+- out:
+- g_clear_object (&photo);
+- return ret_val;
+-}
+-
+-
+-static GFile *
+-photos_facebook_item_download (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
+-{
+- GFile *ret_val = NULL;
+- g_autoptr (GFile) local_file = NULL;
+- g_autoptr (GFile) remote_file = NULL;
+- GFBGraphPhoto *photo = NULL; /* TODO: use g_autoptr */
+- const GFBGraphPhotoImage *higher_image;
+- const gchar *cache_dir;
+- const gchar *local_filename;
+- g_autofree gchar *local_dir = NULL;
+- g_autofree gchar *local_path = NULL;
+-
+- cache_dir = g_get_user_cache_dir ();
+- local_dir = g_build_filename (cache_dir, PACKAGE_TARNAME, "facebook", NULL);
+- g_mkdir_with_parents (local_dir, 0700);
+-
+- local_filename = photos_base_item_get_filename (item);
+- local_path = g_build_filename (local_dir, local_filename, NULL);
+- local_file = g_file_new_for_path (local_path);
+- if (g_file_test (local_path, G_FILE_TEST_EXISTS))
+- goto end;
+-
+- photo = photos_facebook_get_gfbgraph_photo (item, cancellable, error);
+- if (photo == NULL)
+- goto out;
+-
+- higher_image = gfbgraph_photo_get_image_hires (photo);
+- if (higher_image == NULL)
+- {
+- g_set_error (error, PHOTOS_ERROR, 0, "Failed to find a high resolution image");
+- goto out;
+- }
+-
+- remote_file = g_file_new_for_uri (higher_image->source);
+-
+- photos_debug (PHOTOS_DEBUG_NETWORK, "Downloading %s from Facebook to %s", higher_image->source, local_path);
+- if (!g_file_copy (remote_file,
+- local_file,
+- G_FILE_COPY_ALL_METADATA | G_FILE_COPY_OVERWRITE,
+- cancellable,
+- NULL,
+- NULL,
+- error))
+- {
+- g_file_delete (local_file, NULL, NULL);
+- goto out;
+- }
+-
+- end:
+- ret_val = g_object_ref (local_file);
+-
+- out:
+- g_clear_object (&photo);
+- return ret_val;
+-}
+-
+-
+-static GtkWidget *
+-photos_facebook_item_get_source_widget (PhotosBaseItem *item)
+-{
+- PhotosFacebookItem *self = PHOTOS_FACEBOOK_ITEM (item);
+- GtkWidget *source_widget;
+- const gchar *name;
+-
+- name = photos_utils_get_provider_name (self->src_mngr, item);
+- source_widget = gtk_link_button_new_with_label ("https://www.facebook.com/", name);
+- gtk_widget_set_halign (source_widget, GTK_ALIGN_START);
+-
+- return source_widget;
+-}
+-
+-
+-/* TODO */
+-static void
+-photos_facebook_item_open (PhotosBaseItem *item, GtkWindow *parent, guint32 timestamp)
+-{
+- const gchar *facebook_uri;
+-
+- facebook_uri = photos_base_item_get_uri (item);
+-
+- {
+- g_autoptr (GError) error = NULL;
+-
+- gtk_show_uri_on_window (parent, facebook_uri, timestamp, &error);
+- if (error != NULL)
+- g_warning ("Unable to show URI %s: %s", facebook_uri, error->message);
+- }
+-}
+-
+-
+-static void
+-photos_facebook_item_constructed (GObject *object)
+-{
+- PhotosFacebookItem *self = PHOTOS_FACEBOOK_ITEM (object);
+- const gchar *name;
+-
+- G_OBJECT_CLASS (photos_facebook_item_parent_class)->constructed (object);
+-
+- name = photos_utils_get_provider_name (self->src_mngr, PHOTOS_BASE_ITEM (self));
+- photos_base_item_set_default_app_name (PHOTOS_BASE_ITEM (self), name);
+-}
+-
+-
+-static void
+-photos_facebook_item_dispose (GObject *object)
+-{
+- PhotosFacebookItem *self = PHOTOS_FACEBOOK_ITEM (object);
+-
+- g_clear_object (&self->src_mngr);
+-
+- G_OBJECT_CLASS (photos_facebook_item_parent_class)->dispose (object);
+-}
+-
+-
+-static void
+-photos_facebook_item_init (PhotosFacebookItem *self)
+-{
+- GApplication *app;
+- PhotosSearchContextState *state;
+-
+- app = g_application_get_default ();
+- state = photos_search_context_get_state (PHOTOS_SEARCH_CONTEXT (app));
+-
+- self->src_mngr = g_object_ref (state->src_mngr);
+-}
+-
+-
+-static void
+-photos_facebook_item_class_init (PhotosFacebookItemClass *class)
+-{
+- GObjectClass *object_class = G_OBJECT_CLASS (class);
+- PhotosBaseItemClass *base_item_class = PHOTOS_BASE_ITEM_CLASS (class);
+-
+- base_item_class->miner_name = "org.gnome.OnlineMiners.Facebook";
+- base_item_class->miner_object_path = "/org/gnome/OnlineMiners/Facebook";
+-
+- object_class->constructed = photos_facebook_item_constructed;
+- object_class->dispose = photos_facebook_item_dispose;
+- base_item_class->create_filename_fallback = photos_facebook_item_create_filename_fallback;
+- base_item_class->create_name_fallback = photos_facebook_item_create_name_fallback;
+- base_item_class->create_thumbnail = photos_facebook_item_create_thumbnail;
+- base_item_class->download = photos_facebook_item_download;
+- base_item_class->get_source_widget = photos_facebook_item_get_source_widget;
+- base_item_class->open = photos_facebook_item_open;
+-}
+diff --git a/src/photos-facebook-item.h b/src/photos-facebook-item.h
+deleted file mode 100644
+index 7d4a4924769b..000000000000
+--- a/src/photos-facebook-item.h
++++ /dev/null
+@@ -1,36 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2013 Álvaro Peña
+- * Copyright © 2016 – 2019 Red Hat, Inc.
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- * + Documents
+- */
+-
+-#ifndef PHOTOS_FACEBOOK_ITEM_H
+-#define PHOTOS_FACEBOOK_ITEM_H
+-
+-#include "photos-base-item.h"
+-
+-G_BEGIN_DECLS
+-
+-#define PHOTOS_TYPE_FACEBOOK_ITEM (photos_facebook_item_get_type ())
+-G_DECLARE_FINAL_TYPE (PhotosFacebookItem, photos_facebook_item, PHOTOS, FACEBOOK_ITEM, PhotosBaseItem);
+-
+-G_END_DECLS
+-
+-#endif /* PHOTOS_FACEBOOK_ITEM_H */
+diff --git a/src/photos-flickr-item.c b/src/photos-flickr-item.c
+deleted file mode 100644
+index b9f81d7c04c5..000000000000
+--- a/src/photos-flickr-item.c
++++ /dev/null
+@@ -1,407 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2013 – 2019 Red Hat, Inc.
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- * + Documents
+- */
+-
+-
+-#include "config.h"
+-
+-#include <string.h>
+-
+-#include <gio/gio.h>
+-#include <glib.h>
+-#include <glib/gi18n.h>
+-#include <goa/goa.h>
+-#include <grilo.h>
+-
+-#include "photos-base-manager.h"
+-#include "photos-debug.h"
+-#include "photos-error.h"
+-#include "photos-flickr-item.h"
+-#include "photos-search-context.h"
+-#include "photos-source.h"
+-#include "photos-utils.h"
+-
+-
+-struct _PhotosFlickrItem
+-{
+- PhotosBaseItem parent_instance;
+- PhotosBaseManager *src_mngr;
+-};
+-
+-
+-G_DEFINE_TYPE_WITH_CODE (PhotosFlickrItem, photos_flickr_item, PHOTOS_TYPE_BASE_ITEM,
+- photos_utils_ensure_extension_points ();
+- g_io_extension_point_implement (PHOTOS_BASE_ITEM_EXTENSION_POINT_NAME,
+- g_define_type_id,
+- "flickr",
+- 0));
+-
+-
+-typedef struct _PhotosFlickrItemSyncData PhotosFlickrItemSyncData;
+-
+-struct _PhotosFlickrItemSyncData
+-{
+- GError **error;
+- GMainLoop *loop;
+- gboolean op_res;
+-};
+-
+-
+-static gchar *
+-photos_flickr_item_create_filename_fallback (PhotosBaseItem *item)
+-{
+- g_autoptr (GFile) file = NULL;
+- const gchar *uri;
+- gchar *ret_val;
+-
+- uri = photos_base_item_get_uri (item);
+- file = g_file_new_for_uri (uri);
+- ret_val = g_file_get_basename (file);
+-
+- return ret_val;
+-}
+-
+-
+-static gchar *
+-photos_flickr_item_create_name_fallback (PhotosBaseItem *item)
+-{
+- PhotosFlickrItem *self = PHOTOS_FLICKR_ITEM (item);
+- g_autoptr (GDateTime) date_modified = NULL;
+- const gchar *provider_name;
+- g_autofree gchar *date_modified_str = NULL;
+- gchar *ret_val;
+- gint64 mtime;
+-
+- provider_name = photos_utils_get_provider_name (self->src_mngr, item);
+-
+- mtime = photos_base_item_get_mtime (item);
+- date_modified = g_date_time_new_from_unix_local (mtime);
+- date_modified_str = g_date_time_format (date_modified, "%x");
+-
+- /* Translators: this is the fallback title in the form
+- * "Facebook — 2nd January 2013".
+- */
+- ret_val = g_strdup_printf (_("%s — %s"), provider_name, date_modified_str);
+-
+- return ret_val;
+-}
+-
+-
+-static GrlOperationOptions *
+-photos_flickr_item_get_grl_options (GrlSource *source)
+-{
+- GrlCaps *caps;
+- GrlOperationOptions *options;
+-
+- caps = grl_source_get_caps (source, GRL_OP_RESOLVE);
+- options = grl_operation_options_new (caps);
+- return options;
+-}
+-
+-
+-static void
+-photos_flickr_item_source_resolve (GrlSource *source,
+- guint operation_id,
+- GrlMedia *media,
+- gpointer user_data,
+- const GError *error)
+-{
+- PhotosFlickrItemSyncData *data = (PhotosFlickrItemSyncData *) user_data;
+-
+- if (error != NULL)
+- {
+- if (data->error != NULL)
+- *(data->error) = g_error_copy (error);
+- data->op_res = FALSE;
+- }
+- else
+- data->op_res = TRUE;
+-
+- g_main_loop_quit (data->loop);
+-}
+-
+-
+-static gboolean
+-photos_flickr_item_create_thumbnail (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
+-{
+- PhotosFlickrItemSyncData data;
+- g_autoptr (GFile) local_file = NULL;
+- g_autoptr (GFile) remote_file = NULL;
+- g_autoptr (GList) keys = NULL;
+- g_autoptr (GMainContext) context = NULL;
+- g_autoptr (GrlMedia) media = NULL;
+- g_autoptr (GrlOperationOptions) options = NULL;
+- GrlRegistry *registry;
+- GrlSource *source;
+- gboolean ret_val = FALSE;
+- const gchar *const flickr_prefix = "flickr:";
+- const gchar *const resource_prefix = "gd:goa-account:";
+- const gchar *flickr_id;
+- const gchar *goa_id;
+- const gchar *identifier;
+- const gchar *resource_urn;
+- const gchar *thumbnail_uri;
+- const gchar *uri;
+- g_autofree gchar *grilo_id = NULL;
+- g_autofree gchar *local_dir = NULL;
+- g_autofree gchar *local_path = NULL;
+- gint64 height;
+- gint64 width;
+- gsize prefix_len;
+-
+- data.error = error;
+- data.loop = NULL;
+-
+- prefix_len = strlen (flickr_prefix);
+- identifier = photos_base_item_get_identifier (item);
+- if (strlen (identifier) <= prefix_len || !g_str_has_prefix (identifier, flickr_prefix))
+- {
+- g_set_error (error,
+- PHOTOS_ERROR,
+- 0,
+- "Invalid nao:identifier for Flickr item %s",
+- identifier);
+- goto out;
+- }
+- flickr_id = identifier + prefix_len;
+-
+- prefix_len = strlen (resource_prefix);
+- resource_urn = photos_base_item_get_resource_urn (item);
+- if (strlen (resource_urn) <= prefix_len || !g_str_has_prefix (resource_urn, resource_prefix))
+- {
+- g_set_error (error,
+- PHOTOS_ERROR,
+- 0,
+- "Invalid nie:dataSource for Flickr item %s",
+- resource_urn);
+- goto out;
+- }
+- goa_id = resource_urn + prefix_len;
+-
+- grilo_id = g_strdup_printf ("grl-flickr-%s", goa_id);
+- registry = grl_registry_get_default ();
+- source = grl_registry_lookup_source (registry, grilo_id);
+- if (source == NULL)
+- {
+- g_set_error (error,
+- PHOTOS_ERROR,
+- 0,
+- "Failed to find a GrlSource for %s",
+- grilo_id);
+- goto out;
+- }
+-
+- media = grl_media_new ();
+- grl_media_set_id (media, flickr_id);
+-
+- keys = grl_metadata_key_list_new (GRL_METADATA_KEY_THUMBNAIL, GRL_METADATA_KEY_INVALID);
+- options = photos_flickr_item_get_grl_options (source);
+-
+- context = g_main_context_new ();
+- g_main_context_push_thread_default (context);
+- data.loop = g_main_loop_new (context, FALSE);
+-
+- grl_source_resolve (source, media, keys, options, photos_flickr_item_source_resolve, &data);
+- g_main_loop_run (data.loop);
+- g_main_context_pop_thread_default (context);
+-
+- if (!data.op_res)
+- goto out;
+-
+- thumbnail_uri = grl_media_get_thumbnail (media);
+- remote_file = g_file_new_for_uri (thumbnail_uri);
+-
+- local_path = photos_base_item_create_thumbnail_path (item);
+- local_file = g_file_new_for_path (local_path);
+- local_dir = g_path_get_dirname (local_path);
+- g_mkdir_with_parents (local_dir, 0700);
+-
+- uri = photos_base_item_get_uri (item);
+-
+- height = photos_base_item_get_height (item);
+- width = photos_base_item_get_width (item);
+-
+- photos_debug (PHOTOS_DEBUG_NETWORK, "Downloading %s from Flickr to %s", thumbnail_uri, local_path);
+- if (!photos_utils_file_copy_as_thumbnail (remote_file,
+- local_file,
+- uri,
+- height,
+- width,
+- cancellable,
+- error))
+- goto out;
+-
+- ret_val = TRUE;
+-
+- out:
+- if (data.loop != NULL)
+- g_main_loop_unref (data.loop);
+- return ret_val;
+-}
+-
+-
+-static GFile *
+-photos_flickr_item_download (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
+-{
+- GFile *ret_val = NULL;
+- g_autoptr (GFile) local_file = NULL;
+- g_autoptr (GFile) remote_file = NULL;
+- const gchar *cache_dir;
+- const gchar *local_filename;
+- const gchar *uri;
+- g_autofree gchar *local_dir = NULL;
+- g_autofree gchar *local_path = NULL;
+-
+- uri = photos_base_item_get_uri (item);
+- remote_file = g_file_new_for_uri (uri);
+- cache_dir = g_get_user_cache_dir ();
+-
+- local_dir = g_build_filename (cache_dir, PACKAGE_TARNAME, "flickr", NULL);
+- g_mkdir_with_parents (local_dir, 0700);
+-
+- local_filename = photos_base_item_get_filename (item);
+- local_path = g_build_filename (local_dir, local_filename, NULL);
+- local_file = g_file_new_for_path (local_path);
+-
+- if (!g_file_test (local_path, G_FILE_TEST_EXISTS))
+- {
+- photos_debug (PHOTOS_DEBUG_NETWORK, "Downloading %s from Flickr to %s", uri, local_path);
+- if (!g_file_copy (remote_file,
+- local_file,
+- G_FILE_COPY_ALL_METADATA | G_FILE_COPY_OVERWRITE,
+- cancellable,
+- NULL,
+- NULL,
+- error))
+- {
+- g_file_delete (local_file, NULL, NULL);
+- goto out;
+- }
+- }
+-
+- ret_val = g_object_ref (local_file);
+-
+- out:
+- return ret_val;
+-}
+-
+-
+-static GtkWidget *
+-photos_flickr_item_get_source_widget (PhotosBaseItem *item)
+-{
+- PhotosFlickrItem *self = PHOTOS_FLICKR_ITEM (item);
+- GtkWidget *source_widget;
+- const gchar *name;
+-
+- name = photos_utils_get_provider_name (self->src_mngr, item);
+- source_widget = gtk_link_button_new_with_label ("https://www.flickr.com/", name);
+- gtk_widget_set_halign (source_widget, GTK_ALIGN_START);
+-
+- return source_widget;
+-}
+-
+-
+-static void
+-photos_flickr_item_open (PhotosBaseItem *item, GtkWindow *parent, guint32 timestamp)
+-{
+- PhotosFlickrItem *self = PHOTOS_FLICKR_ITEM (item);
+- GoaAccount *account;
+- GoaObject *object;
+- PhotosSource *source;
+- const gchar *identifier;
+- const gchar *identity;
+- const gchar *resource_urn;
+- g_autofree gchar *flickr_uri = NULL;
+-
+- identifier = photos_base_item_get_identifier (item) + strlen ("flickr:");
+-
+- resource_urn = photos_base_item_get_resource_urn (item);
+- source = PHOTOS_SOURCE (photos_base_manager_get_object_by_id (self->src_mngr, resource_urn));
+- object = photos_source_get_goa_object (source);
+- account = goa_object_peek_account (object);
+- identity = goa_account_get_identity (account);
+-
+- flickr_uri = g_strdup_printf ("https://www.flickr.com/photos/%s/%s", identity, identifier);
+-
+- {
+- g_autoptr (GError) error = NULL;
+-
+- if (!gtk_show_uri_on_window (parent, flickr_uri, timestamp, &error))
+- g_warning ("Unable to show URI %s: %s", flickr_uri, error->message);
+- }
+-}
+-
+-
+-static void
+-photos_flickr_item_constructed (GObject *object)
+-{
+- PhotosFlickrItem *self = PHOTOS_FLICKR_ITEM (object);
+- const gchar *name;
+-
+- G_OBJECT_CLASS (photos_flickr_item_parent_class)->constructed (object);
+-
+- name = photos_utils_get_provider_name (self->src_mngr, PHOTOS_BASE_ITEM (self));
+- photos_base_item_set_default_app_name (PHOTOS_BASE_ITEM (self), name);
+-}
+-
+-
+-static void
+-photos_flickr_item_dispose (GObject *object)
+-{
+- PhotosFlickrItem *self = PHOTOS_FLICKR_ITEM (object);
+-
+- g_clear_object (&self->src_mngr);
+-
+- G_OBJECT_CLASS (photos_flickr_item_parent_class)->dispose (object);
+-}
+-
+-
+-static void
+-photos_flickr_item_init (PhotosFlickrItem *self)
+-{
+- GApplication *app;
+- PhotosSearchContextState *state;
+-
+- app = g_application_get_default ();
+- state = photos_search_context_get_state (PHOTOS_SEARCH_CONTEXT (app));
+-
+- self->src_mngr = g_object_ref (state->src_mngr);
+-}
+-
+-
+-static void
+-photos_flickr_item_class_init (PhotosFlickrItemClass *class)
+-{
+- GObjectClass *object_class = G_OBJECT_CLASS (class);
+- PhotosBaseItemClass *base_item_class = PHOTOS_BASE_ITEM_CLASS (class);
+-
+- base_item_class->miner_name = "org.gnome.OnlineMiners.Flickr";
+- base_item_class->miner_object_path = "/org/gnome/OnlineMiners/Flickr";
+-
+- object_class->constructed = photos_flickr_item_constructed;
+- object_class->dispose = photos_flickr_item_dispose;
+- base_item_class->create_filename_fallback = photos_flickr_item_create_filename_fallback;
+- base_item_class->create_name_fallback = photos_flickr_item_create_name_fallback;
+- base_item_class->create_thumbnail = photos_flickr_item_create_thumbnail;
+- base_item_class->download = photos_flickr_item_download;
+- base_item_class->get_source_widget = photos_flickr_item_get_source_widget;
+- base_item_class->open = photos_flickr_item_open;
+-}
+diff --git a/src/photos-flickr-item.h b/src/photos-flickr-item.h
+deleted file mode 100644
+index cd130844bce2..000000000000
+--- a/src/photos-flickr-item.h
++++ /dev/null
+@@ -1,35 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2012 – 2019 Red Hat, Inc.
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- * + Documents
+- */
+-
+-#ifndef PHOTOS_FLICKR_ITEM_H
+-#define PHOTOS_FLICKR_ITEM_H
+-
+-#include "photos-base-item.h"
+-
+-G_BEGIN_DECLS
+-
+-#define PHOTOS_TYPE_FLICKR_ITEM (photos_flickr_item_get_type ())
+-G_DECLARE_FINAL_TYPE (PhotosFlickrItem, photos_flickr_item, PHOTOS, FLICKR_ITEM, PhotosBaseItem);
+-
+-G_END_DECLS
+-
+-#endif /* PHOTOS_LOCAL_ITEM_H */
+diff --git a/src/photos-google-item.c b/src/photos-google-item.c
+deleted file mode 100644
+index 5737f958b7a5..000000000000
+--- a/src/photos-google-item.c
++++ /dev/null
+@@ -1,349 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2014 – 2019 Red Hat, Inc.
+- * Copyright © 2014 Saurav Agarwalla
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- * + Documents
+- */
+-
+-
+-#include "config.h"
+-
+-#include <gdata/gdata.h>
+-#include <gio/gio.h>
+-#include <glib.h>
+-#include <glib/gi18n.h>
+-
+-#include "photos-base-manager.h"
+-#include "photos-debug.h"
+-#include "photos-error.h"
+-#include "photos-google-item.h"
+-#include "photos-search-context.h"
+-#include "photos-source.h"
+-#include "photos-utils.h"
+-
+-
+-struct _PhotosGoogleItem
+-{
+- PhotosBaseItem parent_instance;
+- PhotosBaseManager *src_mngr;
+-};
+-
+-
+-G_DEFINE_TYPE_WITH_CODE (PhotosGoogleItem, photos_google_item, PHOTOS_TYPE_BASE_ITEM,
+- photos_utils_ensure_extension_points ();
+- g_io_extension_point_implement (PHOTOS_BASE_ITEM_EXTENSION_POINT_NAME,
+- g_define_type_id,
+- "google",
+- 0));
+-
+-
+-static gchar *
+-photos_google_item_create_filename_fallback (PhotosBaseItem *item)
+-{
+- const gchar *identifier;
+- const gchar *mime_type;
+- gchar *ret_val;
+- g_autofree gchar *extension = NULL;
+- g_autofree gchar *identifier_hash = NULL;
+-
+- identifier = photos_base_item_get_identifier (item);
+- identifier_hash = g_compute_checksum_for_string (G_CHECKSUM_SHA1, identifier, -1);
+-
+- mime_type = photos_base_item_get_mime_type (item);
+- extension = photos_utils_get_extension_from_mime_type (mime_type);
+- if (extension == NULL)
+- extension = g_strdup ("tmp");
+-
+- ret_val = g_strdup_printf ("%s.%s", identifier_hash, extension);
+-
+- return ret_val;
+-}
+-
+-
+-static gchar *
+-photos_google_item_create_name_fallback (PhotosBaseItem *item)
+-{
+- PhotosGoogleItem *self = PHOTOS_GOOGLE_ITEM (item);
+- g_autoptr (GDateTime) date_modified = NULL;
+- const gchar *provider_name;
+- gchar *ret_val;
+- g_autofree gchar *date_modified_str = NULL;
+- gint64 mtime;
+-
+- provider_name = photos_utils_get_provider_name (self->src_mngr, item);
+-
+- mtime = photos_base_item_get_mtime (item);
+- date_modified = g_date_time_new_from_unix_local (mtime);
+- date_modified_str = g_date_time_format (date_modified, "%x");
+-
+- /* Translators: this is the fallback title in the form
+- * "Facebook — 2nd January 2013".
+- */
+- ret_val = g_strdup_printf (_("%s — %s"), provider_name, date_modified_str);
+-
+- return ret_val;
+-}
+-
+-
+-static GDataEntry *
+-photos_google_get_picasaweb_file (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
+-{
+- PhotosGoogleItem *self = PHOTOS_GOOGLE_ITEM (item);
+- PhotosSource *source;
+- GDataAuthorizationDomain *authorization_domain;
+- GDataEntry *entry;
+- g_autoptr (GDataGoaAuthorizer) authorizer = NULL;
+- g_autoptr (GDataPicasaWebQuery) query = NULL;
+- g_autoptr (GDataPicasaWebService) service = NULL;
+- const gchar *identifier;
+- const gchar *resource_urn;
+-
+- resource_urn = photos_base_item_get_resource_urn (item);
+- source = PHOTOS_SOURCE (photos_base_manager_get_object_by_id (self->src_mngr, resource_urn));
+- authorizer = gdata_goa_authorizer_new (photos_source_get_goa_object (source));
+- identifier = photos_base_item_get_identifier (item) + strlen ("google:picasaweb:");
+- service = gdata_picasaweb_service_new (GDATA_AUTHORIZER (authorizer));
+- authorization_domain = gdata_picasaweb_service_get_primary_authorization_domain ();
+-
+- query = gdata_picasaweb_query_new (NULL);
+- gdata_picasaweb_query_set_image_size (query, "d");
+-
+- entry = gdata_service_query_single_entry (GDATA_SERVICE (service),
+- authorization_domain,
+- identifier,
+- GDATA_QUERY (query),
+- GDATA_TYPE_PICASAWEB_FILE,
+- cancellable,
+- error);
+-
+- return entry;
+-}
+-
+-
+-static gboolean
+-photos_google_item_create_thumbnail (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
+-{
+- g_autoptr (GFile) local_file = NULL;
+- g_autoptr (GFile) remote_file = NULL;
+- GList *l;
+- GList *thumbnails;
+- g_autoptr (GDataEntry) entry = NULL;
+- GDataMediaThumbnail *thumbnail = NULL;
+- gboolean ret_val = FALSE;
+- const gchar *thumbnail_uri;
+- const gchar *uri;
+- g_autofree gchar *local_dir = NULL;
+- g_autofree gchar *local_path = NULL;
+- gint64 height;
+- gint64 width;
+- guint max_width = 0;
+- guint current_width;
+-
+- entry = photos_google_get_picasaweb_file (item, cancellable, error);
+- if (entry == NULL)
+- goto out;
+-
+- thumbnails = gdata_picasaweb_file_get_thumbnails (GDATA_PICASAWEB_FILE (entry));
+- if (thumbnails == NULL)
+- {
+- g_set_error (error, PHOTOS_ERROR, 0, "Failed to find an image for the thumbnail");
+- goto out;
+- }
+-
+- for (l = thumbnails; l != NULL; l = l->next)
+- {
+- current_width = gdata_media_thumbnail_get_width (GDATA_MEDIA_THUMBNAIL (l->data));
+- if (current_width > max_width)
+- {
+- max_width = current_width;
+- thumbnail = GDATA_MEDIA_THUMBNAIL (l->data);
+- }
+- }
+-
+- thumbnail_uri = gdata_media_thumbnail_get_uri (thumbnail);
+- remote_file = g_file_new_for_uri (thumbnail_uri);
+-
+- local_path = photos_base_item_create_thumbnail_path (item);
+- local_file = g_file_new_for_path (local_path);
+- local_dir = g_path_get_dirname (local_path);
+- g_mkdir_with_parents (local_dir, 0700);
+-
+- uri = photos_base_item_get_uri (item);
+-
+- height = photos_base_item_get_height (item);
+- width = photos_base_item_get_width (item);
+-
+- photos_debug (PHOTOS_DEBUG_NETWORK, "Downloading %s from Google to %s", thumbnail_uri, local_path);
+- if (!photos_utils_file_copy_as_thumbnail (remote_file,
+- local_file,
+- uri,
+- height,
+- width,
+- cancellable,
+- error))
+- goto out;
+-
+- ret_val = TRUE;
+-
+- out:
+- return ret_val;
+-}
+-
+-
+-static GFile *
+-photos_google_item_download (PhotosBaseItem *item, GCancellable *cancellable, GError **error)
+-{
+- GFile *ret_val = NULL;
+- g_autoptr (GFile) local_file = NULL;
+- g_autoptr (GFile) remote_file = NULL;
+- g_autoptr (GDataEntry) entry = NULL;
+- const gchar *cache_dir;
+- const gchar *local_filename;
+- const gchar *uri;
+- g_autofree gchar *local_dir = NULL;
+- g_autofree gchar *local_path = NULL;
+-
+- cache_dir = g_get_user_cache_dir ();
+- local_dir = g_build_filename (cache_dir, PACKAGE_TARNAME, "google", NULL);
+- g_mkdir_with_parents (local_dir, 0700);
+-
+- local_filename = photos_base_item_get_filename (item);
+- local_path = g_build_filename (local_dir, local_filename, NULL);
+- local_file = g_file_new_for_path (local_path);
+- if (g_file_test (local_path, G_FILE_TEST_EXISTS))
+- goto end;
+-
+- entry = photos_google_get_picasaweb_file (item, cancellable, error);
+- if (entry == NULL)
+- goto out;
+-
+- uri = gdata_entry_get_content_uri (entry);
+- remote_file = g_file_new_for_uri (uri);
+-
+- photos_debug (PHOTOS_DEBUG_NETWORK, "Downloading %s from Google to %s", uri, local_path);
+- if (!g_file_copy (remote_file,
+- local_file,
+- G_FILE_COPY_ALL_METADATA | G_FILE_COPY_OVERWRITE,
+- cancellable,
+- NULL,
+- NULL,
+- error))
+- {
+- g_file_delete (local_file, NULL, NULL);
+- goto out;
+- }
+-
+- end:
+- ret_val = g_object_ref (local_file);
+-
+- out:
+- return ret_val;
+-}
+-
+-
+-static GtkWidget *
+-photos_google_item_get_source_widget (PhotosBaseItem *item)
+-{
+- PhotosGoogleItem *self = PHOTOS_GOOGLE_ITEM (item);
+- GtkWidget *source_widget;
+- const gchar *name;
+-
+- name = photos_utils_get_provider_name (self->src_mngr, item);
+- source_widget = gtk_link_button_new_with_label ("https://photos.google.com/", name);
+- gtk_widget_set_halign (source_widget, GTK_ALIGN_START);
+-
+- return source_widget;
+-}
+-
+-
+-/* NOTE: For private photos, opening the URI in a browser results in a
+- * 'Sorry, that page was not found.' if the user is not logged in with the respective account
+- */
+-static void
+-photos_google_item_open (PhotosBaseItem *item, GtkWindow *parent, guint32 timestamp)
+-{
+- const gchar *google_uri;
+-
+- google_uri = photos_base_item_get_uri (item);
+-
+- {
+- g_autoptr (GError) error = NULL;
+-
+- gtk_show_uri_on_window (parent, google_uri, timestamp, &error);
+- if (error != NULL)
+- g_warning ("Unable to show URI %s: %s", google_uri, error->message);
+- }
+-}
+-
+-
+-static void
+-photos_google_item_constructed (GObject *object)
+-{
+- PhotosGoogleItem *self = PHOTOS_GOOGLE_ITEM (object);
+- const gchar *name;
+-
+- G_OBJECT_CLASS (photos_google_item_parent_class)->constructed (object);
+-
+- name = photos_utils_get_provider_name (self->src_mngr, PHOTOS_BASE_ITEM (self));
+- photos_base_item_set_default_app_name (PHOTOS_BASE_ITEM (self), name);
+-}
+-
+-
+-static void
+-photos_google_item_dispose (GObject *object)
+-{
+- PhotosGoogleItem *self = PHOTOS_GOOGLE_ITEM (object);
+-
+- g_clear_object (&self->src_mngr);
+-
+- G_OBJECT_CLASS (photos_google_item_parent_class)->dispose (object);
+-}
+-
+-
+-static void
+-photos_google_item_init (PhotosGoogleItem *self)
+-{
+- GApplication *app;
+- PhotosSearchContextState *state;
+-
+- app = g_application_get_default ();
+- state = photos_search_context_get_state (PHOTOS_SEARCH_CONTEXT (app));
+-
+- self->src_mngr = g_object_ref (state->src_mngr);
+-}
+-
+-
+-static void
+-photos_google_item_class_init (PhotosGoogleItemClass *class)
+-{
+- GObjectClass *object_class = G_OBJECT_CLASS (class);
+- PhotosBaseItemClass *base_item_class = PHOTOS_BASE_ITEM_CLASS (class);
+-
+- base_item_class->miner_name = "org.gnome.OnlineMiners.GData";
+- base_item_class->miner_object_path = "/org/gnome/OnlineMiners/GData";
+-
+- object_class->constructed = photos_google_item_constructed;
+- object_class->dispose = photos_google_item_dispose;
+- base_item_class->create_filename_fallback = photos_google_item_create_filename_fallback;
+- base_item_class->create_name_fallback = photos_google_item_create_name_fallback;
+- base_item_class->create_thumbnail = photos_google_item_create_thumbnail;
+- base_item_class->download = photos_google_item_download;
+- base_item_class->get_source_widget = photos_google_item_get_source_widget;
+- base_item_class->open = photos_google_item_open;
+-}
+diff --git a/src/photos-google-item.h b/src/photos-google-item.h
+deleted file mode 100644
+index 644098e3c095..000000000000
+--- a/src/photos-google-item.h
++++ /dev/null
+@@ -1,36 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2016 – 2019 Red Hat, Inc.
+- * Copyright © 2014 Saurav Agarwalla
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-/* Based on code from:
+- * + Documents
+- */
+-
+-#ifndef PHOTOS_GOOGLE_ITEM_H
+-#define PHOTOS_GOOGLE_ITEM_H
+-
+-#include "photos-base-item.h"
+-
+-G_BEGIN_DECLS
+-
+-#define PHOTOS_TYPE_GOOGLE_ITEM (photos_google_item_get_type ())
+-G_DECLARE_FINAL_TYPE (PhotosGoogleItem, photos_google_item, PHOTOS, GOOGLE_ITEM, PhotosBaseItem);
+-
+-G_END_DECLS
+-
+-#endif /* PHOTOS_GOOGLE_ITEM_H */
+diff --git a/src/photos-share-point-google.c b/src/photos-share-point-google.c
+deleted file mode 100644
+index 6cc6d55d882e..000000000000
+--- a/src/photos-share-point-google.c
++++ /dev/null
+@@ -1,516 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2016 – 2020 Red Hat, Inc.
+- * Copyright © 2016 Umang Jain
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-
+-#include "config.h"
+-
+-#include <gio/gio.h>
+-#include <gdata/gdata.h>
+-#include <glib/gi18n.h>
+-
+-#include "photos-application.h"
+-#include "photos-base-item.h"
+-#include "photos-error.h"
+-#include "photos-filterable.h"
+-#include "photos-item-manager.h"
+-#include "photos-search-context.h"
+-#include "photos-share-point-google.h"
+-#include "photos-source.h"
+-#include "photos-utils.h"
+-
+-
+-struct _PhotosSharePointGoogle
+-{
+- PhotosSharePointOnline parent_instance;
+- GDataGoaAuthorizer *authorizer;
+- GDataPicasaWebService *service;
+- PhotosBaseManager *item_mngr;
+-};
+-
+-
+-G_DEFINE_TYPE_WITH_CODE (PhotosSharePointGoogle, photos_share_point_google, PHOTOS_TYPE_SHARE_POINT_ONLINE,
+- photos_utils_ensure_extension_points ();
+- g_io_extension_point_implement (PHOTOS_SHARE_POINT_ONLINE_EXTENSION_POINT_NAME,
+- g_define_type_id,
+- "google",
+- 0));
+-
+-
+-typedef struct _PhotosSharePointGoogleShareData PhotosSharePointGoogleShareData;
+-
+-struct _PhotosSharePointGoogleShareData
+-{
+- GDataPicasaWebFile *file_entry;
+- GDataUploadStream *stream;
+- PhotosBaseItem *item;
+- gchar *item_id_after_changes;
+- guint pending_async_calls;
+-};
+-
+-
+-static PhotosSharePointGoogleShareData *
+-photos_share_point_google_share_data_new (PhotosBaseItem *item)
+-{
+- PhotosSharePointGoogleShareData *data;
+-
+- data = g_slice_new0 (PhotosSharePointGoogleShareData);
+- data->item = g_object_ref (item);
+-
+- return data;
+-}
+-
+-
+-static void
+-photos_share_point_google_share_data_free (PhotosSharePointGoogleShareData *data)
+-{
+- g_clear_object (&data->file_entry);
+- g_clear_object (&data->stream);
+- g_clear_object (&data->item);
+- g_free (data->item_id_after_changes);
+- g_slice_free (PhotosSharePointGoogleShareData, data);
+-}
+-
+-
+-static gboolean
+-photos_share_point_google_needs_notification (PhotosSharePoint *share_point)
+-{
+- return TRUE;
+-}
+-
+-
+-static gchar *
+-photos_share_point_google_parse_error (PhotosSharePoint *self, GError *error)
+-{
+- gchar *msg;
+-
+- if (g_error_matches (error, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_AUTHENTICATION_REQUIRED))
+- msg = g_strdup (_("Failed to upload photo: Service not authorized"));
+- else
+- msg = g_strdup (_("Failed to upload photo"));
+-
+- return msg;
+-}
+-
+-
+-static void
+-photos_share_point_google_share_insert_shared_content (GObject *source_object, GAsyncResult *res, gpointer user_data)
+-{
+- GError *error;
+- g_autoptr (GTask) task = G_TASK (user_data);
+- GomMiner *miner = GOM_MINER (source_object);
+-
+- error = NULL;
+- if (!gom_miner_call_insert_shared_content_finish (miner, res, &error))
+- {
+- g_task_return_error (task, error);
+- goto out;
+- }
+-
+- g_task_return_boolean (task, TRUE);
+-
+- out:
+- return;
+-}
+-
+-
+-static void
+-photos_share_point_google_share_metadata_add_shared_second (PhotosSharePointGoogle *self, GTask *task)
+-{
+- GApplication *app;
+- GCancellable *cancellable;
+- GoaAccount *account;
+- GoaObject *object;
+- GomMiner *miner;
+- PhotosSource *source;
+- PhotosSharePointGoogleShareData *data;
+- const gchar *account_id;
+- const gchar *file_entry_id;
+-
+- cancellable = g_task_get_cancellable (task);
+- data = (PhotosSharePointGoogleShareData *) g_task_get_task_data (task);
+-
+- app = g_application_get_default ();
+- miner = photos_application_get_miner (PHOTOS_APPLICATION (app), "google");
+- if (miner == NULL)
+- {
+- g_task_return_new_error (task, PHOTOS_ERROR, 0, "Unable to find the google miner");
+- goto out;
+- }
+-
+- source = photos_share_point_online_get_source (PHOTOS_SHARE_POINT_ONLINE (self));
+- object = photos_source_get_goa_object (source);
+- account = goa_object_peek_account (object);
+- account_id = goa_account_get_id (account);
+-
+- file_entry_id = gdata_entry_get_id (GDATA_ENTRY (data->file_entry));
+-
+- gom_miner_call_insert_shared_content (miner,
+- account_id,
+- file_entry_id,
+- "photos",
+- data->item_id_after_changes,
+- cancellable,
+- photos_share_point_google_share_insert_shared_content,
+- g_object_ref (task));
+-
+- out:
+- g_object_unref (task);
+-}
+-
+-
+-static void
+-photos_share_point_google_share_metadata_add_shared (GObject *source_object, GAsyncResult *res, gpointer user_data)
+-{
+- PhotosSharePointGoogle *self;
+- g_autoptr (GTask) task = G_TASK (user_data);
+- PhotosBaseItem *item = PHOTOS_BASE_ITEM (source_object);
+- PhotosSharePointGoogleShareData *data;
+-
+- self = PHOTOS_SHARE_POINT_GOOGLE (g_task_get_source_object (task));
+- data = (PhotosSharePointGoogleShareData *) g_task_get_task_data (task);
+-
+- {
+- g_autoptr (GError) error = NULL;
+-
+- if (!photos_base_item_metadata_add_shared_finish (item, res, &error))
+- {
+- if (g_task_get_completed (task))
+- g_warning ("Unable to add shared metadata: %s", error->message);
+- else
+- g_task_return_error (task, g_steal_pointer (&error));
+-
+- goto out;
+- }
+- }
+-
+- data->pending_async_calls--;
+- if (data->pending_async_calls == 0)
+- photos_share_point_google_share_metadata_add_shared_second (self, g_object_ref (task));
+-
+- out:
+- return;
+-}
+-
+-
+-static void
+-photos_share_point_google_share_wait_for_changes (GObject *source_object, GAsyncResult *res, gpointer user_data)
+-{
+- PhotosSharePointGoogle *self;
+- g_autoptr (GTask) task = G_TASK (user_data);
+- PhotosItemManager *item_mngr = PHOTOS_ITEM_MANAGER (source_object);
+- PhotosSharePointGoogleShareData *data;
+- g_autofree gchar *item_id_after_changes = NULL;
+-
+- self = PHOTOS_SHARE_POINT_GOOGLE (g_task_get_source_object (task));
+- data = (PhotosSharePointGoogleShareData *) g_task_get_task_data (task);
+-
+- {
+- g_autoptr (GError) error = NULL;
+-
+- item_id_after_changes = photos_item_manager_wait_for_changes_finish (item_mngr, res, &error);
+- if (error != NULL)
+- {
+- if (g_task_get_completed (task))
+- g_warning ("Unable to detect changes: %s", error->message);
+- else
+- g_task_return_error (task, g_steal_pointer (&error));
+-
+- goto out;
+- }
+- }
+-
+- g_assert_null (data->item_id_after_changes);
+- data->item_id_after_changes = g_steal_pointer (&item_id_after_changes);
+-
+- data->pending_async_calls--;
+- if (data->pending_async_calls == 0)
+- photos_share_point_google_share_metadata_add_shared_second (self, g_object_ref (task));
+-
+- out:
+- return;
+-}
+-
+-
+-static void
+-photos_share_point_google_share_save_to_stream (GObject *source_object, GAsyncResult *res, gpointer user_data)
+-{
+- PhotosSharePointGoogle *self;
+- GCancellable *cancellable;
+- GError *error;
+- g_autoptr (GTask) task = G_TASK (user_data);
+- g_autoptr (GDataPicasaWebFile) file_entry = NULL;
+- GoaAccount *account;
+- GoaObject *object;
+- PhotosBaseItem *item = PHOTOS_BASE_ITEM (source_object);
+- PhotosSource *source;
+- PhotosSharePointGoogleShareData *data;
+- const gchar *account_identity;
+- const gchar *file_entry_id;
+- const gchar *provider_type;
+- g_autofree gchar *shared_identifier = NULL;
+-
+- self = PHOTOS_SHARE_POINT_GOOGLE (g_task_get_source_object (task));
+- cancellable = g_task_get_cancellable (task);
+- data = (PhotosSharePointGoogleShareData *) g_task_get_task_data (task);
+-
+- error = NULL;
+- if (!photos_base_item_save_to_stream_finish (item, res, &error))
+- {
+- g_task_return_error (task, error);
+- goto out;
+- }
+-
+- error = NULL;
+- file_entry = gdata_picasaweb_service_finish_file_upload (GDATA_PICASAWEB_SERVICE (self->service),
+- data->stream,
+- &error);
+- if (error != NULL)
+- {
+- g_task_return_error (task, error);
+- goto out;
+- }
+-
+- g_assert_null (data->file_entry);
+- data->file_entry = g_object_ref (file_entry);
+-
+- g_assert_true (PHOTOS_IS_ITEM_MANAGER (self->item_mngr));
+-
+- /* Tracker might detect the atomic update done by GExiv2 as a 'delete'
+- * followed by 'create'. If that happens the URN will change. We
+- * have to deal with that by waiting for TrackerChangeMonitor to
+- * emit changes-pending for the BaseItem that we are interested in,
+- * and using the new URN, if any.
+- *
+- * See https://bugzilla.gnome.org/show_bug.cgi?id=771042
+- */
+- photos_item_manager_wait_for_changes_async (PHOTOS_ITEM_MANAGER (self->item_mngr),
+- data->item,
+- cancellable,
+- photos_share_point_google_share_wait_for_changes,
+- g_object_ref (task));
+- data->pending_async_calls++;
+-
+- source = photos_share_point_online_get_source (PHOTOS_SHARE_POINT_ONLINE (self));
+- object = photos_source_get_goa_object (source);
+- account = goa_object_peek_account (object);
+- account_identity = goa_account_get_identity (account);
+- provider_type = goa_account_get_provider_type (account);
+-
+- file_entry_id = gdata_entry_get_id (GDATA_ENTRY (file_entry));
+- shared_identifier = g_strconcat ("google:picasaweb:", file_entry_id, NULL);
+-
+- photos_base_item_metadata_add_shared_async (data->item,
+- provider_type,
+- account_identity,
+- shared_identifier,
+- cancellable,
+- photos_share_point_google_share_metadata_add_shared,
+- g_object_ref (task));
+- data->pending_async_calls++;
+-
+- out:
+- return;
+-}
+-
+-
+-static void
+-photos_share_point_google_share_refresh_authorization (GObject *source_object,
+- GAsyncResult *res,
+- gpointer user_data)
+-{
+- PhotosSharePointGoogle *self;
+- GCancellable *cancellable;
+- GError *error;
+- g_autoptr (GTask) task = G_TASK (user_data);
+- GDataAuthorizer *authorizer = GDATA_AUTHORIZER (source_object);
+- g_autoptr (GDataPicasaWebFile) file_entry = NULL;
+- g_autoptr (GDataUploadStream) stream = NULL;
+- PhotosSharePointGoogleShareData *data;
+- const gchar *filename;
+- const gchar *mime_type;
+- const gchar *name;
+-
+- self = PHOTOS_SHARE_POINT_GOOGLE (g_task_get_source_object (task));
+- cancellable = g_task_get_cancellable (task);
+- data = (PhotosSharePointGoogleShareData *) g_task_get_task_data (task);
+-
+- error = NULL;
+- if (!gdata_authorizer_refresh_authorization_finish (authorizer, res, &error))
+- {
+- g_task_return_error (task, error);
+- goto out;
+- }
+-
+- file_entry = gdata_picasaweb_file_new (NULL);
+- name = photos_base_item_get_name_with_fallback (data->item);
+- gdata_entry_set_title (GDATA_ENTRY (file_entry), name);
+-
+- filename = photos_base_item_get_filename (data->item);
+- mime_type = photos_base_item_get_mime_type (data->item);
+-
+- error = NULL;
+- stream = gdata_picasaweb_service_upload_file (self->service,
+- NULL,
+- file_entry,
+- filename,
+- mime_type,
+- cancellable,
+- &error);
+- if (error != NULL)
+- {
+- g_task_return_error (task, error);
+- goto out;
+- }
+-
+- g_assert_null (data->stream);
+- data->stream = g_object_ref (stream);
+-
+- photos_base_item_save_to_stream_async (data->item,
+- G_OUTPUT_STREAM (stream),
+- 1.0,
+- cancellable,
+- photos_share_point_google_share_save_to_stream,
+- g_object_ref (task));
+-
+- out:
+- return;
+-}
+-
+-
+-static void
+-photos_share_point_google_share_async (PhotosSharePoint *share_point,
+- PhotosBaseItem *item,
+- GCancellable *cancellable,
+- GAsyncReadyCallback callback,
+- gpointer user_data)
+-{
+- PhotosSharePointGoogle *self = PHOTOS_SHARE_POINT_GOOGLE (share_point);
+- g_autoptr (GTask) task = NULL;
+- PhotosSharePointGoogleShareData *data;
+-
+- data = photos_share_point_google_share_data_new (item);
+-
+- task = g_task_new (self, cancellable, callback, user_data);
+- g_task_set_source_tag (task, photos_share_point_google_share_async);
+- g_task_set_task_data (task, data, (GDestroyNotify) photos_share_point_google_share_data_free);
+-
+- gdata_authorizer_refresh_authorization_async (GDATA_AUTHORIZER (self->authorizer),
+- cancellable,
+- photos_share_point_google_share_refresh_authorization,
+- g_object_ref (task));
+-}
+-
+-
+-static gboolean
+-photos_share_point_google_share_finish (PhotosSharePoint *share_point,
+- GAsyncResult *res,
+- gchar **out_uri,
+- GError **error)
+-{
+- PhotosSharePointGoogle *self = PHOTOS_SHARE_POINT_GOOGLE (share_point);
+- GTask *task;
+- gboolean ret_val = FALSE;
+-
+- g_return_val_if_fail (g_task_is_valid (res, self), FALSE);
+- task = G_TASK (res);
+-
+- g_return_val_if_fail (g_task_get_source_tag (task) == photos_share_point_google_share_async, FALSE);
+- g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+-
+- if (!g_task_propagate_boolean (task, error))
+- goto out;
+-
+- ret_val = TRUE;
+-
+- if (out_uri != NULL)
+- *out_uri = g_strdup ("https://photos.google.com/");
+-
+- out:
+- return ret_val;
+-}
+-
+-
+-static void
+-photos_share_point_google_constructed (GObject *object)
+-{
+- PhotosSharePointGoogle *self = PHOTOS_SHARE_POINT_GOOGLE (object);
+- PhotosSource *source;
+- GoaObject *goa_object;
+-
+- G_OBJECT_CLASS (photos_share_point_google_parent_class)->constructed (object);
+-
+- source = photos_share_point_online_get_source (PHOTOS_SHARE_POINT_ONLINE (self));
+- goa_object = photos_source_get_goa_object (source);
+- self->authorizer = gdata_goa_authorizer_new (goa_object);
+- self->service = gdata_picasaweb_service_new (GDATA_AUTHORIZER (self->authorizer));
+-}
+-
+-
+-static void
+-photos_share_point_google_dispose (GObject *object)
+-{
+- PhotosSharePointGoogle *self = PHOTOS_SHARE_POINT_GOOGLE (object);
+-
+- g_clear_object (&self->authorizer);
+- g_clear_object (&self->service);
+-
+- G_OBJECT_CLASS (photos_share_point_google_parent_class)->dispose (object);
+-}
+-
+-
+-static void
+-photos_share_point_google_finalize (GObject *object)
+-{
+- PhotosSharePointGoogle *self = PHOTOS_SHARE_POINT_GOOGLE (object);
+-
+- if (self->item_mngr != NULL)
+- g_object_remove_weak_pointer (G_OBJECT (self->item_mngr), (gpointer *) &self->item_mngr);
+-
+- G_OBJECT_CLASS (photos_share_point_google_parent_class)->finalize (object);
+-}
+-
+-
+-static void
+-photos_share_point_google_init (PhotosSharePointGoogle *self)
+-{
+- GApplication *app;
+- PhotosSearchContextState *state;
+-
+- app = g_application_get_default ();
+- state = photos_search_context_get_state (PHOTOS_SEARCH_CONTEXT (app));
+-
+- self->item_mngr = state->item_mngr;
+- g_object_add_weak_pointer (G_OBJECT (self->item_mngr), (gpointer *) &self->item_mngr);
+-}
+-
+-
+-static void
+-photos_share_point_google_class_init (PhotosSharePointGoogleClass *class)
+-{
+- GObjectClass *object_class = G_OBJECT_CLASS (class);
+- PhotosSharePointClass *share_point_class = PHOTOS_SHARE_POINT_CLASS (class);
+-
+- object_class->constructed = photos_share_point_google_constructed;
+- object_class->dispose = photos_share_point_google_dispose;
+- object_class->finalize = photos_share_point_google_finalize;
+- share_point_class->needs_notification = photos_share_point_google_needs_notification;
+- share_point_class->parse_error = photos_share_point_google_parse_error;
+- share_point_class->share_async = photos_share_point_google_share_async;
+- share_point_class->share_finish = photos_share_point_google_share_finish;
+-}
+diff --git a/src/photos-share-point-google.h b/src/photos-share-point-google.h
+deleted file mode 100644
+index f229f7ed05a6..000000000000
+--- a/src/photos-share-point-google.h
++++ /dev/null
+@@ -1,35 +0,0 @@
+-/*
+- * Photos - access, organize and share your photos on GNOME
+- * Copyright © 2016 Umang Jain
+- *
+- * This program is free software: you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation, either version 3 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+- */
+-
+-#ifndef PHOTOS_SHARE_POINT_GOOGLE_H
+-#define PHOTOS_SHARE_POINT_GOOGLE_H
+-
+-#include "photos-share-point-online.h"
+-
+-G_BEGIN_DECLS
+-
+-#define PHOTOS_TYPE_SHARE_POINT_GOOGLE (photos_share_point_google_get_type ())
+-G_DECLARE_FINAL_TYPE (PhotosSharePointGoogle,
+- photos_share_point_google,
+- PHOTOS,
+- SHARE_POINT_GOOGLE,
+- PhotosSharePointOnline);
+-
+-G_END_DECLS
+-
+-#endif /* PHOTOS_SHARE_POINT_GOOGLE_H */
+diff --git a/src/photos-utils.c b/src/photos-utils.c
+index 5cfddaa5f845..b9e3f4131985 100644
+--- a/src/photos-utils.c
++++ b/src/photos-utils.c
+@@ -37,10 +37,7 @@
+ #include "photos-device-item.h"
+ #include "photos-enums.h"
+ #include "photos-error.h"
+-#include "photos-facebook-item.h"
+-#include "photos-flickr-item.h"
+ #include "photos-gegl.h"
+-#include "photos-google-item.h"
+ #include "photos-local-item.h"
+ #include "photos-media-server-item.h"
+ #include "photos-offset-collection-view-controller.h"
+@@ -52,7 +49,6 @@
+ #include "photos-query.h"
+ #include "photos-share-point.h"
+ #include "photos-share-point-email.h"
+-#include "photos-share-point-google.h"
+ #include "photos-share-point-online.h"
+ #include "photos-source.h"
+ #include "photos-thumbnail-factory.h"
+@@ -719,14 +715,10 @@ photos_utils_ensure_builtins (void)
+ if (g_once_init_enter (&once_init_value))
+ {
+ g_type_ensure (PHOTOS_TYPE_DEVICE_ITEM);
+- g_type_ensure (PHOTOS_TYPE_FACEBOOK_ITEM);
+- g_type_ensure (PHOTOS_TYPE_FLICKR_ITEM);
+- g_type_ensure (PHOTOS_TYPE_GOOGLE_ITEM);
+ g_type_ensure (PHOTOS_TYPE_LOCAL_ITEM);
+ g_type_ensure (PHOTOS_TYPE_MEDIA_SERVER_ITEM);
+
+ g_type_ensure (PHOTOS_TYPE_SHARE_POINT_EMAIL);
+- g_type_ensure (PHOTOS_TYPE_SHARE_POINT_GOOGLE);
+
+ g_type_ensure (PHOTOS_TYPE_TOOL_COLORS);
+ g_type_ensure (PHOTOS_TYPE_TOOL_CROP);
+--
+2.30.2
+
diff --git a/gnome-photos.spec b/gnome-photos.spec
new file mode 100644
index 0000000..2203bfc
--- /dev/null
+++ b/gnome-photos.spec
@@ -0,0 +1,593 @@
+%global tarball_version %%(echo %{version} | tr '~' '.')
+%global major_version %%(echo %%{tarball_version} | cut -d. -f1)
+
+%global cairo_version 1.14.0
+%global dazzle_version 3.26.0
+%global gdk_pixbuf_version 2.36.8
+%global gegl_version 0.4.0
+%global gettext_version 0.19.8
+%global gexiv2_version 0.10.8
+%global glib2_version 2.62.0
+%global goa_version 3.8.0
+%global gtk3_version 3.22.16
+%global handy_version 1.1.90
+%global tracker_miners_version 3.0.0
+
+Name: gnome-photos
+Version: 40.0
+Release: 4%{?dist}
+Summary: Access, organize and share your photos on GNOME
+
+# GNOME Photos itself is GPLv3+, but the bundled libgd is LGPLv2+
+License: GPLv3+ and LGPLv2+
+URL: https://wiki.gnome.org/Apps/Photos
+Source0: http://download.gnome.org/sources/%{name}/%{major_version}/%{name}-%{tarball_version}.tar.xz
+
+# https://bugzilla.redhat.com/show_bug.cgi?id=1913641
+Patch0: 0001-Remove-Facebook-Flickr-and-Google-support.patch
+
+BuildRequires: desktop-file-utils
+BuildRequires: docbook-style-xsl
+BuildRequires: gcc
+BuildRequires: gettext >= %{gettext_version}
+BuildRequires: itstool
+BuildRequires: libxslt
+BuildRequires: meson
+BuildRequires: pkgconfig(babl)
+BuildRequires: pkgconfig(cairo) >= %{cairo_version}
+BuildRequires: pkgconfig(cairo-gobject) >= %{cairo_version}
+BuildRequires: pkgconfig(gdk-pixbuf-2.0) >= %{gdk_pixbuf_version}
+BuildRequires: pkgconfig(gegl-0.4) >= %{gegl_version}
+BuildRequires: pkgconfig(geocode-glib-1.0)
+BuildRequires: pkgconfig(gexiv2) >= %{gexiv2_version}
+BuildRequires: pkgconfig(gio-2.0) >= %{glib2_version}
+BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
+BuildRequires: pkgconfig(gobject-2.0) >= %{glib2_version}
+BuildRequires: pkgconfig(goa-1.0) >= %{goa_version}
+BuildRequires: pkgconfig(gsettings-desktop-schemas)
+BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version}
+BuildRequires: pkgconfig(libdazzle-1.0) >= %{dazzle_version}
+BuildRequires: pkgconfig(libhandy-1) >= %{handy_version}
+BuildRequires: pkgconfig(libjpeg)
+BuildRequires: pkgconfig(tracker-sparql-3.0)
+
+Requires: baobab
+Requires: gdk-pixbuf2%{?isa} >= %{gdk_pixbuf_version}
+Requires: gegl04%{?_isa} >= %{gegl_version}
+Requires: glib2%{?isa} >= %{glib2_version}
+Requires: gnome-settings-daemon
+Requires: gtk3%{?_isa} >= %{gtk3_version}
+Requires: libdazzle%{?isa} >= %{dazzle_version}
+Requires: libgexiv2%{?_isa} >= %{gexiv2_version}
+Requires: libhandy1%{?_isa} >= %{handy_version}
+Requires: tracker3-miners >= %{tracker_miners_version}
+
+# libgd is not meant to be installed as a system-wide shared library.
+# It is just a way for GNOME applications to share widgets and other common
+# code on an ad-hoc basis.
+Provides: bundled(libgd)
+
+
+%description
+Access, organize and share your photos on GNOME. A simple and elegant
+replacement for using a file manager to deal with photos. Enhance, crop
+and edit in a snap. Seamless cloud integration is offered through GNOME
+Online Accounts.
+
+
+%package tests
+Summary: Tests for %{name}
+
+%description tests
+This package contains the installable tests for %{name}.
+
+
+%prep
+%autosetup -p1 -n %{name}-%{tarball_version}
+
+
+%build
+%meson \
+ --buildtype=plain \
+ -Ddogtail=false \
+%if 0%{?flatpak}
+ -Dflatpak=true \
+%else
+ -Dflatpak=false \
+%endif
+ -Dinstalled_tests=true \
+ -Dmanuals=true \
+
+%meson_build
+
+
+%install
+%meson_install
+
+# Upstream doesn't install with desktop-file-install, so let's check
+desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Photos.desktop
+
+%find_lang %{name} --with-gnome
+
+
+%files -f %{name}.lang
+%license COPYING
+%{_bindir}/%{name}
+%{_datadir}/metainfo/org.gnome.Photos.appdata.xml
+%{_datadir}/applications/org.gnome.Photos.desktop
+%{_datadir}/dbus-1/services/org.gnome.Photos.service
+
+%if 0%{?flatpak}
+%{_datadir}/dbus-1/services/org.gnome.Photos.Tracker3.Miner.Extract.service
+%{_datadir}/dbus-1/services/org.gnome.Photos.Tracker3.Miner.Files.service
+%endif
+
+%{_datadir}/glib-2.0/schemas/org.gnome.photos.gschema.xml
+%{_datadir}/gnome-shell/
+%{_datadir}/icons/hicolor/scalable/apps/org.gnome.Photos.svg
+%{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Photos-symbolic.svg
+%{_datadir}/man/man1/%{name}.1*
+
+%if 0%{?flatpak}
+%{_datadir}/tracker3-miners/domain-ontologies/org.gnome.Photos.rule
+%endif
+
+%{_docdir}/%{name}
+
+%dir %{_libdir}/%{name}
+%{_libdir}/%{name}/libgnome-photos.so
+
+%{_libexecdir}/%{name}-thumbnailer
+
+%files tests
+%{_libexecdir}/installed-tests/%{name}
+%{_datadir}/installed-tests
+
+
+%changelog
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 40.0-4
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+ Related: rhbz#1991688
+
+* Fri Apr 23 2021 Debarshi Ray <rishi@fedoraproject.org> - 40.0-3
+- Add gcc to BuildRequires
+- Remove Facebook, Flickr and Google support
+Resolves: #1913641
+
+* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 40.0-2
+- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
+
+* Thu Mar 25 2021 Kalev Lember <klember@redhat.com> - 40.0-1
+- Update to 40.0
+
+* Mon Mar 22 2021 Debarshi Ray <rishi@fedoraproject.org> - 40~rc-3
+- The gnome-online-miners package won't be part of RHEL 9
+
+* Fri Mar 19 2021 Debarshi Ray <rishi@fedoraproject.org> - 40~rc-2
+- Update to 40.rc
+
+* Fri Mar 12 2021 Debarshi Ray <rishi@fedoraproject.org> - 40~beta-2
+- Unbreak Flatpak builds on hosts without Tracker 3
+
+* Fri Mar 12 2021 Debarshi Ray <rishi@fedoraproject.org> - 40~beta-1
+- Update to 40.beta
+
+* Tue Feb 16 2021 Debarshi Ray <rishi@fedoraproject.org> - 3.38.1-1
+- Update to 3.38.1
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.38.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Mon Dec 14 2020 Debarshi Ray <rishi@fedoraproject.org> - 3.38.0-2
+- Remove python3-dogtail from Requires on RHEL 9
+
+* Wed Sep 23 2020 Debarshi Ray <rishi@fedoraproject.org> - 3.38.0-1
+- Update to 3.38.0
+
+* Mon Aug 24 2020 Debarshi Ray <rishi@fedoraproject.org> - 3.37.91.1-1
+- Update to 3.37.91.1
+
+* Mon Aug 24 2020 Debarshi Ray <rishi@fedoraproject.org> - 3.37.91-1
+- Update to 3.37.91
+
+* Tue Aug 11 2020 Debarshi Ray <rishi@fedoraproject.org> - 3.37.2-4
+- The dLeyna stack won't be part of RHEL 9
+
+* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.37.2-3
+- Second attempt - Rebuilt for
+ https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.37.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Fri May 22 2020 Debarshi Ray <rishi@fedoraproject.org> - 3.37.2-1
+- Update to 3.37.2
+
+* Wed May 20 2020 Debarshi Ray <rishi@fedoraproject.org> - 3.34.2-1
+- Update to 3.34.2
+
+* Thu Feb 13 2020 Kalev Lember <klember@redhat.com> - 3.34.1-1
+- Update to 3.34.1
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.34.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Wed Sep 11 2019 Kalev Lember <klember@redhat.com> - 3.34.0-1
+- Update to 3.34.0
+
+* Tue Aug 20 2019 Debarshi Ray <rishi@fedoraproject.org> - 3.33.91-1
+- Update to 3.33.91
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.32.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Mon Mar 18 2019 Kalev Lember <klember@redhat.com> - 3.32.0-1
+- Update to 3.32.0
+
+* Thu Feb 21 2019 Debarshi Ray <rishi@fedoraproject.org> - 3.31.91-1
+- Update to 3.31.91
+
+* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.31.3-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Mon Dec 17 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.31.3-2
+- Update dependencies
+
+* Sun Dec 16 2018 Phil Wyett <philwyett@kathenas.org> - 3.31.3-1
+- Update to 3.31.3
+
+* Thu Nov 15 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.31.2-1
+- Update to 3.31.2
+
+* Sat Oct 13 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.31.1-2
+- Build without git-core
+
+* Sat Oct 13 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.31.1-1
+- Update to 3.31.1
+- Switch to the Meson build system
+- Add %%license
+- Switch to %%autosetup
+- Update dependencies
+
+* Thu Sep 27 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.30.1-1
+- Update to 3.30.1
+
+* Thu Sep 06 2018 Kalev Lember <klember@redhat.com> - 3.30.0-1
+- Update to 3.30.0
+
+* Mon Sep 03 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.29.92-1
+- Update to 3.29.92
+
+* Tue Aug 14 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.29.91-1
+- Update to 3.29.91
+
+* Thu Aug 09 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.29.4-2
+- Remove Requires: gettext-libs - it is extraneous
+
+* Wed Jul 18 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.29.4-1
+- Update to 3.29.4
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.29.3-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Fri Jun 22 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.29.3-1
+- Update to 3.29.3
+- Drop the run-time requirement on ImageMagick
+
+* Thu Mar 15 2018 Kalev Lember <klember@redhat.com> - 3.28.0-1
+- Update to 3.28.0
+
+* Wed Mar 07 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.27.92-1
+- Update to 3.27.92
+
+* Mon Feb 19 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.27.90-1
+- Update to 3.27.90
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.27.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Fri Jan 12 2018 Debarshi Ray <rishi@fedoraproject.org> - 3.27.4-1
+- Update to 3.27.4
+
+* Thu Jan 11 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 3.27.3-2
+- Remove obsolete scriptlets
+
+* Wed Dec 13 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.27.3-1
+- Update to 3.27.3
+
+* Tue Oct 24 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.27.1-1
+- Update to 3.27.1
+
+* Sun Oct 08 2017 Kalev Lember <klember@redhat.com> - 3.26.1-1
+- Update to 3.26.1
+
+* Tue Sep 19 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.26.0-2
+- Add run-time dependency on tracker-miners
+
+* Wed Sep 13 2017 Kalev Lember <klember@redhat.com> - 3.26.0-1
+- Update to 3.26.0
+
+* Tue Sep 05 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.25.92-1
+- Update to 3.25.92
+
+* Wed Aug 23 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.25.91-1
+- Update to 3.25.91
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.25.4-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.25.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Wed Jul 19 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.25.4-1
+- Update to 3.25.4
+
+* Wed Jun 21 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.25.3-1
+- Update to 3.25.3
+
+* Wed May 10 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.25.1-1
+- Update to 3.25.1
+
+* Tue Apr 11 2017 Kalev Lember <klember@redhat.com> - 3.24.1-1
+- Update to 3.24.1
+
+* Tue Mar 21 2017 Kalev Lember <klember@redhat.com> - 3.24.0-1
+- Update to 3.24.0
+
+* Tue Mar 14 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.23.92-1
+- Update to 3.23.92
+
+* Fri Mar 03 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.23.91-1
+- Update to 3.23.91
+
+* Mon Feb 20 2017 Debarshi Ray <rishi@fedoraproject.org> - 3.23.90-1
+- Update to 3.23.90
+
+* Mon Feb 13 2017 Richard Hughes <rhughes@redhat.com> - 3.23.4-1
+- Update to 3.23.4
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.23.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Thu Dec 01 2016 Kalev Lember <klember@redhat.com> - 3.23.2-1
+- Update to 3.23.2
+
+* Wed Nov 23 2016 Kalev Lember <klember@redhat.com> - 3.22.2-1
+- Update to 3.22.2
+
+* Thu Oct 06 2016 Debarshi Ray <rishi@fedoraproject.org> - 3.22.1-1
+- Update to 3.22.1
+- Use --disable-silent-rules
+
+* Mon Sep 19 2016 Kalev Lember <klember@redhat.com> - 3.22.0-1
+- Update to 3.22.0
+
+* Mon Sep 12 2016 Debarshi Ray <rishi@fedoraproject.org> - 3.21.92-1
+- Update to 3.21.92
+- Use make_build macro
+- Update minimum required versions; use pkgconfig(...) for BRs
+
+* Sat Sep 03 2016 Kalev Lember <klember@redhat.com> - 3.21.91-1
+- Update to 3.21.91
+
+* Mon Aug 22 2016 Kalev Lember <klember@redhat.com> - 3.21.90-1
+- Update to 3.21.90
+
+* Wed Jul 20 2016 Richard Hughes <rhughes@redhat.com> - 3.21.4-1
+- Update to 3.21.4
+
+* Wed Jun 22 2016 Richard Hughes <rhughes@redhat.com> - 3.21.3-1
+- Update to 3.21.3
+
+* Tue May 03 2016 Kalev Lember <klember@redhat.com> - 3.21.1-1
+- Update to 3.21.1
+
+* Wed Apr 13 2016 Kalev Lember <klember@redhat.com> - 3.20.1-1
+- Update to 3.20.1
+
+* Tue Mar 22 2016 Kalev Lember <klember@redhat.com> - 3.20.0-1
+- Update to 3.20.0
+
+* Wed Mar 16 2016 Kalev Lember <klember@redhat.com> - 3.19.92-1
+- Update to 3.19.92
+
+* Fri Mar 04 2016 Richard Hughes <rhughes@redhat.com> - 3.19.91-1
+- Update to 3.19.91
+
+* Thu Feb 18 2016 Richard Hughes <rhughes@redhat.com> - 3.19.90-1
+- Update to 3.19.90
+
+* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.19.4-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Fri Jan 29 2016 Debarshi Ray <rishi@fedoraproject.org> - 3.19.4-2
+- Use upstreamed screenshots
+
+* Wed Jan 20 2016 Kalev Lember <klember@redhat.com> - 3.19.4-1
+- Update to 3.19.4
+
+* Fri Dec 18 2015 Kalev Lember <klember@redhat.com> - 3.19.3-2
+- Build with grilo 0.3
+
+* Wed Dec 16 2015 Kalev Lember <klember@redhat.com> - 3.19.3-1
+- Update to 3.19.3
+- Build with grilo 0.2
+- Define minimum gegl version
+- Use make_install macro
+
+* Tue Dec 08 2015 Debarshi Ray <rishi@fedoraproject.org> - 3.19.2-1
+- Update to 3.19.2
+
+* Tue Nov 10 2015 Kalev Lember <klember@redhat.com> - 3.18.2-1
+- Update to 3.18.2
+
+* Mon Oct 12 2015 Kalev Lember <klember@redhat.com> - 3.18.1-1
+- Update to 3.18.1
+
+* Tue Sep 22 2015 Kalev Lember <klember@redhat.com> - 3.18.0-1
+- Update to 3.18.0
+
+* Wed Jul 22 2015 David King <amigadave@amigadave.com> - 3.17.2-3
+- Bump for new gnome-desktop3
+
+* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.17.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Fri May 29 2015 Debarshi Ray <rishi@fedoraproject.org> - 3.17.2-1
+- Update to 3.17.2
+
+* Wed May 13 2015 Debarshi Ray <rishi@fedoraproject.org> - 3.16.2-1
+- Update to 3.16.2
+
+* Mon Apr 27 2015 David King <amigadave@amigadave.com> - 3.16.0-3
+- Rebuild for libgdata soname bump
+
+* Mon Mar 30 2015 Richard Hughes <rhughes@redhat.com> - 3.16.0-2
+- Use better AppData screenshots
+
+* Mon Mar 23 2015 Kalev Lember <kalevlember@gmail.com> - 3.16.0-1
+- Update to 3.16.0
+
+* Fri Mar 13 2015 Kalev Lember <kalevlember@gmail.com> - 3.15.91-1
+- Update to 3.15.91
+
+* Wed Feb 25 2015 Richard Hughes <rhughes@redhat.com> - 3.15.90-1
+- Update to 3.15.90
+
+* Thu Jan 22 2015 Richard Hughes <rhughes@redhat.com> - 3.15.4-1
+- Update to 3.15.4
+
+* Fri Dec 19 2014 Richard Hughes <rhughes@redhat.com> - 3.15.3-1
+- Update to 3.15.3
+
+* Sat Nov 29 2014 Kalev Lember <kalevlember@gmail.com> - 3.15.2-1
+- Update to 3.15.2
+
+* Wed Nov 12 2014 Vadim Rutkovsky <vrutkovs@redhat.com> - 3.14.2-2
+- Build installed tests
+
+* Mon Nov 10 2014 Kalev Lember <kalevlember@gmail.com> - 3.14.2-1
+- Update to 3.14.2
+
+* Wed Sep 24 2014 Kalev Lember <kalevlember@gmail.com> - 3.14.0-1
+- Update to 3.14.0
+- Set minimum required versions for libgdata and gtk3
+
+* Wed Sep 17 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.92-1
+- Update to 3.13.92
+
+* Fri Sep 05 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.91-1
+- Update to 3.13.91
+- Include HighContrast icons
+
+* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.13.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Thu Jul 24 2014 Kalev Lember <kalevlember@gmail.com> - 3.13.4-1
+- Update to 3.13.4
+
+* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.12.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Wed Apr 16 2014 Kalev Lember <kalevlember@gmail.com> - 3.12.1-1
+- Update to 3.12.1
+- Include help files
+
+* Mon Mar 24 2014 Richard Hughes <rhughes@redhat.com> - 3.12.0-1
+- Update to 3.12.0
+
+* Tue Mar 18 2014 Richard Hughes <rhughes@redhat.com> - 3.11.92-1
+- Update to 3.11.92
+
+* Sat Mar 08 2014 Richard Hughes <rhughes@redhat.com> - 3.11.91-1
+- Update to 3.11.91
+
+* Thu Feb 20 2014 Kalev Lember <kalevlember@gmail.com> - 3.11.90-1
+- Update to 3.11.90
+
+* Wed Feb 19 2014 Richard Hughes <rhughes@redhat.com> - 3.11.5-2
+- Rebuilt for gnome-desktop soname bump
+
+* Thu Feb 06 2014 Kalev Lember <kalevlember@gmail.com> - 3.11.5-1
+- Update to 3.11.5
+
+* Wed Jan 15 2014 Richard Hughes <rhughes@redhat.com> - 3.11.4-1
+- Update to 3.11.4
+
+* Tue Dec 17 2013 Richard Hughes <rhughes@redhat.com> - 3.11.3-1
+- Update to 3.11.3
+
+* Mon Nov 25 2013 Richard Hughes <rhughes@redhat.com> - 3.11.2-1
+- Update to 3.11.2
+
+* Thu Nov 14 2013 Richard Hughes <rhughes@redhat.com> - 3.10.2-1
+- Update to 3.10.2
+
+* Tue Oct 29 2013 Richard Hughes <rhughes@redhat.com> - 3.10.1-1
+- Update to 3.10.1
+
+* Wed Sep 25 2013 Richard Hughes <rhughes@redhat.com> - 3.10.0-1
+- Update to 3.10.0
+
+* Wed Sep 18 2013 Kalev Lember <kalevlember@gmail.com> - 3.9.92-1
+- Update to 3.9.92
+- Include the appdata file
+
+* Wed Sep 04 2013 Kalev Lember <kalevlember@gmail.com> - 3.9.91-1
+- Update to 3.9.91
+
+* Thu Aug 22 2013 Kalev Lember <kalevlember@gmail.com> - 3.9.90-1
+- Update to 3.9.90
+
+* Sun Aug 04 2013 Debarshi Ray <rishi@fedoraproject.org> - 3.9.5.1-1
+- Update to 3.9.5.1
+
+* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.9.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Tue Jul 16 2013 Debarshi Ray <rishi@fedoraproject.org> - 3.9.4-1
+- Update to 3.9.4
+
+* Tue May 14 2013 Richard Hughes <rhughes@redhat.com> - 3.8.2-1
+- Update to 3.8.2
+
+* Mon Apr 15 2013 Richard Hughes <rhughes@redhat.com> - 3.8.0-1
+- Update to 3.8.0
+- Drop upstreamed packages
+- Fix BRs
+
+* Thu Feb 21 2013 Kalev Lember <kalevlember@gmail.com> - 3.7.3-6
+- Rebuilt for cogl soname bump
+
+* Wed Feb 20 2013 Kalev Lember <kalevlember@gmail.com> - 3.7.3-5
+- Rebuilt for libgnome-desktop soname bump
+
+* Mon Jan 28 2013 Matthias Clasen <mclasen@redhat.com> - 3.7.3-4
+- Rebuild for new tracker
+
+* Fri Jan 25 2013 Peter Robinson <pbrobinson@fedoraproject.org> 3.7.3-3
+- Rebuild for new cogl
+
+* Fri Dec 21 2012 Kalev Lember <kalevlember@gmail.com> - 3.7.3-2
+- Rebuilt for libgnome-desktop-3 3.7.3 soname bump
+
+* Wed Dec 19 2012 Debarshi Ray <rishi@fedoraproject.org> - 3.7.3-1
+- Update to 3.7.3
+
+* Sat Dec 01 2012 Mathieu Bridon <bochecha@fedoraproject.org> - 3.7.2-4
+* Fix based on Ivan's review feedback:
+ - Add a comment on the multi-licensing situation
+
+* Thu Nov 29 2012 Mathieu Bridon <bochecha@fedoraproject.org> - 3.7.2-3
+* Fixes based on Ivan's review feedback:
+ - Fix the upstream URL
+ - Fix the License tag
+ - Preserve timestamps when installing
+
+* Sun Nov 25 2012 Mathieu Bridon <bochecha@fedoraproject.org> - 3.7.2-2
+* Fixes based on Debarshi's review feedback:
+ - Fix build requirement on gdk-pixbuf2-devel
+ - Add missing Provides on the bundled libgd
+
+* Sun Nov 18 2012 Mathieu Bridon <bochecha@fedoraproject.org> - 3.7.2-1
+- Initial package for Fedora.
diff --git a/sources b/sources
new file mode 100644
index 0000000..ad5c97a
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+22c5a55020e6b5d05fa93552f56db1c8 gnome-photos-40.0.tar.xz