Browse Source

Merge pull request #13575 from nextcloud/bugfix/use-activity-when-fragment-added

BugFix - Use Activity When Fragment Added
Alper Öztürk 7 months ago
parent
commit
7dadbc74c4

+ 18 - 0
app/src/main/java/com/nextcloud/utils/extensions/FragmentExtensions.kt

@@ -0,0 +1,18 @@
+/*
+ * Nextcloud - Android Client
+ *
+ * SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+package com.nextcloud.utils.extensions
+
+import androidx.fragment.app.Fragment
+
+inline fun <reified T : Any> Fragment.typedActivity(): T? {
+    return if (isAdded && activity != null && activity is T) {
+        activity as T
+    } else {
+        null
+    }
+}

+ 3 - 3
app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt

@@ -27,6 +27,7 @@ import com.nextcloud.client.account.CurrentAccountProvider
 import com.nextcloud.client.di.Injectable
 import com.nextcloud.client.di.Injectable
 import com.nextcloud.client.network.ConnectivityService
 import com.nextcloud.client.network.ConnectivityService
 import com.nextcloud.utils.extensions.getParcelableArgument
 import com.nextcloud.utils.extensions.getParcelableArgument
+import com.nextcloud.utils.extensions.typedActivity
 import com.nextcloud.utils.fileNameValidator.FileNameValidator
 import com.nextcloud.utils.fileNameValidator.FileNameValidator
 import com.owncloud.android.R
 import com.owncloud.android.R
 import com.owncloud.android.databinding.EditBoxDialogBinding
 import com.owncloud.android.databinding.EditBoxDialogBinding
@@ -185,7 +186,7 @@ class CreateFolderDialogFragment : DialogFragment(), DialogInterface.OnClickList
             val path = parentFolder?.decryptedRemotePath + newFolderName + OCFile.PATH_SEPARATOR
             val path = parentFolder?.decryptedRemotePath + newFolderName + OCFile.PATH_SEPARATOR
             lifecycleScope.launch(Dispatchers.IO) {
             lifecycleScope.launch(Dispatchers.IO) {
                 if (connectivityService.isNetworkAndServerAvailable()) {
                 if (connectivityService.isNetworkAndServerAvailable()) {
-                    (requireActivity() as ComponentsGetter).fileOperationsHelper.createFolder(path)
+                    typedActivity<ComponentsGetter>()?.fileOperationsHelper?.createFolder(path)
                 } else {
                 } else {
                     Log_OC.d(TAG, "Network not available, creating offline operation")
                     Log_OC.d(TAG, "Network not available, creating offline operation")
                     fileDataStorageManager.addCreateFolderOfflineOperation(
                     fileDataStorageManager.addCreateFolderOfflineOperation(
@@ -196,8 +197,7 @@ class CreateFolderDialogFragment : DialogFragment(), DialogInterface.OnClickList
                     )
                     )
 
 
                     launch(Dispatchers.Main) {
                     launch(Dispatchers.Main) {
-                        val fileDisplayActivity = requireActivity() as? FileDisplayActivity
-                        fileDisplayActivity?.syncAndUpdateFolder(true)
+                        (requireActivity() as? FileDisplayActivity)?.syncAndUpdateFolder(true)
                     }
                     }
                 }
                 }
             }
             }