Refactor to have only one activity

main
Clément FRÉVILLE 2 years ago
parent 43feb90979
commit 6687ce099d

@ -26,7 +26,6 @@ class MainActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)
preferences.contains(USERNAME) || return preferences.contains(USERNAME) || return
setContentView(R.layout.activity_main)
val nav = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment val nav = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
nav.navController.navigate(R.id.repository_list_fragment) nav.navController.navigate(R.id.repository_list_fragment)
} }
@ -38,7 +37,7 @@ class MainActivity : AppCompatActivity() {
REPOSITORY_NAME to repository.name REPOSITORY_NAME to repository.name
) )
val nav = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment 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( class RepositoryListFragmentFactory(

@ -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)
}
}

@ -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)
}
}

@ -21,6 +21,12 @@
android:text="@string/repository_description" android:text="@string/repository_description"
android:padding="16dp" /> android:padding="16dp" />
<Button
android:id="@+id/repository_detail_activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/activity" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/versioned_files_view" android:id="@+id/versioned_files_view"
android:layout_width="match_parent" android:layout_width="match_parent"

@ -24,4 +24,8 @@
android:id="@+id/preferences_fragment" android:id="@+id/preferences_fragment"
android:name="fr.uca.iut.clfreville2.teaiswarm.fragment.PreferencesFragment" android:name="fr.uca.iut.clfreville2.teaiswarm.fragment.PreferencesFragment"
android:label="PreferencesFragment" /> android:label="PreferencesFragment" />
<fragment
android:id="@+id/repository_details_fragment"
android:name="fr.uca.iut.clfreville2.teaiswarm.fragment.RepositoryDetailsFragment"
android:label="RepositoryDetailsFragment" />
</navigation> </navigation>

@ -13,4 +13,5 @@
<string name="unknown">Unknown</string> <string name="unknown">Unknown</string>
<string name="username">Username</string> <string name="username">Username</string>
<string name="configure">Configure</string> <string name="configure">Configure</string>
<string name="activity">Activity</string>
</resources> </resources>
Loading…
Cancel
Save