hwittenborn / celeste

GUI file synchronization client that can sync with any cloud provider
GNU General Public License v3.0
1.1k stars 36 forks source link

Dropbox sync failing on fresh Flathub install #187

Open Jachimo opened 8 months ago

Jachimo commented 8 months ago

I'm running into a problem after installing Celese using Flatpak on a brand-new Pop_OS 22.04 (basically Ubuntu 22.04) system.

I installed Celeste, ran it, added my Dropbox account, authenticated to the account (browser roundtrip worked fine), but then it seemed to stop doing anything.

Running it in a terminal session shows a lot (once a second or so) of the following error message lines:

2023/12/31 16:26:26 ERROR : : error listing: Post "https://api.dropboxapi.com/2/files/list_folder": token expired and there's no refresh token - manually refresh with "rclone config reconnect Personal Dropbox:"

Because the app is installed via Flatpak, and I don't have rclone installed in my normal PATH, I'm not sure how I can even do what it suggests about re-running rclone config reconnect. (I think for that to work I'd somehow have to run it from inside the Flatpak environment? I'm not sure where rclone is actually installed but presumably somewhere in /var/lib/flatpak/...)

It seems to me there are potentially two issues at work here: one is the issue with Dropbox sync not working and causing the error, and then there's a secondary contributing problem, which is the inability to run the Rclone reconnect command easily, when Flatpak has been used to install Celeste.

Happy to gather more information if helpful.

hwittenborn commented 8 months ago

Hey @Jachimo, the issue appears to be that the Dropbox token Celeste is using for your account expired, but like you said there needs to be a way for Celeste to fix that for you. Ideally Celeste would just detect the scenario you encountered and then ask to reconnect automatically, but that doesn't happen like you were seeing.

In regards to a way to fix things right now, you could run the following (replacing remote with the Name you configured in Celeste's GUI):

# First run this.
flatpak run --command=sh com.hunterwittenborn.Celeste
# And then run this in the shell that gets spawned.
rclone config delete 'remote'
rclone config
# And then follow the prompts to make a new config.
# Set 'name' to the previous value you had for 'remote'.

I want to have a way to make that all seamless in Celeste's GUI as well, I just haven't quite gotten to it yet. I'm still pretty busy with Celeste's rewrite, but I'd like to get this tackled after that's done.

If you need help with any of that you can reach out in Celeste's support room as well.

hwittenborn commented 8 months ago

Also though: did you get that error immediately after adding the Dropbox account to Celeste, or had you waited a bit? It shouldn't be happening immediately, if it is there might be something else happening that I need to look into.

Jachimo commented 8 months ago

@hwittenborn No, the error didn't appear immediately. When I first added the Dropbox account (about a week ago, maybe a bit more) it just seemed to be sitting there and not syncing anything. I left it unattended for a while to see if it would pull anything down. It didn't seem to, so when I got back I restarted the app and at that point saw the error.

There might be something else going on that caused it to fail to sync the first time, but I wanted to try again and see if that was just a fluke.

Jachimo commented 8 months ago

I got a chance to play with the machine that's having the issue today and unfortunately the steps you suggested didn't seem to help.

Getting into the Flatpak shell and deleting and re-configuring it seemed to work fine. It popped me into my browser where I authorized the app with Dropbox, and seemed to have gotten the OAuth token. But when I opened Celeste again and cleared the errors, the "token expired and there's no refresh token" error popped right back up.

Possibly related though: when I used rclone inside the Flatpak shell and tried to use the ncdu text-based browser, it failed with an error (and also blew up my terminal window with some sort of messed-up ASCII stuff):

Waiting for root directory...                                                                                                       
Total usage: 3.246G, Objects: 3082024/01/05 21:24:02 
ERROR : Vault: error listing: path/locked/

This is with rclone rclone v1.53.3-DEV inside the Flatpak.

Update -- I think I've figured out at least one aspect of the problem. When I initially set up the sync, I wanted to have the local directory ~/Dropbox sync with my entire remote Dropbox repository. I thought that the default, which has / as the remote sync target, would do that. But... for whatever reason, that doesn't seem to work right. (I have a personal Dropbox account, if that matters.)

Syncing ~/Dropbox on the local side to a directory inside my Dropbox, e.g. "Apps", on the remote side, seems to work fine. It's not what I want exactly, but it shows that it's not really an authentication/token issue really. There's something a bit more complicated going on.

However, in doing all this I noticed a slightly-odd behavior in Celeste: I can't delete a remote using the GUI; it pops up a confirmation dialog, I click yes, and then the app seems to crash.