Pārlūkot izejas kodu

Extract navigation to function

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 gadu atpakaļ
vecāks
revīzija
5fa6b17fe1

+ 1 - 1
app/src/main/java/com/nextcloud/ui/composeFragment/ComposeDestinations.kt → app/src/main/java/com/nextcloud/ui/composeFragment/ComposeDestination.kt

@@ -21,6 +21,6 @@
 
 package com.nextcloud.ui.composeFragment
 
-enum class ComposeDestinations {
+enum class ComposeDestination {
     AssistantScreen
 }

+ 6 - 6
app/src/main/java/com/nextcloud/ui/composeFragment/ComposeFragment.kt

@@ -21,6 +21,7 @@
 
 package com.nextcloud.ui.composeFragment
 
+import android.annotation.SuppressLint
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -32,12 +33,10 @@ import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.platform.ViewCompositionStrategy
-import androidx.fragment.app.Fragment
 import com.google.android.material.floatingactionbutton.FloatingActionButton
 import com.nextcloud.client.assistant.AssistantScreen
 import com.nextcloud.client.assistant.AssistantViewModel
 import com.nextcloud.common.NextcloudClient
-import com.nextcloud.common.User
 import com.nextcloud.utils.extensions.getSerializableArgument
 import com.owncloud.android.R
 import com.owncloud.android.databinding.FragmentComposeViewBinding
@@ -53,7 +52,7 @@ class ComposeFragment : FileFragment() {
     private var _binding: FragmentComposeViewBinding? = null
 
     private val binding get() = _binding!!
-    private var destination: ComposeDestinations? = null
+    private var destination: ComposeDestination? = null
 
     companion object {
         const val destinationKey = "destinationKey"
@@ -65,7 +64,7 @@ class ComposeFragment : FileFragment() {
         savedInstanceState: Bundle?
     ): View {
         _binding = FragmentComposeViewBinding.inflate(inflater, container, false)
-        destination = arguments.getSerializableArgument(destinationKey, ComposeDestinations::class.java)
+        destination = arguments.getSerializableArgument(destinationKey, ComposeDestination::class.java)
 
         binding.composeView.apply {
             setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
@@ -78,8 +77,9 @@ class ComposeFragment : FileFragment() {
         return binding.root
     }
 
+    @SuppressLint("UnusedContentLambdaTargetStateParameter")
     @Composable
-    private fun Content(destination: ComposeDestinations?) {
+    private fun Content(destination: ComposeDestination?) {
         val floatingActionButton: FloatingActionButton = requireActivity().findViewById(R.id.fab_main)
         var nextcloudClient by remember { mutableStateOf<NextcloudClient?>(null) }
 
@@ -87,7 +87,7 @@ class ComposeFragment : FileFragment() {
             nextcloudClient = getNextcloudClient()
         }
 
-        return if (destination == ComposeDestinations.AssistantScreen && nextcloudClient != null) {
+        return if (destination == ComposeDestination.AssistantScreen && nextcloudClient != null) {
             AssistantScreen(
                 viewModel = AssistantViewModel(
                     client = nextcloudClient!!

+ 17 - 13
app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -74,7 +74,7 @@ import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.common.NextcloudClient;
 import com.nextcloud.java.util.Optional;
 import com.nextcloud.ui.ChooseAccountDialogFragment;
-import com.nextcloud.ui.composeFragment.ComposeDestinations;
+import com.nextcloud.ui.composeFragment.ComposeDestination;
 import com.nextcloud.ui.composeFragment.ComposeFragment;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
@@ -545,18 +545,7 @@ public abstract class DrawerActivity extends ToolbarActivity
             intent.putExtra(FileDisplayActivity.DRAWER_MENU_ID, menuItem.getItemId());
             startActivity(intent);
         } else if (itemId == R.id.nav_assistant) {
-            // FIXME Back navigation is broken, create general function to switch to Jetpack Compose
-
-            showSortListGroup(false);
-            ComposeFragment composeFragment = new ComposeFragment();
-            Bundle bundle = new Bundle();
-            bundle.putSerializable(ComposeFragment.destinationKey, ComposeDestinations.AssistantScreen);
-            composeFragment.setArguments(bundle);
-
-            getSupportFragmentManager()
-                .beginTransaction()
-                .replace(R.id.left_fragment_container, composeFragment)
-                .commit();
+            navigateComposeView(ComposeDestination.AssistantScreen, false, true);
         } else {
             if (menuItem.getItemId() >= MENU_ITEM_EXTERNAL_LINK &&
                 menuItem.getItemId() <= MENU_ITEM_EXTERNAL_LINK + 100) {
@@ -568,6 +557,21 @@ public abstract class DrawerActivity extends ToolbarActivity
         }
     }
 
+    private void navigateComposeView(ComposeDestination destination, boolean showSortListGroup, boolean hideSearchText) {
+        showSortListGroup(showSortListGroup);
+        hideSearchText(hideSearchText);
+
+        ComposeFragment composeFragment = new ComposeFragment();
+        Bundle bundle = new Bundle();
+        bundle.putSerializable(ComposeFragment.destinationKey, destination);
+        composeFragment.setArguments(bundle);
+
+        getSupportFragmentManager()
+            .beginTransaction()
+            .replace(R.id.left_fragment_container, composeFragment)
+            .commit();
+    }
+
     private void startActivity(Class<? extends Activity> activity) {
         startActivity(new Intent(getApplicationContext(), activity));
     }

+ 8 - 0
app/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java

@@ -155,6 +155,14 @@ public abstract class ToolbarActivity extends BaseActivity implements Injectable
         mSearchText.setText(getString(R.string.appbar_search_in, title));
     }
 
+    public void hideSearchText(boolean hide) {
+        if (hide) {
+            mSearchText.setVisibility(View.GONE);
+        } else {
+            mSearchText.setVisibility(View.VISIBLE);
+        }
+    }
+
     @SuppressLint("PrivateResource")
     private void showHomeSearchToolbar(boolean isShow) {
         viewThemeUtils.material.themeToolbar(mToolbar);