diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7f5a082..6b506f3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -26,12 +26,7 @@
-
-
+ android:name=".repodetails.RepoDetailsActivity_" />
> listIssues(@Path("owner") String owner, @Path("repoName") String repoName);
+
+ @GET("/repos/{owner}/{repoName}/contributors")
+ Observable> listContributors(@Path("owner") String owner, @Path("repoName") String repoName);
+
+ @GET("/repos/{owner}/{repoName}/commits?per_page=10")
+ Observable> listCommits(@Path("owner") String owner, @Path("repoName") String repoName);
+
+ @GET("/repos/{owner}/{repoName}/branches")
+ Observable> listBranches(@Path("owner") String owner, @Path("repoName") String repoName);
}
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListView.kt
deleted file mode 100644
index 6ddda1a..0000000
--- a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListView.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package br.com.luisfernandez.github.client.issuelist
-
-import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
-import br.com.luisfernandez.github.client.mvp.LoadContentView
-import br.com.luisfernandez.github.client.pojo.IssueResponse
-
-
-/**
- * Created by luisfernandez on 11/05/18.
- */
-interface IssueListView : LoadContentView, GitHubErrorBody>
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/koin/ModelModule.kt b/app/src/main/java/br/com/luisfernandez/github/client/koin/ModelModule.kt
index 001a183..ab087c9 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/koin/ModelModule.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/koin/ModelModule.kt
@@ -1,9 +1,15 @@
package br.com.luisfernandez.github.client.koin
-import br.com.luisfernandez.github.client.issuelist.IssueListModel
-import br.com.luisfernandez.github.client.issuelist.IssueListModelImpl
-import br.com.luisfernandez.github.client.pullrequest.PullRequestModel
-import br.com.luisfernandez.github.client.pullrequest.PullRequestModelImpl
+import br.com.luisfernandez.github.client.repodetails.brancheslist.BranchesListModelImpl
+import br.com.luisfernandez.github.client.repodetails.brancheslist.BranchesListModel
+import br.com.luisfernandez.github.client.repodetails.commitslist.CommitsListModel
+import br.com.luisfernandez.github.client.repodetails.commitslist.CommitsListModelImpl
+import br.com.luisfernandez.github.client.repodetails.contributorslist.ContributorsListModel
+import br.com.luisfernandez.github.client.repodetails.contributorslist.ContributorsListModelImpl
+import br.com.luisfernandez.github.client.repodetails.issuelist.IssueListModel
+import br.com.luisfernandez.github.client.repodetails.issuelist.IssueListModelImpl
+import br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestModel
+import br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestModelImpl
import br.com.luisfernandez.github.client.repolist.RepoListModel
import br.com.luisfernandez.github.client.repolist.RepoListModelImpl
import org.koin.dsl.module.module
@@ -27,4 +33,22 @@ val modelModule = module {
get()
)
}
+
+ single {
+ ContributorsListModelImpl(
+ get()
+ )
+ }
+
+ single {
+ CommitsListModelImpl(
+ get()
+ )
+ }
+
+ single {
+ BranchesListModelImpl(
+ get()
+ )
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/koin/PresenterModule.kt b/app/src/main/java/br/com/luisfernandez/github/client/koin/PresenterModule.kt
index 351922c..93d955b 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/koin/PresenterModule.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/koin/PresenterModule.kt
@@ -1,7 +1,5 @@
package br.com.luisfernandez.github.client.koin
-import br.com.luisfernandez.github.client.pullrequest.PullRequestPresenter
-import br.com.luisfernandez.github.client.pullrequest.PullRequestPresenterImpl
import br.com.luisfernandez.github.client.repolist.RepoListPresenter
import br.com.luisfernandez.github.client.repolist.RepoListPresenterImpl
import org.koin.dsl.module.module
@@ -10,8 +8,4 @@ val presenterModule = module {
single {
RepoListPresenterImpl(get())
}
-
- single {
- PullRequestPresenterImpl(get())
- }
}
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/koin/ViewModelModule.kt b/app/src/main/java/br/com/luisfernandez/github/client/koin/ViewModelModule.kt
index 0ecf3d6..bf2ac36 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/koin/ViewModelModule.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/koin/ViewModelModule.kt
@@ -2,8 +2,11 @@
package br.com.luisfernandez.github.client.koin
-import br.com.luisfernandez.github.client.issuelist.IssueListViewModel
-import br.com.luisfernandez.github.client.pullrequest.PullRequestViewModel
+import br.com.luisfernandez.github.client.repodetails.brancheslist.BranchesListViewModel
+import br.com.luisfernandez.github.client.repodetails.commitslist.CommitsListViewModel
+import br.com.luisfernandez.github.client.repodetails.contributorslist.ContributorsListViewModel
+import br.com.luisfernandez.github.client.repodetails.issuelist.IssueListViewModel
+import br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestViewModel
import br.com.luisfernandez.github.client.repolist.RepoListViewModel
import org.koin.android.viewmodel.ext.koin.viewModel
import org.koin.dsl.module.module
@@ -28,4 +31,22 @@ val viewModelModule = module {
)
}
+ viewModel {
+ ContributorsListViewModel(
+ get()
+ )
+ }
+
+ viewModel {
+ CommitsListViewModel(
+ get()
+ )
+ }
+
+ viewModel {
+ BranchesListViewModel(
+ get()
+ )
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pojo/BranchResponse.kt b/app/src/main/java/br/com/luisfernandez/github/client/pojo/BranchResponse.kt
new file mode 100644
index 0000000..ced6df8
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/pojo/BranchResponse.kt
@@ -0,0 +1,7 @@
+package br.com.luisfernandez.github.client.pojo
+
+import com.google.gson.annotations.SerializedName
+
+data class BranchResponse(
+ @SerializedName("name") val name: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pojo/ContributorResponse.kt b/app/src/main/java/br/com/luisfernandez/github/client/pojo/ContributorResponse.kt
new file mode 100644
index 0000000..86d937e
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/pojo/ContributorResponse.kt
@@ -0,0 +1,9 @@
+package br.com.luisfernandez.github.client.pojo
+
+import com.google.gson.annotations.SerializedName
+
+data class ContributorResponse(
+ @SerializedName("login") val login: String,
+ @SerializedName("avatar_url") val avatar_url: String,
+ @SerializedName("contributions") val contributions: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/Commit.kt b/app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/Commit.kt
new file mode 100644
index 0000000..54d8e0c
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/Commit.kt
@@ -0,0 +1,8 @@
+package br.com.luisfernandez.github.client.pojo.commit
+
+import com.google.gson.annotations.SerializedName
+
+data class Commit(
+ @SerializedName("committer") val committer: Committer,
+ @SerializedName("message") val message: String
+)
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/CommitResponse.kt b/app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/CommitResponse.kt
new file mode 100644
index 0000000..c92ff15
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/CommitResponse.kt
@@ -0,0 +1,9 @@
+package br.com.luisfernandez.github.client.pojo.commit
+
+import br.com.luisfernandez.github.client.pojo.User
+import com.google.gson.annotations.SerializedName
+
+data class CommitResponse(
+ @SerializedName("author") val author: User,
+ @SerializedName("commit") val commit: Commit
+)
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/Committer.kt b/app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/Committer.kt
new file mode 100644
index 0000000..184ceac
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/Committer.kt
@@ -0,0 +1,8 @@
+package br.com.luisfernandez.github.client.pojo.commit
+
+import com.google.gson.annotations.SerializedName
+import java.util.Date
+
+data class Committer(
+ @SerializedName("date") val date: Date
+)
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListView.kt
deleted file mode 100644
index 04b620b..0000000
--- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListView.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package br.com.luisfernandez.github.client.pullrequest
-
-import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
-import br.com.luisfernandez.github.client.mvp.LoadContentView
-import br.com.luisfernandez.github.client.pojo.PullRequestResponse
-
-
-/**
- * Created by luisfernandez on 11/05/18.
- */
-interface PullRequestListView : LoadContentView, GitHubErrorBody>
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestPresenter.kt b/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestPresenter.kt
deleted file mode 100644
index 2c48931..0000000
--- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestPresenter.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package br.com.luisfernandez.github.client.pullrequest
-
-/**
- * Created by luisfernandez on 12/05/18.
- */
-interface PullRequestPresenter {
- fun loadPullRequestList(owner: String, repoName: String)
- fun inject(pullRequestView: PullRequestListView)
-}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestPresenterImpl.kt b/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestPresenterImpl.kt
deleted file mode 100644
index 4919f77..0000000
--- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestPresenterImpl.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-package br.com.luisfernandez.github.client.pullrequest
-
-import br.com.luisfernandez.github.client.http.CallbackWrapper
-import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
-import br.com.luisfernandez.github.client.http.model.ServerError
-import br.com.luisfernandez.github.client.pojo.PullRequestResponse
-import io.reactivex.android.schedulers.AndroidSchedulers
-import io.reactivex.schedulers.Schedulers
-
-class PullRequestPresenterImpl (
- private val pullRequestModel: PullRequestModel
-) : PullRequestPresenter
-{
-
- private lateinit var view: PullRequestListView
-
- override fun inject(view: PullRequestListView) {
- this.view = view
- }
-
- override fun loadPullRequestList(owner: String, repoName: String) {
- pullRequestModel
- .loadPullRequestList(owner, repoName)
- .subscribeOn(Schedulers.newThread())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeWith(object: CallbackWrapper, GitHubErrorBody>(GitHubErrorBody::class.java) {
- override fun onError(error: ServerError) {
- view.handleError(error)
- }
-
- override fun onSuccess(pullRequestList: List) {
- view.showContent(pullRequestList)
- }
- })
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsActivity.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsActivity.kt
new file mode 100644
index 0000000..61fcfbe
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsActivity.kt
@@ -0,0 +1,45 @@
+package br.com.luisfernandez.github.client.repodetails
+
+import android.annotation.SuppressLint
+import android.support.v7.app.AppCompatActivity
+import br.com.luisfernandez.github.client.R
+import kotlinx.android.synthetic.main.activity_repo_details.*
+import org.androidannotations.annotations.AfterViews
+import org.androidannotations.annotations.EActivity
+import org.androidannotations.annotations.Extra
+
+@SuppressLint("Registered")
+@EActivity(R.layout.activity_repo_details)
+class RepoDetailsActivity : AppCompatActivity() {
+
+ @Extra
+ lateinit var owner: String
+
+ @Extra
+ lateinit var repoName: String
+
+ @AfterViews
+ fun afterViews() {
+ this.configToolbar()
+
+ val fragmentAdapter = RepoDetailsPagerAdapter(this, supportFragmentManager, owner, repoName)
+ viewPagerRepoDetail.adapter = fragmentAdapter
+
+ tabLayoutRepoDetail.setupWithViewPager(viewPagerRepoDetail)
+ }
+
+ private fun configToolbar() {
+ setSupportActionBar(toolbar)
+ supportActionBar?.let {
+ title = repoName
+ supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ supportActionBar?.setDisplayShowHomeEnabled(true)
+ supportActionBar?.setDisplayShowTitleEnabled(true)
+ }
+ }
+
+ override fun onSupportNavigateUp(): Boolean {
+ onBackPressed()
+ return true
+ }
+}
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsPagerAdapter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsPagerAdapter.kt
new file mode 100644
index 0000000..8dcfc14
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsPagerAdapter.kt
@@ -0,0 +1,62 @@
+package br.com.luisfernandez.github.client.repodetails
+
+import android.content.Context
+import android.os.Bundle
+import android.support.v4.app.Fragment
+import android.support.v4.app.FragmentManager
+import android.support.v4.app.FragmentPagerAdapter
+import br.com.luisfernandez.github.client.R
+import br.com.luisfernandez.github.client.repodetails.brancheslist.BranchesListFragment
+import br.com.luisfernandez.github.client.repodetails.commitslist.CommitsListFragment
+import br.com.luisfernandez.github.client.repodetails.contributorslist.ContributorsListFragment
+import br.com.luisfernandez.github.client.repodetails.issuelist.IssuesListFragment
+import br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListFragment
+
+class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, owner: String, repoName: String):
+ FragmentPagerAdapter(fm) {
+
+ companion object {
+ const val OWNER = "OWNER"
+ const val REPONAME = "REPONAME"
+ }
+
+ val owner = owner
+ val repoName = repoName
+
+ override fun getCount(): Int {
+ return 5
+ }
+
+ override fun getItem(position: Int): Fragment {
+ val bundle = Bundle()
+ bundle.putString(OWNER, owner)
+ bundle.putString(REPONAME, repoName)
+
+ var fragment = when(position) {
+ 0 -> PullRequestListFragment()
+ 1 -> IssuesListFragment()
+ 2 -> CommitsListFragment()
+ 3 -> ContributorsListFragment()
+ 4 -> BranchesListFragment()
+
+ else -> PullRequestListFragment()
+ }
+
+ fragment.arguments = bundle
+
+ return fragment
+ }
+
+ override fun getPageTitle(position: Int): CharSequence? {
+ return when(position){
+ 0 -> context.getString(R.string.titlePullRequestsTab)
+ 1-> context.getString(R.string.titleIssuesTab)
+ 2 -> context.getString(R.string.titleCommitsTab)
+ 3 -> context.getString(R.string.titleContributorsTab)
+ 4 -> context.getString(R.string.titleBranchesTab)
+
+ else -> context.getString(R.string.titlePullRequestsTab)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListAdapter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListAdapter.kt
new file mode 100644
index 0000000..ee734d8
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListAdapter.kt
@@ -0,0 +1,38 @@
+package br.com.luisfernandez.github.client.repodetails.brancheslist
+
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import br.com.luisfernandez.github.client.R
+import br.com.luisfernandez.github.client.pojo.BranchResponse
+import kotlinx.android.synthetic.main.item_branches_list.view.*
+import java.util.*
+
+/**
+ * Created by luisfernandez on 12/05/18.
+ */
+class BranchesListAdapter(
+ private val branchesList: ArrayList = ArrayList()
+) : RecyclerView.Adapter()
+{
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BranchViewHolder {
+ val view = LayoutInflater.from(parent.context).inflate(R.layout.item_branches_list, parent, false)
+ return BranchViewHolder(view)
+ }
+
+ override fun getItemCount(): Int {
+ return branchesList.size
+ }
+
+ override fun onBindViewHolder(holder: BranchViewHolder, position: Int) {
+ val item = branchesList[position]
+
+ holder.textBranchName.text = item.name
+
+ }
+
+ class BranchViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ var textBranchName = itemView.textBranchName!!
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListFragment.kt
new file mode 100644
index 0000000..36717b1
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListFragment.kt
@@ -0,0 +1,121 @@
+package br.com.luisfernandez.github.client.repodetails.brancheslist
+
+import android.arch.lifecycle.Observer
+import android.os.Bundle
+import android.support.v4.app.Fragment
+import android.support.v7.widget.LinearLayoutManager
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import br.com.luisfernandez.github.client.R
+import br.com.luisfernandez.github.client.extensions.setGone
+import br.com.luisfernandez.github.client.extensions.setVisible
+import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
+import br.com.luisfernandez.github.client.http.model.ServerError
+import br.com.luisfernandez.github.client.pojo.BranchResponse
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.OWNER
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.REPONAME
+import kotlinx.android.synthetic.main.fragment_branches_list.*
+import kotlinx.android.synthetic.main.view_state_empty.*
+import kotlinx.android.synthetic.main.view_state_error.*
+import kotlinx.android.synthetic.main.view_state_loading.*
+import org.koin.android.viewmodel.ext.android.viewModel
+
+class BranchesListFragment : Fragment() {
+
+ lateinit var owner: String
+ lateinit var repoName: String
+ val viewModel by viewModel()
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+
+ val rootView = inflater.inflate(R.layout.fragment_branches_list, container, false)
+
+ val recyclerView = rootView.findViewById(R.id.recyclerView) as RecyclerView
+
+ recyclerView.layoutManager = LinearLayoutManager(rootView.context)
+ recyclerView.setHasFixedSize(true)
+
+ setupArguments()
+
+ setupViewModel()
+
+ viewModel.loadBranchesList(owner, repoName)
+
+ return rootView
+
+ }
+
+ private fun setupArguments() {
+ owner = arguments!!.getString(OWNER)
+ repoName = arguments!!.getString(REPONAME)
+ }
+
+ private fun setupViewModel() {
+ viewModel.branchesList.observe(this, Observer {
+ branchesList ->
+ showContent(branchesList!!)
+ })
+
+ viewModel.serverError.observe(this, Observer {
+ serverError ->
+ handleError(serverError!!)
+ })
+ }
+
+ private fun handleError(serverError: ServerError) {
+ this.showErrorState()
+
+ if (serverError.errorBody != null) {
+ textErrorMessage.text = serverError.errorBody!!.message
+ } else {
+ textErrorMessage.text = serverError.errorMessage
+ }
+
+ buttonRetry.setOnClickListener { _ ->
+ showLoading()
+ viewModel.loadBranchesList(owner, repoName)
+ }
+ }
+
+ private fun showErrorState() {
+ layoutProgress.setGone()
+ layoutEmpty.setGone()
+ layoutError.setVisible()
+ recyclerView.setGone()
+ }
+
+ private fun showLoading() {
+ layoutProgress.setVisible()
+ layoutEmpty.setGone()
+ layoutError.setGone()
+ recyclerView.setGone()
+ }
+
+ private fun showEmpty() {
+ layoutProgress.setGone()
+ layoutEmpty.setVisible()
+ layoutError.setGone()
+ recyclerView.setGone()
+ }
+
+ private fun showContent(content: List) {
+ if (content.isEmpty()) {
+ showEmpty()
+ } else {
+ layoutProgress.setGone()
+ layoutEmpty.setGone()
+ layoutError.setGone()
+ recyclerView.setVisible()
+
+ recyclerView.adapter = this.getBranchesListAdapter(content)
+ }
+ }
+
+ private fun getBranchesListAdapter(content: List): BranchesListAdapter {
+ return BranchesListAdapter(
+ content as ArrayList
+ )
+ }
+}
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListModel.kt
new file mode 100644
index 0000000..b7a611b
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListModel.kt
@@ -0,0 +1,11 @@
+package br.com.luisfernandez.github.client.repodetails.brancheslist
+
+import br.com.luisfernandez.github.client.pojo.BranchResponse
+import io.reactivex.Observable
+
+/**
+ * Created by luisfernandez on 12/05/18.
+ */
+interface BranchesListModel {
+ fun loadBranchesList(owner: String, repoName: String): Observable>
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListModelImpl.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListModelImpl.kt
new file mode 100644
index 0000000..e508802
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListModelImpl.kt
@@ -0,0 +1,18 @@
+package br.com.luisfernandez.github.client.repodetails.brancheslist
+
+import br.com.luisfernandez.github.client.http.GitHubService
+import br.com.luisfernandez.github.client.pojo.BranchResponse
+import io.reactivex.Observable
+
+class BranchesListModelImpl (
+ private val gitHubService: GitHubService
+) : BranchesListModel
+{
+ override fun loadBranchesList(owner: String, repoName: String): Observable> {
+ return gitHubService
+ .listBranches(owner, repoName)
+ .map { branchesList ->
+ branchesList
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListViewModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListViewModel.kt
new file mode 100644
index 0000000..8b2c6cb
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListViewModel.kt
@@ -0,0 +1,35 @@
+package br.com.luisfernandez.github.client.repodetails.brancheslist
+
+import android.arch.lifecycle.MutableLiveData
+import android.arch.lifecycle.ViewModel
+import br.com.luisfernandez.github.client.http.CallbackWrapper
+import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
+import br.com.luisfernandez.github.client.http.model.ServerError
+import br.com.luisfernandez.github.client.pojo.BranchResponse
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.schedulers.Schedulers
+
+class BranchesListViewModel (
+ private val branchesListModel: BranchesListModel
+) : ViewModel()
+{
+
+ val branchesList = MutableLiveData>()
+ val serverError = MutableLiveData>()
+
+ fun loadBranchesList(owner: String, repoName: String) {
+ branchesListModel
+ .loadBranchesList(owner, repoName)
+ .subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribeWith(object: CallbackWrapper, GitHubErrorBody>(GitHubErrorBody::class.java) {
+ override fun onError(error: ServerError) {
+ serverError.postValue(error)
+ }
+
+ override fun onSuccess(listBranches: List) {
+ branchesList.postValue(listBranches)
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListAdapter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListAdapter.kt
new file mode 100644
index 0000000..0dc4a82
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListAdapter.kt
@@ -0,0 +1,45 @@
+package br.com.luisfernandez.github.client.repodetails.commitslist
+
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import br.com.luisfernandez.github.client.R
+import br.com.luisfernandez.github.client.misc.ImageLoader
+import br.com.luisfernandez.github.client.pojo.commit.CommitResponse
+import kotlinx.android.synthetic.main.item_commits_list.view.*
+import java.text.SimpleDateFormat
+import java.util.*
+
+/**
+ * Created by luisfernandez on 12/05/18.
+ */
+class CommitsListAdapter(
+ private val commitsList: ArrayList = ArrayList()
+) : RecyclerView.Adapter() {
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CommitViewHolder {
+ val view = LayoutInflater.from(parent.context).inflate(R.layout.item_commits_list, parent, false)
+ return CommitViewHolder(view)
+ }
+
+ override fun getItemCount(): Int {
+ return commitsList.size
+ }
+
+ override fun onBindViewHolder(holder: CommitViewHolder, position: Int) {
+ val item = commitsList[position]
+
+ holder.textCommiterName.text = item.author.login
+ holder.textCommitMessage.text = item.commit.message
+ holder.textDate.text = SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.getDefault()).format(item.commit.committer.date)
+
+ ImageLoader.loadImage(item.author.avatarUrl, holder.imageCommiter)
+ }
+
+ class CommitViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ var imageCommiter = itemView.imageCommitter!!
+ var textCommiterName = itemView.textCommitterName!!
+ var textCommitMessage = itemView.textCommitMessage!!
+ var textDate = itemView.textDate!!
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListFragment.kt
new file mode 100644
index 0000000..2ea3720
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListFragment.kt
@@ -0,0 +1,121 @@
+package br.com.luisfernandez.github.client.repodetails.commitslist
+
+import android.arch.lifecycle.Observer
+import android.os.Bundle
+import android.support.v4.app.Fragment
+import android.support.v7.widget.LinearLayoutManager
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import br.com.luisfernandez.github.client.R
+import br.com.luisfernandez.github.client.extensions.setGone
+import br.com.luisfernandez.github.client.extensions.setVisible
+import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
+import br.com.luisfernandez.github.client.http.model.ServerError
+import br.com.luisfernandez.github.client.pojo.commit.CommitResponse
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.OWNER
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.REPONAME
+import kotlinx.android.synthetic.main.fragment_commits_list.*
+import kotlinx.android.synthetic.main.view_state_empty.*
+import kotlinx.android.synthetic.main.view_state_error.*
+import kotlinx.android.synthetic.main.view_state_loading.*
+import org.koin.android.viewmodel.ext.android.viewModel
+
+class CommitsListFragment : Fragment() {
+
+ lateinit var owner: String
+ lateinit var repoName: String
+ val viewModel by viewModel()
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+
+ val rootView = inflater.inflate(R.layout.fragment_commits_list, container, false)
+
+ val recyclerView = rootView.findViewById(R.id.recyclerView) as RecyclerView
+
+ recyclerView.layoutManager = LinearLayoutManager(rootView.context)
+ recyclerView.setHasFixedSize(true)
+
+ setupArguments()
+
+ setupViewModel()
+
+ viewModel.loadCommitsList(owner, repoName)
+
+ return rootView
+
+ }
+
+ private fun setupArguments() {
+ owner = arguments!!.getString(OWNER)
+ repoName = arguments!!.getString(REPONAME)
+ }
+
+ private fun setupViewModel() {
+ viewModel.commitsList.observe(this, Observer {
+ commitsList ->
+ showContent(commitsList!!)
+ })
+
+ viewModel.serverError.observe(this, Observer {
+ serverError ->
+ handleError(serverError!!)
+ })
+ }
+
+ private fun handleError(serverError: ServerError) {
+ this.showErrorState()
+
+ if (serverError.errorBody != null) {
+ textErrorMessage.text = serverError.errorBody!!.message
+ } else {
+ textErrorMessage.text = serverError.errorMessage
+ }
+
+ buttonRetry.setOnClickListener { _ ->
+ showLoading()
+ viewModel.loadCommitsList(owner, repoName)
+ }
+ }
+
+ private fun showErrorState() {
+ layoutProgress.setGone()
+ layoutEmpty.setGone()
+ layoutError.setVisible()
+ recyclerView.setGone()
+ }
+
+ private fun showLoading() {
+ layoutProgress.setVisible()
+ layoutEmpty.setGone()
+ layoutError.setGone()
+ recyclerView.setGone()
+ }
+
+ private fun showEmpty() {
+ layoutProgress.setGone()
+ layoutEmpty.setVisible()
+ layoutError.setGone()
+ recyclerView.setGone()
+ }
+
+ private fun showContent(content: List) {
+ if (content.isEmpty()) {
+ showEmpty()
+ } else {
+ layoutProgress.setGone()
+ layoutEmpty.setGone()
+ layoutError.setGone()
+ recyclerView.setVisible()
+
+ recyclerView.adapter = this.getContributorListAdapter(content)
+ }
+ }
+
+ private fun getContributorListAdapter(content: List): CommitsListAdapter {
+ return CommitsListAdapter(
+ content as ArrayList
+ )
+ }
+}
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListModel.kt
new file mode 100644
index 0000000..7d9e98c
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListModel.kt
@@ -0,0 +1,11 @@
+package br.com.luisfernandez.github.client.repodetails.commitslist
+
+import br.com.luisfernandez.github.client.pojo.commit.CommitResponse
+import io.reactivex.Observable
+
+/**
+ * Created by luisfernandez on 12/05/18.
+ */
+interface CommitsListModel {
+ fun loadCommitsList(owner: String, repoName: String): Observable>
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListModelImpl.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListModelImpl.kt
new file mode 100644
index 0000000..dc77047
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListModelImpl.kt
@@ -0,0 +1,18 @@
+package br.com.luisfernandez.github.client.repodetails.commitslist
+
+import br.com.luisfernandez.github.client.http.GitHubService
+import br.com.luisfernandez.github.client.pojo.commit.CommitResponse
+import io.reactivex.Observable
+
+class CommitsListModelImpl (
+ private val gitHubService: GitHubService
+) : CommitsListModel
+{
+ override fun loadCommitsList(owner: String, repoName: String): Observable> {
+ return gitHubService
+ .listCommits(owner, repoName)
+ .map { commitsList ->
+ commitsList
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListViewModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListViewModel.kt
new file mode 100644
index 0000000..d2c01af
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListViewModel.kt
@@ -0,0 +1,35 @@
+package br.com.luisfernandez.github.client.repodetails.commitslist
+
+import android.arch.lifecycle.MutableLiveData
+import android.arch.lifecycle.ViewModel
+import br.com.luisfernandez.github.client.http.CallbackWrapper
+import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
+import br.com.luisfernandez.github.client.http.model.ServerError
+import br.com.luisfernandez.github.client.pojo.commit.CommitResponse
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.schedulers.Schedulers
+
+class CommitsListViewModel (
+ private val commitsListModel: CommitsListModel
+) : ViewModel()
+{
+
+ val commitsList = MutableLiveData>()
+ val serverError = MutableLiveData>()
+
+ fun loadCommitsList(owner: String, repoName: String) {
+ commitsListModel
+ .loadCommitsList(owner, repoName)
+ .subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribeWith(object: CallbackWrapper, GitHubErrorBody>(GitHubErrorBody::class.java) {
+ override fun onError(error: ServerError) {
+ serverError.postValue(error)
+ }
+
+ override fun onSuccess(listCommits: List) {
+ commitsList.postValue(listCommits)
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListAdapter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListAdapter.kt
new file mode 100644
index 0000000..ad481ef
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListAdapter.kt
@@ -0,0 +1,43 @@
+package br.com.luisfernandez.github.client.repodetails.contributorslist
+
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import br.com.luisfernandez.github.client.R
+import br.com.luisfernandez.github.client.misc.ImageLoader
+import br.com.luisfernandez.github.client.pojo.ContributorResponse
+import kotlinx.android.synthetic.main.item_contributors_list.view.*
+import java.util.*
+
+/**
+ * Created by luisfernandez on 12/05/18.
+ */
+class ContributorsListAdapter(
+ private val contributorsList: ArrayList = ArrayList()
+) : RecyclerView.Adapter()
+{
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ContributorViewHolder {
+ val view = LayoutInflater.from(parent.context).inflate(R.layout.item_contributors_list, parent, false)
+ return ContributorViewHolder(view)
+ }
+
+ override fun getItemCount(): Int {
+ return contributorsList.size
+ }
+
+ override fun onBindViewHolder(holder: ContributorViewHolder, position: Int) {
+ val item = contributorsList[position]
+
+ holder.textContributorName.text = item.login
+ holder.textContributions.text = item.contributions
+
+ ImageLoader.loadImage(item.avatar_url, holder.imageContributor)
+ }
+
+ class ContributorViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ var imageContributor = itemView.imageContributor!!
+ var textContributorName = itemView.textContributorName!!
+ var textContributions = itemView.textContributions!!
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListFragment.kt
new file mode 100644
index 0000000..ec6c905
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListFragment.kt
@@ -0,0 +1,121 @@
+package br.com.luisfernandez.github.client.repodetails.contributorslist
+
+import android.arch.lifecycle.Observer
+import android.os.Bundle
+import android.support.v4.app.Fragment
+import android.support.v7.widget.LinearLayoutManager
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import br.com.luisfernandez.github.client.R
+import br.com.luisfernandez.github.client.extensions.setGone
+import br.com.luisfernandez.github.client.extensions.setVisible
+import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
+import br.com.luisfernandez.github.client.http.model.ServerError
+import br.com.luisfernandez.github.client.pojo.ContributorResponse
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.OWNER
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.REPONAME
+import kotlinx.android.synthetic.main.fragment_contributors_list.*
+import kotlinx.android.synthetic.main.view_state_empty.*
+import kotlinx.android.synthetic.main.view_state_error.*
+import kotlinx.android.synthetic.main.view_state_loading.*
+import org.koin.android.viewmodel.ext.android.viewModel
+
+class ContributorsListFragment : Fragment() {
+
+ lateinit var owner: String
+ lateinit var repoName: String
+ val viewModel by viewModel()
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+
+ val rootView = inflater.inflate(R.layout.fragment_contributors_list, container, false)
+
+ val recyclerView = rootView.findViewById(R.id.recyclerView) as RecyclerView
+
+ recyclerView.layoutManager = LinearLayoutManager(rootView.context)
+ recyclerView.setHasFixedSize(true)
+
+ setupArguments()
+
+ setupViewModel()
+
+ viewModel.loadContributorsList(owner, repoName)
+
+ return rootView
+
+ }
+
+ private fun setupArguments() {
+ owner = arguments!!.getString(OWNER)
+ repoName = arguments!!.getString(REPONAME)
+ }
+
+ private fun setupViewModel() {
+ viewModel.contributorsList.observe(this, Observer {
+ issueList ->
+ showContent(issueList!!)
+ })
+
+ viewModel.serverError.observe(this, Observer {
+ serverError ->
+ handleError(serverError!!)
+ })
+ }
+
+ private fun handleError(serverError: ServerError) {
+ this.showErrorState()
+
+ if (serverError.errorBody != null) {
+ textErrorMessage.text = serverError.errorBody!!.message
+ } else {
+ textErrorMessage.text = serverError.errorMessage
+ }
+
+ buttonRetry.setOnClickListener { _ ->
+ showLoading()
+ viewModel.loadContributorsList(owner, repoName)
+ }
+ }
+
+ private fun showErrorState() {
+ layoutProgress.setGone()
+ layoutEmpty.setGone()
+ layoutError.setVisible()
+ recyclerView.setGone()
+ }
+
+ private fun showLoading() {
+ layoutProgress.setVisible()
+ layoutEmpty.setGone()
+ layoutError.setGone()
+ recyclerView.setGone()
+ }
+
+ private fun showEmpty() {
+ layoutProgress.setGone()
+ layoutEmpty.setVisible()
+ layoutError.setGone()
+ recyclerView.setGone()
+ }
+
+ private fun showContent(content: List) {
+ if (content.isEmpty()) {
+ showEmpty()
+ } else {
+ layoutProgress.setGone()
+ layoutEmpty.setGone()
+ layoutError.setGone()
+ recyclerView.setVisible()
+
+ recyclerView.adapter = this.getContributorListAdapter(content)
+ }
+ }
+
+ private fun getContributorListAdapter(content: List): ContributorsListAdapter {
+ return ContributorsListAdapter(
+ content as ArrayList
+ )
+ }
+}
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListModel.kt
new file mode 100644
index 0000000..b12323e
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListModel.kt
@@ -0,0 +1,11 @@
+package br.com.luisfernandez.github.client.repodetails.contributorslist
+
+import br.com.luisfernandez.github.client.pojo.ContributorResponse
+import io.reactivex.Observable
+
+/**
+ * Created by luisfernandez on 12/05/18.
+ */
+interface ContributorsListModel {
+ fun loadContributorsList(owner: String, repoName: String): Observable>
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListModelImpl.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListModelImpl.kt
new file mode 100644
index 0000000..75c01bf
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListModelImpl.kt
@@ -0,0 +1,18 @@
+package br.com.luisfernandez.github.client.repodetails.contributorslist
+
+import br.com.luisfernandez.github.client.http.GitHubService
+import br.com.luisfernandez.github.client.pojo.ContributorResponse
+import io.reactivex.Observable
+
+class ContributorsListModelImpl (
+ private val gitHubService: GitHubService
+) : ContributorsListModel
+{
+ override fun loadContributorsList(owner: String, repoName: String): Observable> {
+ return gitHubService
+ .listContributors(owner, repoName)
+ .map { contributorList ->
+ contributorList
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListViewModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListViewModel.kt
new file mode 100644
index 0000000..79a3fe5
--- /dev/null
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListViewModel.kt
@@ -0,0 +1,35 @@
+package br.com.luisfernandez.github.client.repodetails.contributorslist
+
+import android.arch.lifecycle.MutableLiveData
+import android.arch.lifecycle.ViewModel
+import br.com.luisfernandez.github.client.http.CallbackWrapper
+import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
+import br.com.luisfernandez.github.client.http.model.ServerError
+import br.com.luisfernandez.github.client.pojo.ContributorResponse
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.schedulers.Schedulers
+
+class ContributorsListViewModel (
+ private val contributorsListModel: ContributorsListModel
+) : ViewModel()
+{
+
+ val contributorsList = MutableLiveData>()
+ val serverError = MutableLiveData>()
+
+ fun loadContributorsList(owner: String, repoName: String) {
+ contributorsListModel
+ .loadContributorsList(owner, repoName)
+ .subscribeOn(Schedulers.newThread())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribeWith(object: CallbackWrapper, GitHubErrorBody>(GitHubErrorBody::class.java) {
+ override fun onError(error: ServerError) {
+ serverError.postValue(error)
+ }
+
+ override fun onSuccess(listContributors: List) {
+ contributorsList.postValue(listContributors)
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListAdapter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListAdapter.kt
similarity index 96%
rename from app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListAdapter.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListAdapter.kt
index 145f1d5..5a0e58c 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListAdapter.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListAdapter.kt
@@ -1,4 +1,4 @@
-package br.com.luisfernandez.github.client.issuelist
+package br.com.luisfernandez.github.client.repodetails.issuelist
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListModel.kt
similarity index 79%
rename from app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModel.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListModel.kt
index bf28b06..76ac5c5 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModel.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListModel.kt
@@ -1,4 +1,4 @@
-package br.com.luisfernandez.github.client.issuelist
+package br.com.luisfernandez.github.client.repodetails.issuelist
import br.com.luisfernandez.github.client.pojo.IssueResponse
import io.reactivex.Observable
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModelImpl.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListModelImpl.kt
similarity index 88%
rename from app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModelImpl.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListModelImpl.kt
index f47063d..48a3cf0 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModelImpl.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListModelImpl.kt
@@ -1,4 +1,4 @@
-package br.com.luisfernandez.github.client.issuelist
+package br.com.luisfernandez.github.client.repodetails.issuelist
import br.com.luisfernandez.github.client.http.GitHubService
import br.com.luisfernandez.github.client.pojo.IssueResponse
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListViewModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListViewModel.kt
similarity index 95%
rename from app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListViewModel.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListViewModel.kt
index 50147c5..2498ee6 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListViewModel.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListViewModel.kt
@@ -1,4 +1,4 @@
-package br.com.luisfernandez.github.client.issuelist
+package br.com.luisfernandez.github.client.repodetails.issuelist
import android.arch.lifecycle.MutableLiveData
import android.arch.lifecycle.ViewModel
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListActivity.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssuesListFragment.kt
similarity index 66%
rename from app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListActivity.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssuesListFragment.kt
index eab0573..65b79dd 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListActivity.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssuesListFragment.kt
@@ -1,48 +1,55 @@
-package br.com.luisfernandez.github.client.issuelist
+package br.com.luisfernandez.github.client.repodetails.issuelist
-import android.annotation.SuppressLint
import android.arch.lifecycle.Observer
-import android.support.v7.app.AppCompatActivity
+import android.os.Bundle
+import android.support.v4.app.Fragment
import android.support.v7.widget.LinearLayoutManager
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
import br.com.luisfernandez.github.client.R
import br.com.luisfernandez.github.client.extensions.setGone
import br.com.luisfernandez.github.client.extensions.setVisible
import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
import br.com.luisfernandez.github.client.http.model.ServerError
import br.com.luisfernandez.github.client.pojo.IssueResponse
-import kotlinx.android.synthetic.main.activity_list.*
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.OWNER
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.REPONAME
+import kotlinx.android.synthetic.main.fragment_issues_list.*
import kotlinx.android.synthetic.main.view_state_empty.*
import kotlinx.android.synthetic.main.view_state_error.*
import kotlinx.android.synthetic.main.view_state_loading.*
-import org.androidannotations.annotations.AfterViews
-import org.androidannotations.annotations.EActivity
-import org.androidannotations.annotations.Extra
import org.koin.android.viewmodel.ext.android.viewModel
-@SuppressLint("Registered")
-@EActivity(R.layout.activity_issues_list)
-class IssueListActivity : AppCompatActivity(), IssueListView {
+class IssuesListFragment : Fragment() {
- @Extra
lateinit var owner: String
-
- @Extra
lateinit var repoName: String
-
val viewModel by viewModel()
- @AfterViews
- fun afterViews() {
- this.configToolbar()
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
- val layoutManager = LinearLayoutManager(this)
+ val rootView = inflater.inflate(R.layout.fragment_issues_list, container, false)
- recyclerView.layoutManager = layoutManager
+ val recyclerView = rootView.findViewById(R.id.recyclerView) as RecyclerView
+
+ recyclerView.layoutManager = LinearLayoutManager(rootView.context)
recyclerView.setHasFixedSize(true)
+ setupArguments()
+
setupViewModel()
viewModel.loadIssueList(owner, repoName)
+
+ return rootView
+
+ }
+
+ private fun setupArguments() {
+ owner = arguments!!.getString(OWNER)
+ repoName = arguments!!.getString(REPONAME)
}
private fun setupViewModel() {
@@ -57,22 +64,7 @@ class IssueListActivity : AppCompatActivity(), IssueListView {
})
}
- private fun configToolbar() {
- setSupportActionBar(toolbar)
- supportActionBar?.let {
- title = repoName
- supportActionBar?.setDisplayHomeAsUpEnabled(true)
- supportActionBar?.setDisplayShowHomeEnabled(true)
- supportActionBar?.setDisplayShowTitleEnabled(true)
- }
- }
-
- override fun onSupportNavigateUp(): Boolean {
- onBackPressed()
- return true
- }
-
- override fun handleError(serverError: ServerError) {
+ private fun handleError(serverError: ServerError) {
this.showErrorState()
if (serverError.errorBody != null) {
@@ -94,21 +86,21 @@ class IssueListActivity : AppCompatActivity(), IssueListView {
recyclerView.setGone()
}
- override fun showLoading() {
+ private fun showLoading() {
layoutProgress.setVisible()
layoutEmpty.setGone()
layoutError.setGone()
recyclerView.setGone()
}
- override fun showEmpty() {
+ private fun showEmpty() {
layoutProgress.setGone()
layoutEmpty.setVisible()
layoutError.setGone()
recyclerView.setGone()
}
- override fun showContent(content: List) {
+ private fun showContent(content: List) {
if (content.isEmpty()) {
showEmpty()
} else {
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListAdapter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListAdapter.kt
similarity index 75%
rename from app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListAdapter.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListAdapter.kt
index 2d87858..0fafa9b 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListAdapter.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListAdapter.kt
@@ -1,4 +1,4 @@
-package br.com.luisfernandez.github.client.pullrequest
+package br.com.luisfernandez.github.client.repodetails.pullrequest
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
@@ -18,18 +18,18 @@ import java.util.*
class PullRequestListAdapter(
private val pullRequestList: ArrayList = ArrayList(),
private val onItemClickListener: OnItemClickListener
-) : RecyclerView.Adapter()
+) : RecyclerView.Adapter()
{
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PullRequestViewHolder {
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListAdapter.PullRequestViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_pull_request_list, parent, false)
- return PullRequestViewHolder(view)
+ return br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListAdapter.PullRequestViewHolder(view)
}
override fun getItemCount(): Int {
return pullRequestList.size
}
- override fun onBindViewHolder(holder: PullRequestViewHolder, position: Int) {
+ override fun onBindViewHolder(holder: br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListAdapter.PullRequestViewHolder, position: Int) {
val item = pullRequestList[position]
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListActivity.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt
similarity index 69%
rename from app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListActivity.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt
index 5b1b519..4c85632 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListActivity.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt
@@ -1,57 +1,64 @@
-package br.com.luisfernandez.github.client.pullrequest
+package br.com.luisfernandez.github.client.repodetails.pullrequest
-import android.annotation.SuppressLint
import android.arch.lifecycle.Observer
import android.content.Intent
import android.net.Uri
-import android.support.v7.app.AppCompatActivity
+import android.os.Bundle
+import android.support.v4.app.Fragment
import android.support.v7.widget.LinearLayoutManager
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
import br.com.luisfernandez.github.client.OnItemClickListener
import br.com.luisfernandez.github.client.R
import br.com.luisfernandez.github.client.extensions.setGone
import br.com.luisfernandez.github.client.extensions.setVisible
-import br.com.luisfernandez.github.client.http.model.ServerError
import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
+import br.com.luisfernandez.github.client.http.model.ServerError
import br.com.luisfernandez.github.client.pojo.PullRequestResponse
-import kotlinx.android.synthetic.main.activity_list.*
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.OWNER
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.REPONAME
+import kotlinx.android.synthetic.main.fragment_pull_request_list.*
import kotlinx.android.synthetic.main.view_state_empty.*
import kotlinx.android.synthetic.main.view_state_error.*
import kotlinx.android.synthetic.main.view_state_loading.*
-import org.androidannotations.annotations.AfterViews
-import org.androidannotations.annotations.EActivity
-import org.androidannotations.annotations.Extra
import org.koin.android.viewmodel.ext.android.viewModel
-@SuppressLint("Registered")
-@EActivity(R.layout.activity_pull_request_list)
-class PullRequestListActivity : AppCompatActivity(), PullRequestListView {
+class PullRequestListFragment : Fragment() {
- @Extra
lateinit var owner: String
-
- @Extra
lateinit var repoName: String
-
val viewModel by viewModel()
- @AfterViews
- fun afterViews() {
- this.configToolbar()
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
- val layoutManager = LinearLayoutManager(this)
+ val rootView = inflater.inflate(R.layout.fragment_pull_request_list, container, false)
- recyclerView.layoutManager = layoutManager
+ val recyclerView = rootView.findViewById(R.id.recyclerView) as RecyclerView
+
+ recyclerView.layoutManager = LinearLayoutManager(rootView.context)
recyclerView.setHasFixedSize(true)
-//
+
+ setupArguments()
+
setupViewModel()
viewModel.loadPullRequestList(owner, repoName)
+
+ return rootView
+
+ }
+
+ private fun setupArguments() {
+ owner = arguments!!.getString(OWNER)
+ repoName = arguments!!.getString(REPONAME)
}
private fun setupViewModel() {
viewModel.listPullRequest.observe(this, Observer {
- listPullRequest ->
- showContent(listPullRequest!!)
+ issueList ->
+ showContent(issueList!!)
})
viewModel.serverError.observe(this, Observer {
@@ -60,22 +67,7 @@ class PullRequestListActivity : AppCompatActivity(), PullRequestListView {
})
}
- private fun configToolbar() {
- setSupportActionBar(toolbar)
- supportActionBar?.let {
- title = repoName
- supportActionBar?.setDisplayHomeAsUpEnabled(true)
- supportActionBar?.setDisplayShowHomeEnabled(true)
- supportActionBar?.setDisplayShowTitleEnabled(true)
- }
- }
-
- override fun onSupportNavigateUp(): Boolean {
- onBackPressed()
- return true
- }
-
- override fun handleError(serverError: ServerError) {
+ private fun handleError(serverError: ServerError) {
this.showErrorState()
if (serverError.errorBody != null) {
@@ -97,21 +89,21 @@ class PullRequestListActivity : AppCompatActivity(), PullRequestListView {
recyclerView.setGone()
}
- override fun showLoading() {
+ private fun showLoading() {
layoutProgress.setVisible()
layoutEmpty.setGone()
layoutError.setGone()
recyclerView.setGone()
}
- override fun showEmpty() {
+ private fun showEmpty() {
layoutProgress.setGone()
layoutEmpty.setVisible()
layoutError.setGone()
recyclerView.setGone()
}
- override fun showContent(content: List) {
+ private fun showContent(content: List) {
if (content.isEmpty()) {
showEmpty()
} else {
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestModel.kt
similarity index 80%
rename from app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestModel.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestModel.kt
index b5fe021..12f4fc6 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestModel.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestModel.kt
@@ -1,4 +1,4 @@
-package br.com.luisfernandez.github.client.pullrequest
+package br.com.luisfernandez.github.client.repodetails.pullrequest
import br.com.luisfernandez.github.client.pojo.PullRequestResponse
import io.reactivex.Observable
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestModelImpl.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestModelImpl.kt
similarity index 78%
rename from app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestModelImpl.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestModelImpl.kt
index 380b04e..52ba316 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestModelImpl.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestModelImpl.kt
@@ -1,4 +1,4 @@
-package br.com.luisfernandez.github.client.pullrequest
+package br.com.luisfernandez.github.client.repodetails.pullrequest
import br.com.luisfernandez.github.client.http.GitHubService
import br.com.luisfernandez.github.client.pojo.PullRequestResponse
@@ -6,7 +6,7 @@ import io.reactivex.Observable
class PullRequestModelImpl (
private val gitHubService: GitHubService
-) : PullRequestModel
+) : br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestModel
{
override fun loadPullRequestList(owner: String, repoName: String): Observable> {
return gitHubService
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestViewModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestViewModel.kt
similarity index 88%
rename from app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestViewModel.kt
rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestViewModel.kt
index e47256e..f23296f 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestViewModel.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestViewModel.kt
@@ -1,4 +1,4 @@
-package br.com.luisfernandez.github.client.pullrequest
+package br.com.luisfernandez.github.client.repodetails.pullrequest
import android.arch.lifecycle.MutableLiveData
import android.arch.lifecycle.ViewModel
@@ -10,7 +10,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
class PullRequestViewModel (
- private val pullRequestModel: PullRequestModel
+ private val pullRequestModel: br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestModel
) : ViewModel()
{
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repolist/RepoListActivity.kt b/app/src/main/java/br/com/luisfernandez/github/client/repolist/RepoListActivity.kt
index 7862933..9e551a1 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/repolist/RepoListActivity.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repolist/RepoListActivity.kt
@@ -12,9 +12,8 @@ import br.com.luisfernandez.github.client.extensions.setGone
import br.com.luisfernandez.github.client.extensions.setVisible
import br.com.luisfernandez.github.client.http.model.GitHubErrorBody
import br.com.luisfernandez.github.client.http.model.ServerError
-import br.com.luisfernandez.github.client.issuelist.IssueListActivity_
import br.com.luisfernandez.github.client.pojo.Repo
-import br.com.luisfernandez.github.client.pullrequest.PullRequestListActivity_
+import br.com.luisfernandez.github.client.repodetails.RepoDetailsActivity_
import com.crashlytics.android.answers.Answers
import com.crashlytics.android.answers.SearchEvent
import com.miguelcatalan.materialsearchview.MaterialSearchView
@@ -24,7 +23,6 @@ import kotlinx.android.synthetic.main.view_state_error.*
import kotlinx.android.synthetic.main.view_state_loading.*
import org.androidannotations.annotations.AfterViews
import org.androidannotations.annotations.EActivity
-import org.koin.android.ext.android.inject
import org.koin.android.viewmodel.ext.android.viewModel
@@ -120,23 +118,14 @@ class RepoListActivity : AppCompatActivity(), RepoListView {
private fun getRepoListAdapter(): RepoListAdapter {
return RepoListAdapter(
getOnItemClickListener(),
- getOnLoadMoreContentClickListener(),
- getOnIssueClickListener()
+ getOnLoadMoreContentClickListener()
)
}
private fun getOnItemClickListener(): OnItemClickListener {
return object : OnItemClickListener {
override fun onItemClick(type: Repo) {
- goToPullRequestActivity(type)
- }
- }
- }
-
- private fun getOnIssueClickListener(): OnItemClickListener {
- return object : OnItemClickListener {
- override fun onItemClick(type: Repo) {
- goToIssueListActivity(type)
+ goToRepoDetailsActivity(type)
}
}
}
@@ -149,16 +138,8 @@ class RepoListActivity : AppCompatActivity(), RepoListView {
}
}
- private fun goToPullRequestActivity(type: Repo) {
- PullRequestListActivity_
- .intent(this@RepoListActivity)
- .owner(type.owner.login)
- .repoName(type.name)
- .start()
- }
-
- private fun goToIssueListActivity(type: Repo) {
- IssueListActivity_
+ private fun goToRepoDetailsActivity(type: Repo) {
+ RepoDetailsActivity_
.intent(this@RepoListActivity)
.owner(type.owner.login)
.repoName(type.name)
diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repolist/RepoListAdapter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repolist/RepoListAdapter.kt
index c5d85fe..9572f80 100644
--- a/app/src/main/java/br/com/luisfernandez/github/client/repolist/RepoListAdapter.kt
+++ b/app/src/main/java/br/com/luisfernandez/github/client/repolist/RepoListAdapter.kt
@@ -18,8 +18,7 @@ import kotlin.collections.ArrayList
*/
class RepoListAdapter(
private val onItemClickListener: OnItemClickListener,
- private val onRetryClickListener: OnItemClickListener,
- private val onIssueClickListener: OnItemClickListener
+ private val onRetryClickListener: OnItemClickListener
) : RecyclerView.Adapter()
{
companion object {
@@ -76,10 +75,6 @@ class RepoListAdapter(
viewHolder.itemView.setOnClickListener { _ ->
onItemClickListener.onItemClick(repo)
}
-
- viewHolder.textIssuesCount.setOnClickListener { _ ->
- onIssueClickListener.onItemClick(repo)
- }
}
ERROR_FOOTER -> {
val errorFooterHolder = viewHolder as ErrorFooterViewHolder
diff --git a/app/src/main/res/layout/activity_repo_details.xml b/app/src/main/res/layout/activity_repo_details.xml
new file mode 100644
index 0000000..46f8ff9
--- /dev/null
+++ b/app/src/main/res/layout/activity_repo_details.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_pull_request_list.xml b/app/src/main/res/layout/fragment_branches_list.xml
similarity index 66%
rename from app/src/main/res/layout/activity_pull_request_list.xml
rename to app/src/main/res/layout/fragment_branches_list.xml
index 9c199fd..599e653 100644
--- a/app/src/main/res/layout/activity_pull_request_list.xml
+++ b/app/src/main/res/layout/fragment_branches_list.xml
@@ -1,15 +1,9 @@
-
-
+ xmlns:tools="http://schemas.android.com/tools"
+ android:animateLayoutChanges="true"
+ tools:context=".repodetails.brancheslist.BranchesListFragment">
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_contributors_list.xml b/app/src/main/res/layout/fragment_contributors_list.xml
new file mode 100644
index 0000000..281fa33
--- /dev/null
+++ b/app/src/main/res/layout/fragment_contributors_list.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_issues_list.xml b/app/src/main/res/layout/fragment_issues_list.xml
new file mode 100644
index 0000000..74f93f1
--- /dev/null
+++ b/app/src/main/res/layout/fragment_issues_list.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_issues_list.xml b/app/src/main/res/layout/fragment_pull_request_list.xml
similarity index 70%
rename from app/src/main/res/layout/activity_issues_list.xml
rename to app/src/main/res/layout/fragment_pull_request_list.xml
index 9c199fd..0f7d91d 100644
--- a/app/src/main/res/layout/activity_issues_list.xml
+++ b/app/src/main/res/layout/fragment_pull_request_list.xml
@@ -3,14 +3,6 @@
android:layout_height="match_parent"
android:animateLayoutChanges="true">
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_commits_list.xml b/app/src/main/res/layout/item_commits_list.xml
new file mode 100644
index 0000000..986f75d
--- /dev/null
+++ b/app/src/main/res/layout/item_commits_list.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_contributors_list.xml b/app/src/main/res/layout/item_contributors_list.xml
new file mode 100644
index 0000000..f93ed4a
--- /dev/null
+++ b/app/src/main/res/layout/item_contributors_list.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2781954..fe1531d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8,4 +8,9 @@
"Ohh no!\n%s is an invalid language\nPlease query a valid language ;)"
TRY AGAIN
+ PullRequests
+ Issues
+ Commits
+ Contributors
+ Branches