diff --git a/app/src/main/java/com/owncloud/android/ui/asynctasks/RetrieveHoverCardAsyncTask.java b/app/src/main/java/com/owncloud/android/ui/asynctasks/RetrieveHoverCardAsyncTask.java deleted file mode 100644 index 26fd08d9fc25..000000000000 --- a/app/src/main/java/com/owncloud/android/ui/asynctasks/RetrieveHoverCardAsyncTask.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Nextcloud - Android Client - * - * SPDX-FileCopyrightText: 2021 Tobias Kaminsky - * SPDX-FileCopyrightText: 2021 Nextcloud GmbH - * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only - */ -package com.owncloud.android.ui.asynctasks; - -import android.os.AsyncTask; - -import com.nextcloud.android.lib.resources.profile.GetHoverCardRemoteOperation; -import com.nextcloud.android.lib.resources.profile.HoverCard; -import com.nextcloud.client.account.User; -import com.nextcloud.client.network.ClientFactory; -import com.nextcloud.common.NextcloudClient; -import com.owncloud.android.R; -import com.owncloud.android.lib.common.operations.RemoteOperationResult; -import com.owncloud.android.ui.fragment.ProfileBottomSheetDialog; -import com.owncloud.android.utils.DisplayUtils; -import com.owncloud.android.utils.theme.ViewThemeUtils; - -import java.lang.ref.WeakReference; - -import androidx.fragment.app.FragmentActivity; -import androidx.lifecycle.Lifecycle; - -public class RetrieveHoverCardAsyncTask extends AsyncTask { - private final User user; - private final String userId; - private final WeakReference activityWeakReference; - private final ClientFactory clientFactory; - private final ViewThemeUtils viewThemeUtils; - - public RetrieveHoverCardAsyncTask(User user, - String userId, - FragmentActivity activity, - ClientFactory clientFactory, - ViewThemeUtils viewThemeUtils) { - this.user = user; - this.userId = userId; - this.activityWeakReference = new WeakReference<>(activity); - this.clientFactory = clientFactory; - this.viewThemeUtils = viewThemeUtils; - } - - @Override - protected HoverCard doInBackground(Void... voids) { - try { - NextcloudClient client = clientFactory.createNextcloudClient(user); - RemoteOperationResult result = new GetHoverCardRemoteOperation(userId).execute(client); - - if (result.isSuccess()) { - return result.getResultData(); - } else { - return null; - } - } catch (ClientFactory.CreationException | NullPointerException e) { - return null; - } - } - - @Override - protected void onPostExecute(HoverCard hoverCard) { - FragmentActivity activity = this.activityWeakReference.get(); - - if (activity != null && activity.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) { - if (hoverCard.getActions().size() > 0) { - new ProfileBottomSheetDialog(activity, - user, - hoverCard, - viewThemeUtils) - .show(); - } else { - DisplayUtils.showSnackMessage(activity, R.string.no_actions); - } - } - } -} diff --git a/app/src/main/java/com/owncloud/android/ui/asynctasks/RetrieveHoverCardAsyncTask.kt b/app/src/main/java/com/owncloud/android/ui/asynctasks/RetrieveHoverCardAsyncTask.kt new file mode 100644 index 000000000000..7a14f0da52b2 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/asynctasks/RetrieveHoverCardAsyncTask.kt @@ -0,0 +1,68 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Alper Ozturk + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +package com.owncloud.android.ui.asynctasks + +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.lifecycleScope +import com.nextcloud.android.lib.resources.profile.GetHoverCardRemoteOperation +import com.nextcloud.client.account.User +import com.nextcloud.client.network.ClientFactory +import com.owncloud.android.R +import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.ui.fragment.ProfileBottomSheetDialog +import com.owncloud.android.utils.DisplayUtils +import com.owncloud.android.utils.theme.ViewThemeUtils +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class RetrieveHoverCardAsyncTask( + private val user: User, + private val userId: String, + private val activity: FragmentActivity, + private val clientFactory: ClientFactory, + private val viewThemeUtils: ViewThemeUtils +) { + companion object { + private const val TAG = "RetrieveHoverCardAsyncTask" + } + + @Suppress("TooGenericExceptionCaught") + fun execute() { + activity.lifecycleScope.launch { + val result = withContext(Dispatchers.IO) { + val client = clientFactory.createNextcloudClient(user) + val operationResult = GetHoverCardRemoteOperation(userId).execute(client) + return@withContext try { + if (operationResult.isSuccess) { + operationResult.getResultData() + } else { + null + } + } catch (e: Exception) { + Log_OC.e(TAG, "exception: $e") + null + } + } + + withContext(Dispatchers.Main) { + if (result?.actions.isNullOrEmpty()) { + DisplayUtils.showSnackMessage(activity, R.string.no_actions) + return@withContext + } + + ProfileBottomSheetDialog( + activity, + user, + result, + viewThemeUtils + ) + .show() + } + } + } +} diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.kt index 709379227093..928beeee83d5 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.kt @@ -770,10 +770,13 @@ class FileDetailSharingFragment : return } + val userId = shareWith ?: return + val activity = fileActivity ?: return + RetrieveHoverCardAsyncTask( user, - shareWith, - fileActivity, + userId, + activity, clientFactory, viewThemeUtils ).execute()