From 6687ce099d0716d8a44dcae9dc2ef8a38dac7153 Mon Sep 17 00:00:00 2001 From: clfreville2 Date: Fri, 31 Mar 2023 14:55:36 +0200 Subject: [PATCH] Refactor to have only one activity --- .../iut/clfreville2/teaiswarm/MainActivity.kt | 3 +- .../teaiswarm/RepositoryDetailActivity.kt | 57 ---------------- .../fragment/RepositoryDetailsFragment.kt | 66 +++++++++++++++++++ ...tory_detail.xml => repository_details.xml} | 6 ++ app/src/main/res/navigation/nav_graph.xml | 4 ++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 78 insertions(+), 59 deletions(-) delete mode 100644 app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/RepositoryDetailActivity.kt create mode 100644 app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/RepositoryDetailsFragment.kt rename app/src/main/res/layout/{activity_repository_detail.xml => repository_details.xml} (84%) diff --git a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/MainActivity.kt b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/MainActivity.kt index 7f36ef4..566b78c 100644 --- a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/MainActivity.kt +++ b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/MainActivity.kt @@ -26,7 +26,6 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) preferences.contains(USERNAME) || return - setContentView(R.layout.activity_main) val nav = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment nav.navController.navigate(R.id.repository_list_fragment) } @@ -38,7 +37,7 @@ class MainActivity : AppCompatActivity() { REPOSITORY_NAME to repository.name ) val nav = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment - nav.navController.navigate(R.id.activity_list_fragment, bundle) + nav.navController.navigate(R.id.repository_details_fragment, bundle) } class RepositoryListFragmentFactory( diff --git a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/RepositoryDetailActivity.kt b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/RepositoryDetailActivity.kt deleted file mode 100644 index 4d622e5..0000000 --- a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/RepositoryDetailActivity.kt +++ /dev/null @@ -1,57 +0,0 @@ -package fr.uca.iut.clfreville2.teaiswarm - -import android.content.Intent -import android.os.Bundle -import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.RecyclerView -import fr.uca.iut.clfreville2.teaiswarm.model.RepositoryIdentifier -import fr.uca.iut.clfreville2.teaiswarm.model.VersionedFile -import fr.uca.iut.clfreville2.teaiswarm.network.GiteaService -import kotlinx.coroutines.launch - -const val FILE_PATH = "file_path" - -class RepositoryDetailActivity : AppCompatActivity() { - - private val service = GiteaService() - private lateinit var repositoryName: TextView - private lateinit var versionedFiles: RecyclerView - - private lateinit var currentRepositoryOwner: String - private lateinit var currentRepositoryName: String - private var currentFilePath: String? = null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_repository_detail) - - repositoryName = findViewById(R.id.repository_detail_name) - - val bundle: Bundle? = intent.extras - if (bundle != null) { - currentRepositoryOwner = bundle.getString(REPOSITORY_OWNER)!! - currentRepositoryName = bundle.getString(REPOSITORY_NAME)!! - currentFilePath = bundle.getString(FILE_PATH) - } - - repositoryName.text = currentRepositoryName - - versionedFiles = findViewById(R.id.versioned_files_view) - lifecycleScope.launch { - val repos = service.listFileContents(RepositoryIdentifier(currentRepositoryOwner, currentRepositoryName), currentFilePath ?: "") - versionedFiles.adapter = FileListAdapter(repos) { - file -> adapterOnClick(file) - } - } - } - - private fun adapterOnClick(file: VersionedFile) { - val intent = Intent(this, RepositoryDetailActivity()::class.java) - intent.putExtra(REPOSITORY_OWNER, currentRepositoryOwner) - intent.putExtra(REPOSITORY_NAME, currentRepositoryName) - intent.putExtra(FILE_PATH, (currentFilePath ?: "") + file.name) - startActivity(intent) - } -} diff --git a/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/RepositoryDetailsFragment.kt b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/RepositoryDetailsFragment.kt new file mode 100644 index 0000000..ff1b5f4 --- /dev/null +++ b/app/src/main/java/fr/uca/iut/clfreville2/teaiswarm/fragment/RepositoryDetailsFragment.kt @@ -0,0 +1,66 @@ +package fr.uca.iut.clfreville2.teaiswarm.fragment + +import android.os.Bundle +import android.view.View +import android.widget.Button +import android.widget.TextView +import androidx.core.os.bundleOf +import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope +import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.RecyclerView +import fr.uca.iut.clfreville2.teaiswarm.* +import fr.uca.iut.clfreville2.teaiswarm.model.RepositoryIdentifier +import fr.uca.iut.clfreville2.teaiswarm.model.VersionedFile +import fr.uca.iut.clfreville2.teaiswarm.network.GiteaService +import kotlinx.coroutines.launch + +const val FILE_PATH = "file_path" + +class RepositoryDetailsFragment : Fragment(R.layout.repository_details) { + + private val service = GiteaService() + private lateinit var repositoryName: TextView + private lateinit var repositoryDescription: TextView + private lateinit var activity: Button + private lateinit var versionedFiles: RecyclerView + + private lateinit var currentRepositoryOwner: String + private lateinit var currentRepositoryName: String + private var currentFilePath: String? = null + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + repositoryName = view.findViewById(R.id.repository_detail_name) + repositoryDescription = view.findViewById(R.id.repository_detail_description) + activity = view.findViewById(R.id.repository_detail_activity) + + val bundle = requireArguments() + currentRepositoryOwner = bundle.getString(REPOSITORY_OWNER)!! + currentRepositoryName = bundle.getString(REPOSITORY_NAME)!! + currentFilePath = bundle.getString(FILE_PATH) + + repositoryName.text = currentRepositoryName + + versionedFiles = view.findViewById(R.id.versioned_files_view) + lifecycleScope.launch { + val repos = service.listFileContents(RepositoryIdentifier(currentRepositoryOwner, currentRepositoryName), currentFilePath ?: "") + versionedFiles.adapter = FileListAdapter(repos) { + file -> adapterOnClick(file) + } + } + + activity.setOnClickListener { + findNavController().navigate(R.id.activity_list_fragment, bundle) + } + } + + private fun adapterOnClick(file: VersionedFile) { + val bundle = bundleOf( + REPOSITORY_OWNER to currentRepositoryOwner, + REPOSITORY_NAME to currentRepositoryName, + FILE_PATH to (currentFilePath ?: "") + file.name + ) + findNavController().navigate(R.id.repository_details_fragment, bundle) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_repository_detail.xml b/app/src/main/res/layout/repository_details.xml similarity index 84% rename from app/src/main/res/layout/activity_repository_detail.xml rename to app/src/main/res/layout/repository_details.xml index 3bcbadf..9fcfdeb 100644 --- a/app/src/main/res/layout/activity_repository_detail.xml +++ b/app/src/main/res/layout/repository_details.xml @@ -21,6 +21,12 @@ android:text="@string/repository_description" android:padding="16dp" /> +