summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2021-01-29 16:13:55 +0100
committerOndrej Holy <oholy@redhat.com>2021-02-12 14:48:02 +0100
commit27b932ec3bf0d40ca33924ed9e8eaf61a353292c (patch)
tree64c37f70612316c33c6b986a80c0c26c96d88a5a
parent8d2442e3e49dde993dd47e8f2b4724ea50489645 (diff)
downloadgvfs-27b932ec3bf0d40ca33924ed9e8eaf61a353292c.tar.gz
google: Provide volatile entries for old URIs
The My Drive folder was added to the root, which changed URIs from /file-id to /root-id/file-id. Let's provide volatile entries in the old locations to not break user bookmarks...
-rw-r--r--daemon/gvfsbackendgoogle.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/daemon/gvfsbackendgoogle.c b/daemon/gvfsbackendgoogle.c
index 27f670ac..684a2e8a 100644
--- a/daemon/gvfsbackendgoogle.c
+++ b/daemon/gvfsbackendgoogle.c
@@ -1088,8 +1088,26 @@ resolve (GVfsBackendGoogle *self,
ret_val = resolve_child (self, parent, basename, cancellable, &local_error);
if (ret_val == NULL)
{
- g_propagate_error (error, local_error);
- goto out;
+ /* This fallback provides volatile entries for URIs which was used
+ * before My Drive folder was added in the root. */
+ if (parent == self->root)
+ {
+ g_clear_error (&local_error);
+ ret_val = resolve_child (self, self->home, basename, cancellable, &local_error);
+ if (ret_val != NULL && out_path != NULL)
+ {
+ gchar *tmp;
+ tmp = g_build_path ("/", *out_path, gdata_entry_get_id (self->home), NULL);
+ g_free (*out_path);
+ *out_path = tmp;
+ }
+ }
+
+ if (ret_val == NULL)
+ {
+ g_propagate_error (error, local_error);
+ goto out;
+ }
}
if (out_path != NULL)