Conversation
f1a363a to
702ac22
Compare
|
currently able to complete the initial synchronization |
5cc28ff to
aab773f
Compare
|
Current UI on linux to decide what type of synchronization the user wants to enable @kra-mo We would want to offer an easy way to test the linux virtual files plug-in while recommending people to not use for production use (until it is ready for that) |
|
@mgallien I think being straightforward with the text is probably the best idea. For example: Virtual files (beta) And don't have it be the default selection. |
bbb62b9 to
af01969
Compare
|
I need to implement the suggestion for the selection of the synchronization types |
|
there is a build and runtime dependency on https://github.com/opencloud-eu/openvfs |
af01969 to
72b1e73
Compare
17a3181 to
f67dc46
Compare
c116229 to
62e5899
Compare
| */ | ||
| bool multipleAccountsRegistered = false; | ||
|
|
||
| const FileSystem::Path &root() const; |
There was a problem hiding this comment.
function root should be marked [[nodiscard]]
| const FileSystem::Path &root() const; | |
| [[nodiscard]] const FileSystem::Path &root() const; |
| }; | ||
| FolderQuota _folderQuota; | ||
|
|
||
| QString localName() const |
There was a problem hiding this comment.
function localName should be marked [[nodiscard]]
| QString localName() const | |
| [[nodiscard]] QString localName() const |
| */ | ||
| static Path relative(QAnyStringView path); | ||
|
|
||
| const std::filesystem::path &get() const { return _path; } |
There was a problem hiding this comment.
function get should be marked [[nodiscard]]
| const std::filesystem::path &get() const { return _path; } | |
| [[nodiscard]] const std::filesystem::path &get() const { return _path; } |
| */ | ||
| bool multipleAccountsRegistered = false; | ||
|
|
||
| const FileSystem::Path &root() const; |
There was a problem hiding this comment.
function root should be marked [[nodiscard]]
| const FileSystem::Path &root() const; | |
| [[nodiscard]] const FileSystem::Path &root() const; |
| }; | ||
| FolderQuota _folderQuota; | ||
|
|
||
| QString localName() const |
There was a problem hiding this comment.
function localName should be marked [[nodiscard]]
| QString localName() const | |
| [[nodiscard]] QString localName() const |
| */ | ||
| static Path relative(QAnyStringView path); | ||
|
|
||
| const std::filesystem::path &get() const { return _path; } |
There was a problem hiding this comment.
function get should be marked [[nodiscard]]
| const std::filesystem::path &get() const { return _path; } | |
| [[nodiscard]] const std::filesystem::path &get() const { return _path; } |
| */ | ||
| bool multipleAccountsRegistered = false; | ||
|
|
||
| const FileSystem::Path &root() const; |
There was a problem hiding this comment.
function root should be marked [[nodiscard]]
| const FileSystem::Path &root() const; | |
| [[nodiscard]] const FileSystem::Path &root() const; |
| }; | ||
| FolderQuota _folderQuota; | ||
|
|
||
| QString localName() const |
There was a problem hiding this comment.
function localName should be marked [[nodiscard]]
| QString localName() const | |
| [[nodiscard]] QString localName() const |
| */ | ||
| static Path relative(QAnyStringView path); | ||
|
|
||
| const std::filesystem::path &get() const { return _path; } |
There was a problem hiding this comment.
function get should be marked [[nodiscard]]
| const std::filesystem::path &get() const { return _path; } | |
| [[nodiscard]] const std::filesystem::path &get() const { return _path; } |
| */ | ||
| bool multipleAccountsRegistered = false; | ||
|
|
||
| const FileSystem::Path &root() const; |
There was a problem hiding this comment.
function root should be marked [[nodiscard]]
| const FileSystem::Path &root() const; | |
| [[nodiscard]] const FileSystem::Path &root() const; |
not sure why it does that
bda0c3a to
c180e70
Compare
|
Artifact containing the Flatpak bundle: com.nextcloud.desktopclient.nextcloud.flatpak.zip Digest: To test this change/fix you can download the above artifact file, unzip it, and install the bundle with: Please make sure to quit your existing Nextcloud app and backup your data. |
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
we need to store and restore the account UUID that is used to identify the synchronization folder that will enable connection again to the folder when restarting the client Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
we want to offer an easy way to test the linux on-demand (virtula files) feature we want to still select the classical sync by default and warn users of virtual files to be cautious with it Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com> Assisted-by: ClaudeCode:claude-sonnet-5
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
should enable to build flatpak packages directly from desktop repository modify the build manifest to enable the new openvfs virtual files feature Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
c180e70 to
60e2513
Compare
|
Artifact containing the AppImage: nextcloud-appimage-pr-10635.zip Digest: To test this change/fix you can download the above artifact file, unzip it, and run it. Please make sure to quit your existing Nextcloud app and backup your data. |
| // LocalInfo OpenVFS::statTypeVirtualFile(const std::filesystem::directory_entry &path, ItemType type) | ||
| // { | ||
| // if (type == ItemTypeFile) { | ||
| // const auto attribs = placeHolderAttributes(path.path()); | ||
| // if (attribs.state == ::OpenVFS::Constants::States::DeHydrated) { | ||
| // type = ItemTypeVirtualFile; | ||
| // if (attribs.pinState == convertPinState(PinState::AlwaysLocal)) { | ||
| // type = ItemTypeVirtualFileDownload; | ||
| // } | ||
| // } else { | ||
| // if (attribs.pinState == convertPinState(PinState::OnlineOnly)) { | ||
| // type = ItemTypeVirtualFileDehydration; | ||
| // } | ||
| // } | ||
| // } | ||
| // qCDebug(lcOpenVFS) << path.path().native() << Utility::enumToString(type); | ||
| // return LocalInfo(path, type); | ||
| // } | ||
|
|
There was a problem hiding this comment.
| // LocalInfo OpenVFS::statTypeVirtualFile(const std::filesystem::directory_entry &path, ItemType type) | |
| // { | |
| // if (type == ItemTypeFile) { | |
| // const auto attribs = placeHolderAttributes(path.path()); | |
| // if (attribs.state == ::OpenVFS::Constants::States::DeHydrated) { | |
| // type = ItemTypeVirtualFile; | |
| // if (attribs.pinState == convertPinState(PinState::AlwaysLocal)) { | |
| // type = ItemTypeVirtualFileDownload; | |
| // } | |
| // } else { | |
| // if (attribs.pinState == convertPinState(PinState::OnlineOnly)) { | |
| // type = ItemTypeVirtualFileDehydration; | |
| // } | |
| // } | |
| // } | |
| // qCDebug(lcOpenVFS) << path.path().native() << Utility::enumToString(type); | |
| // return LocalInfo(path, type); | |
| // } |
| if (stat->type == ItemTypeDirectory) { | ||
| return false; | ||
| } |
There was a problem hiding this comment.
should this catch virtual directories early as well?
| if (stat->type == ItemTypeDirectory) { | |
| return false; | |
| } | |
| if (stat->type == ItemTypeDirectory || stat->type == ItemTypeVirtualDirectory) { | |
| return false; | |
| } |
that would be covered by the if (stat->type == ItemTypeFile) below
| const auto owner = xattrOwnerString(params.account->uuid()).toStdString(); | ||
| if (const auto info = ::OpenVFS::Registration::registerFilesystem(std::filesystem::path{params.filesystemPath.toStdWString()}, owner); !info) { | ||
| if (info.owner() != owner) { | ||
| Q_EMIT error(tr("Unable to claim the sync root for files on demand, the folder is already claimed by %1").arg(info.owner())); |
There was a problem hiding this comment.
| Q_EMIT error(tr("Unable to claim the sync root for files on demand, the folder is already claimed by %1").arg(info.owner())); | |
| //: %1: system user name who is the owner of the sync root directory | |
| Q_EMIT error(tr("Unable to claim the sync root for files on demand, the folder is already claimed by %1").arg(info.owner())); |
| // if (OCC::Utility::runningInAppImage()) { | ||
| // auto appimagePath = OCC::FileSystem::Path(qApp->applicationDirPath()) / "../etc/xdg/openvfs/config.json"; | ||
| // if (appimagePath.exists()) { | ||
| // return appimagePath; | ||
| // } | ||
| // } |
There was a problem hiding this comment.
I will double check
| PUBLIC | ||
| OpenVFS::LibOpenVFS | ||
| ) | ||
| endif() |
There was a problem hiding this comment.
does libsync really need to link to OpenVFS? The appimage build script now includes the --library=/root/linux-gcc-x86_64/lib64/libopenvfs.so option, maybe this change here can be omitted
There was a problem hiding this comment.
no
without that, the plugin loader is not finding the libopenvfs.so needed dependency
do not ask me why the loader behave that way inside the AppImage, I did not understand it
|





Resolves
#
Summary
TODO
Checklist
AI (if applicable)