From ea014f8d9427e052d96df6c0fba216a72effffd3 Mon Sep 17 00:00:00 2001 From: Philipp Kitzberger Date: Mon, 27 Jul 2026 15:04:01 +0200 Subject: [PATCH] fix unlock after edit view close Resolves: #17380 --- .../android/ui/activity/EditorWebView.java | 28 +++++++++++++++++++ .../ui/activity/ExternalSiteWebView.java | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java b/app/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java index 4721bbbe434f..d29b7c1c8721 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java @@ -23,7 +23,9 @@ import com.google.android.material.snackbar.Snackbar; import com.nextcloud.android.common.ui.theme.utils.ColorRole; +import com.nextcloud.android.lib.resources.files.ToggleFileLockRemoteOperation; import com.nextcloud.client.account.User; +import com.nextcloud.common.NextcloudClient; import com.nextcloud.utils.extensions.IntentExtensionsKt; import com.owncloud.android.R; import com.owncloud.android.databinding.RichdocumentsWebviewBinding; @@ -31,6 +33,7 @@ import com.owncloud.android.datamodel.SyncedFolderObserver; import com.owncloud.android.datamodel.SyncedFolderProvider; import com.owncloud.android.datamodel.ThumbnailsCacheManager; +import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.asynctasks.TextEditorLoadUrlTask; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.MimeTypeUtil; @@ -100,10 +103,35 @@ public void onUrlLoaded(String loadedUrl) { } public void closeView() { + unlockFile(); getWebView().destroy(); finish(); } + @Override + protected void onDestroy() { + unlockFile(); + super.onDestroy(); + } + + private void unlockFile() { + OCFile file = getFile(); + Optional user = getUser(); + + if (file == null || !user.isPresent()) { + return; + } + + new Thread(() -> { + try { + NextcloudClient client = clientFactory.createNextcloudClient(user.get()); + new ToggleFileLockRemoteOperation(false, file.getRemotePath()).execute(client); + } catch (Exception e) { + Log_OC.e(TAG, "Failed to unlock file on editor close", e); + } + }).start(); + } + public void reload() { if (getWebView().getVisibility() != View.VISIBLE) { return; diff --git a/app/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java b/app/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java index fe1107d1b140..f64d8d9f53f5 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java @@ -46,7 +46,7 @@ public class ExternalSiteWebView extends FileActivity { public static final String EXTRA_SHOW_TOOLBAR = "SHOW_TOOLBAR"; public static final String EXTRA_TEMPLATE = "TEMPLATE"; - private static final String TAG = ExternalSiteWebView.class.getSimpleName(); + protected static final String TAG = ExternalSiteWebView.class.getSimpleName(); protected boolean showToolbar = true; private ExternalsiteWebviewBinding binding;