|
1 | 1 | /* |
2 | 2 | * Nextcloud - Android Client |
3 | 3 | * |
| 4 | + * SPDX-FileCopyrightText: 2026 Alper Ozturk <alper.ozturk@nextcloud.com> |
4 | 5 | * SPDX-FileCopyrightText: 2026 Philipp Hasper <vcs@hasper.info> |
5 | 6 | * SPDX-FileCopyrightText: 2023 TSI-mc |
6 | 7 | * SPDX-FileCopyrightText: 2018-2023 Tobias Kaminsky <tobias@kaminsky.me> |
|
63 | 64 | import com.nextcloud.utils.extensions.OCFileExtensionsKt; |
64 | 65 | import com.nextcloud.utils.extensions.ViewExtensionsKt; |
65 | 66 | import com.nextcloud.utils.fileNameValidator.FileNameValidator; |
| 67 | +import com.nextcloud.utils.thumbnail.ThumbnailGenerator; |
66 | 68 | import com.nextcloud.utils.view.FastScrollUtils; |
67 | 69 | import com.owncloud.android.MainApp; |
68 | 70 | import com.owncloud.android.R; |
|
121 | 123 | import com.owncloud.android.utils.FileStorageUtils; |
122 | 124 | import com.owncloud.android.utils.MimeTypeUtil; |
123 | 125 | import com.owncloud.android.utils.PermissionUtil; |
124 | | -import com.nextcloud.utils.thumbnail.ThumbnailGenerator; |
| 126 | +import com.owncloud.android.utils.WebViewUtil; |
125 | 127 | import com.owncloud.android.utils.theme.ThemeUtils; |
126 | 128 |
|
127 | 129 | import org.apache.commons.httpclient.HttpStatus; |
@@ -1220,26 +1222,43 @@ private boolean canPreviewInVirtualFolderPager(OCFile file) { |
1220 | 1222 | return virtualFolderSearch && MimeTypeUtil.isVideo(file); |
1221 | 1223 | } |
1222 | 1224 |
|
| 1225 | + private boolean supportsDirectEditing(OCFile file, boolean webViewAvailable) { |
| 1226 | + if (!webViewAvailable) { |
| 1227 | + return false; |
| 1228 | + } |
| 1229 | + |
| 1230 | + final var account = accountManager.getUser(); |
| 1231 | + if (account.isAnonymous()) { |
| 1232 | + return false; |
| 1233 | + } |
| 1234 | + |
| 1235 | + final var capability = |
| 1236 | + mContainerActivity.getStorageManager().getCapability(account.getAccountName()); |
| 1237 | + |
| 1238 | + final var mimeTypes = capability.getRichDocumentsMimeTypeList(); |
| 1239 | + return mimeTypes != null |
| 1240 | + && mimeTypes.contains(file.getMimeType()) |
| 1241 | + && capability.getRichDocumentsDirectEditing().isTrue() |
| 1242 | + && !file.isEncrypted(); |
| 1243 | + } |
| 1244 | + |
1223 | 1245 | private void handlePendingDownloadFile(OCFile file) { |
1224 | 1246 | if (!isAccountManagerInitialized()) { |
1225 | 1247 | Log_OC.e(TAG, "AccountManager not yet initialized"); |
1226 | 1248 | return; |
1227 | 1249 | } |
1228 | 1250 |
|
1229 | | - User account = accountManager.getUser(); |
1230 | | - OCCapability capability = mContainerActivity.getStorageManager().getCapability(account.getAccountName()); |
| 1251 | + boolean webViewAvailable = WebViewUtil.available(getContext()); |
1231 | 1252 |
|
1232 | 1253 | if (MimeTypeUtil.isVideo(file) && !file.isEncrypted() && mContainerActivity instanceof FileDisplayActivity fda) { |
1233 | 1254 | setFabVisible(false); |
1234 | 1255 | fda.startImagePreview(file, true, null); |
1235 | 1256 | } else if (PreviewMediaActivity.Companion.canBePreviewed(file) && !file.isEncrypted() && mContainerActivity instanceof FileDisplayActivity fda) { |
1236 | 1257 | setFabVisible(false); |
1237 | 1258 | fda.startMediaPreview(file, 0, true, true, true, true); |
1238 | | - } else if (editorUtils.getEditor(accountManager.getUser(), file.getMimeType()) != null && !file.isEncrypted()) { |
| 1259 | + } else if (webViewAvailable && editorUtils.getEditor(accountManager.getUser(), file.getMimeType()) != null && !file.isEncrypted()) { |
1239 | 1260 | TextEditorWebView.Companion.startTextEditor(file, getContext()); |
1240 | | - } else if (capability.getRichDocumentsMimeTypeList() != null && |
1241 | | - capability.getRichDocumentsMimeTypeList().contains(file.getMimeType()) && |
1242 | | - capability.getRichDocumentsDirectEditing().isTrue() && !file.isEncrypted()) { |
| 1261 | + } else if (supportsDirectEditing(file, webViewAvailable)) { |
1243 | 1262 | mContainerActivity.getFileOperationsHelper().openFileAsRichDocument(file, getContext()); |
1244 | 1263 | } else if (mContainerActivity instanceof FileDisplayActivity fda) { |
1245 | 1264 | fda.startDownloadForPreview(file, mFile); |
|
0 commit comments