From c673a37af441f335a54f5b1f6da75b46302bd6f4 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Tue, 9 Apr 2019 10:54:22 -0300 Subject: [PATCH 01/49] Adding feature of issues listing --- app/src/main/AndroidManifest.xml | 8 +- .../github/client/http/GitHubService.java | 4 + .../client/issuelist/IssueListActivity.kt | 129 ++++++++++++++++++ .../client/issuelist/IssueListAdapter.kt | 50 +++++++ .../github/client/issuelist/IssueListModel.kt | 11 ++ .../client/issuelist/IssueListModelImpl.kt | 18 +++ .../github/client/issuelist/IssueListView.kt | 11 ++ .../client/issuelist/IssueListViewModel.kt | 35 +++++ .../github/client/koin/ModelModule.kt | 8 ++ .../github/client/koin/ViewModelModule.kt | 7 + .../github/client/pojo/IssueResponse.kt | 11 ++ .../pullrequest/PullRequestListActivity.kt | 2 +- .../client/repolist/RepoListActivity.kt | 20 ++- .../github/client/repolist/RepoListAdapter.kt | 7 +- .../main/res/layout/activity_issues_list.xml | 33 +++++ app/src/main/res/layout/item_issue_list.xml | 66 +++++++++ 16 files changed, 415 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListActivity.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListAdapter.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModel.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModelImpl.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListView.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListViewModel.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/pojo/IssueResponse.kt create mode 100644 app/src/main/res/layout/activity_issues_list.xml create mode 100644 app/src/main/res/layout/item_issue_list.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d76f81e..7f5a082 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,8 +26,12 @@ + android:name=".pullrequest.PullRequestListActivity_" /> + + > listPullRequests(@Path("owner") String owner, @Path("repoName") String repoName); + + @GET("/repos/{owner}/{repoName}/issues") + Observable> listIssues(@Path("owner") String owner, @Path("repoName") String repoName); } 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/issuelist/IssueListActivity.kt new file mode 100644 index 0000000..eab0573 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListActivity.kt @@ -0,0 +1,129 @@ +package br.com.luisfernandez.github.client.issuelist + +import android.annotation.SuppressLint +import android.arch.lifecycle.Observer +import android.support.v7.app.AppCompatActivity +import android.support.v7.widget.LinearLayoutManager +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 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 { + + @Extra + lateinit var owner: String + + @Extra + lateinit var repoName: String + + val viewModel by viewModel() + + @AfterViews + fun afterViews() { + this.configToolbar() + + val layoutManager = LinearLayoutManager(this) + + recyclerView.layoutManager = layoutManager + recyclerView.setHasFixedSize(true) + + setupViewModel() + + viewModel.loadIssueList(owner, repoName) + } + + private fun setupViewModel() { + viewModel.issueList.observe(this, Observer { + issueList -> + showContent(issueList!!) + }) + + viewModel.serverError.observe(this, Observer { + serverError -> + handleError(serverError!!) + }) + } + + 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) { + this.showErrorState() + + if (serverError.errorBody != null) { + textErrorMessage.text = serverError.errorBody!!.message + } else { + textErrorMessage.text = serverError.errorMessage + } + + buttonRetry.setOnClickListener { _ -> + showLoading() + viewModel.loadIssueList(owner, repoName) + } + } + + private fun showErrorState() { + layoutProgress.setGone() + layoutEmpty.setGone() + layoutError.setVisible() + recyclerView.setGone() + } + + override fun showLoading() { + layoutProgress.setVisible() + layoutEmpty.setGone() + layoutError.setGone() + recyclerView.setGone() + } + + override fun showEmpty() { + layoutProgress.setGone() + layoutEmpty.setVisible() + layoutError.setGone() + recyclerView.setGone() + } + + override fun showContent(content: List) { + if (content.isEmpty()) { + showEmpty() + } else { + layoutProgress.setGone() + layoutEmpty.setGone() + layoutError.setGone() + recyclerView.setVisible() + + recyclerView.adapter = this.getIssueListAdapter(content) + } + } + + private fun getIssueListAdapter(content: List): IssueListAdapter { + return IssueListAdapter( + content as ArrayList + ) + } +} 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/issuelist/IssueListAdapter.kt new file mode 100644 index 0000000..145f1d5 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListAdapter.kt @@ -0,0 +1,50 @@ +package br.com.luisfernandez.github.client.issuelist + +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.IssueResponse +import kotlinx.android.synthetic.main.item_issue_list.view.* +import java.text.SimpleDateFormat +import java.util.* + +/** + * Created by luisfernandez on 12/05/18. + */ +class IssueListAdapter( + private val issueList: ArrayList = ArrayList() +) : RecyclerView.Adapter() +{ + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): IssueViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_issue_list, parent, false) + return IssueViewHolder(view) + } + + override fun getItemCount(): Int { + return issueList.size + } + + override fun onBindViewHolder(holder: IssueViewHolder, position: Int) { + val item = issueList[position] + + + + holder.textTitle.text = item.title + holder.textAuthorName.text = item.user.login + holder.textDate.text = SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.getDefault()).format(item.createdAt) + holder.textDescription.text = item.body + + ImageLoader.loadImage(item.user.avatarUrl, holder.imageIssueAuthor) + } + + class IssueViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + var imageIssueAuthor = itemView.imageIssueAuthor!! + var textAuthorName = itemView.textIssueAuthorName!! + var textTitle = itemView.textIssueTitle!! + var textDate = itemView.textIssueDate!! + var textDescription = itemView.textIssueDescription!! + } +} \ No newline at end of file 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/issuelist/IssueListModel.kt new file mode 100644 index 0000000..bf28b06 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModel.kt @@ -0,0 +1,11 @@ +package br.com.luisfernandez.github.client.issuelist + +import br.com.luisfernandez.github.client.pojo.IssueResponse +import io.reactivex.Observable + +/** + * Created by luisfernandez on 12/05/18. + */ +interface IssueListModel { + fun loadIssueList(owner: String, repoName: String): Observable> +} \ No newline at end of file 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/issuelist/IssueListModelImpl.kt new file mode 100644 index 0000000..f47063d --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListModelImpl.kt @@ -0,0 +1,18 @@ +package br.com.luisfernandez.github.client.issuelist + +import br.com.luisfernandez.github.client.http.GitHubService +import br.com.luisfernandez.github.client.pojo.IssueResponse +import io.reactivex.Observable + +class IssueListModelImpl ( + private val gitHubService: GitHubService +) : IssueListModel +{ + override fun loadIssueList(owner: String, repoName: String): Observable> { + return gitHubService + .listIssues(owner, repoName) + .map { issueList -> + issueList + } + } +} \ No newline at end of file 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 new file mode 100644 index 0000000..6ddda1a --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListView.kt @@ -0,0 +1,11 @@ +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/issuelist/IssueListViewModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListViewModel.kt new file mode 100644 index 0000000..50147c5 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListViewModel.kt @@ -0,0 +1,35 @@ +package br.com.luisfernandez.github.client.issuelist + +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.IssueResponse +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.schedulers.Schedulers + +class IssueListViewModel ( + private val issueListModel: IssueListModel +) : ViewModel() +{ + + val issueList = MutableLiveData>() + val serverError = MutableLiveData>() + + fun loadIssueList(owner: String, repoName: String) { + issueListModel + .loadIssueList(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(listIssue: List) { + issueList.postValue(listIssue) + } + }) + } +} \ 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 9397c2e..001a183 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,5 +1,7 @@ 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.repolist.RepoListModel @@ -19,4 +21,10 @@ val modelModule = module { get() ) } + + single { + IssueListModelImpl( + get() + ) + } } \ No newline at end of file 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 38ec173..0ecf3d6 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,6 +2,7 @@ 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.repolist.RepoListViewModel import org.koin.android.viewmodel.ext.koin.viewModel @@ -21,4 +22,10 @@ val viewModelModule = module { ) } + viewModel { + IssueListViewModel( + get() + ) + } + } \ No newline at end of file diff --git a/app/src/main/java/br/com/luisfernandez/github/client/pojo/IssueResponse.kt b/app/src/main/java/br/com/luisfernandez/github/client/pojo/IssueResponse.kt new file mode 100644 index 0000000..6259f92 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/pojo/IssueResponse.kt @@ -0,0 +1,11 @@ +package br.com.luisfernandez.github.client.pojo + +import com.google.gson.annotations.SerializedName +import java.util.Date + +data class IssueResponse( + @SerializedName("user") val user: User, + @SerializedName("title") val title: String, + @SerializedName("body") val body: String, + @SerializedName("created_at") val createdAt: Date +) \ No newline at end of file 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/pullrequest/PullRequestListActivity.kt index 5b1b519..e54874d 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListActivity.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListActivity.kt @@ -42,7 +42,7 @@ class PullRequestListActivity : AppCompatActivity(), PullRequestListView { recyclerView.layoutManager = layoutManager recyclerView.setHasFixedSize(true) -// + setupViewModel() viewModel.loadPullRequestList(owner, repoName) 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 32d4b07..7862933 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,6 +12,7 @@ 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 com.crashlytics.android.answers.Answers @@ -119,7 +120,8 @@ class RepoListActivity : AppCompatActivity(), RepoListView { private fun getRepoListAdapter(): RepoListAdapter { return RepoListAdapter( getOnItemClickListener(), - getOnLoadMoreContentClickListener() + getOnLoadMoreContentClickListener(), + getOnIssueClickListener() ) } @@ -131,6 +133,14 @@ class RepoListActivity : AppCompatActivity(), RepoListView { } } + private fun getOnIssueClickListener(): OnItemClickListener { + return object : OnItemClickListener { + override fun onItemClick(type: Repo) { + goToIssueListActivity(type) + } + } + } + private fun getOnLoadMoreContentClickListener(): OnItemClickListener { return object : OnItemClickListener { override fun onItemClick(type: String) { @@ -147,6 +157,14 @@ class RepoListActivity : AppCompatActivity(), RepoListView { .start() } + private fun goToIssueListActivity(type: Repo) { + IssueListActivity_ + .intent(this@RepoListActivity) + .owner(type.owner.login) + .repoName(type.name) + .start() + } + private fun loadMoreContent() { this@RepoListActivity.isLoadingState = true recyclerView.post { repoListAdapter.showFooter() } 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 9572f80..c5d85fe 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,7 +18,8 @@ import kotlin.collections.ArrayList */ class RepoListAdapter( private val onItemClickListener: OnItemClickListener, - private val onRetryClickListener: OnItemClickListener + private val onRetryClickListener: OnItemClickListener, + private val onIssueClickListener: OnItemClickListener ) : RecyclerView.Adapter() { companion object { @@ -75,6 +76,10 @@ 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_issues_list.xml b/app/src/main/res/layout/activity_issues_list.xml new file mode 100644 index 0000000..9c199fd --- /dev/null +++ b/app/src/main/res/layout/activity_issues_list.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_issue_list.xml b/app/src/main/res/layout/item_issue_list.xml new file mode 100644 index 0000000..5d38927 --- /dev/null +++ b/app/src/main/res/layout/item_issue_list.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file From 095fa3c6d9f35a0b08a5a86291159c5640201e72 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Thu, 11 Apr 2019 17:49:13 -0300 Subject: [PATCH 02/49] Adding activity RepoDetailsActivity and its layout and changing the destiny at click on the repository item --- app/src/main/AndroidManifest.xml | 5 +++ .../client/repodetails/RepoDetailsActivity.kt | 35 +++++++++++++++++++ .../client/repolist/RepoListActivity.kt | 11 +++++- .../main/res/layout/activity_repo_details.xml | 28 +++++++++++++++ 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsActivity.kt create mode 100644 app/src/main/res/layout/activity_repo_details.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f5a082..0e2ac4b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,6 +33,11 @@ android:screenOrientation="portrait" android:name=".issuelist.IssueListActivity_" /> + + 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..3ea2467 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsActivity.kt @@ -0,0 +1,35 @@ +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_list.* +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() + } + + private fun configToolbar() { + setSupportActionBar(toolbar) + supportActionBar?.let { + title = repoName + supportActionBar?.setDisplayHomeAsUpEnabled(true) + supportActionBar?.setDisplayShowHomeEnabled(true) + supportActionBar?.setDisplayShowTitleEnabled(true) + } + } +} 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..d458201 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 @@ -15,6 +15,7 @@ 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 @@ -128,7 +129,7 @@ class RepoListActivity : AppCompatActivity(), RepoListView { private fun getOnItemClickListener(): OnItemClickListener { return object : OnItemClickListener { override fun onItemClick(type: Repo) { - goToPullRequestActivity(type) + goToRepoDetailsActivity(type) } } } @@ -165,6 +166,14 @@ class RepoListActivity : AppCompatActivity(), RepoListView { .start() } + private fun goToRepoDetailsActivity(type: Repo) { + RepoDetailsActivity_ + .intent(this@RepoListActivity) + .owner(type.owner.login) + .repoName(type.name) + .start() + } + private fun loadMoreContent() { this@RepoListActivity.isLoadingState = true recyclerView.post { repoListAdapter.showFooter() } 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..7124077 --- /dev/null +++ b/app/src/main/res/layout/activity_repo_details.xml @@ -0,0 +1,28 @@ + + + + + + + + + + \ No newline at end of file From 2188639af97d07b2c15b6c922179b679fd10c3a4 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Thu, 11 Apr 2019 18:33:25 -0300 Subject: [PATCH 03/49] Adding navigation up support to toolbar and fixing the relative layout item position. --- .../github/client/repodetails/RepoDetailsActivity.kt | 5 +++++ app/src/main/res/layout/activity_repo_details.xml | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) 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 index 3ea2467..f247830 100644 --- 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 @@ -32,4 +32,9 @@ class RepoDetailsActivity : AppCompatActivity() { supportActionBar?.setDisplayShowTitleEnabled(true) } } + + override fun onSupportNavigateUp(): Boolean { + onBackPressed() + return true + } } diff --git a/app/src/main/res/layout/activity_repo_details.xml b/app/src/main/res/layout/activity_repo_details.xml index 7124077..02bb28f 100644 --- a/app/src/main/res/layout/activity_repo_details.xml +++ b/app/src/main/res/layout/activity_repo_details.xml @@ -17,12 +17,14 @@ android:id="@+id/repo_detail_tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" - app:tabMode="fixed"/> + app:tabMode="fixed" + android:layout_below="@+id/toolbar"/> + android:clipToPadding="true" + android:layout_below="@+id/repo_detail_tablayout"/> \ No newline at end of file From 5aa866b6a53d4d170c27364c8182aac820971c70 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Thu, 11 Apr 2019 20:15:04 -0300 Subject: [PATCH 04/49] Creating and addin RepoDetailsPagerAdapter to repo_detail_viewpager, creating its fragments, and joining everything at repo_detail_tablayout --- .../client/repodetails/BranchesFragment.kt | 21 ++++++++++ .../repodetails/CollaboratorsFragment.kt | 21 ++++++++++ .../client/repodetails/CommitsFragment.kt | 21 ++++++++++ .../client/repodetails/IssuesFragment.kt | 21 ++++++++++ .../repodetails/PullRequestsFragment.kt | 21 ++++++++++ .../client/repodetails/RepoDetailsActivity.kt | 7 +++- .../repodetails/RepoDetailsPagerAdapter.kt | 38 +++++++++++++++++++ .../main/res/layout/activity_repo_details.xml | 2 +- app/src/main/res/layout/fragment_branches.xml | 15 ++++++++ .../res/layout/fragment_collaborators.xml | 15 ++++++++ app/src/main/res/layout/fragment_commits.xml | 15 ++++++++ app/src/main/res/layout/fragment_issues.xml | 15 ++++++++ .../res/layout/fragment_pull_requests.xml | 15 ++++++++ app/src/main/res/values/strings.xml | 3 ++ 14 files changed, 228 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/BranchesFragment.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/CommitsFragment.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsPagerAdapter.kt create mode 100644 app/src/main/res/layout/fragment_branches.xml create mode 100644 app/src/main/res/layout/fragment_collaborators.xml create mode 100644 app/src/main/res/layout/fragment_commits.xml create mode 100644 app/src/main/res/layout/fragment_issues.xml create mode 100644 app/src/main/res/layout/fragment_pull_requests.xml diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/BranchesFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/BranchesFragment.kt new file mode 100644 index 0000000..204ec0e --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/BranchesFragment.kt @@ -0,0 +1,21 @@ +package br.com.luisfernandez.github.client.repodetails + + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +import br.com.luisfernandez.github.client.R + +class BranchesFragment : Fragment() { + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + + return inflater.inflate(R.layout.fragment_branches, container, false) + } + + +} diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt new file mode 100644 index 0000000..22b6fab --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt @@ -0,0 +1,21 @@ +package br.com.luisfernandez.github.client.repodetails + + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +import br.com.luisfernandez.github.client.R + +class CollaboratorsFragment : Fragment() { + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + + return inflater.inflate(R.layout.fragment_collaborators, container, false) + } + + +} diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CommitsFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CommitsFragment.kt new file mode 100644 index 0000000..fc7122b --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CommitsFragment.kt @@ -0,0 +1,21 @@ +package br.com.luisfernandez.github.client.repodetails + + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +import br.com.luisfernandez.github.client.R + +class CommitsFragment : Fragment() { + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + + return inflater.inflate(R.layout.fragment_commits, container, false) + } + + +} diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt new file mode 100644 index 0000000..1c2eb81 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt @@ -0,0 +1,21 @@ +package br.com.luisfernandez.github.client.repodetails + + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +import br.com.luisfernandez.github.client.R + +class IssuesFragment : Fragment() { + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + + return inflater.inflate(R.layout.fragment_issues, container, false) + } + + +} diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt new file mode 100644 index 0000000..273232f --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt @@ -0,0 +1,21 @@ +package br.com.luisfernandez.github.client.repodetails + + +import android.os.Bundle +import android.support.v4.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +import br.com.luisfernandez.github.client.R + +class PullRequestsFragment : Fragment() { + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + + return inflater.inflate(R.layout.fragment_pull_requests, container, false) + } + + +} 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 index f247830..7e29ef9 100644 --- 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 @@ -3,7 +3,7 @@ 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_list.* +import kotlinx.android.synthetic.main.activity_repo_details.* import org.androidannotations.annotations.AfterViews import org.androidannotations.annotations.EActivity import org.androidannotations.annotations.Extra @@ -21,6 +21,11 @@ class RepoDetailsActivity : AppCompatActivity() { @AfterViews fun afterViews() { this.configToolbar() + + val fragmentAdapter = RepoDetailsPagerAdapter(supportFragmentManager) + repo_detail_viewpager.adapter = fragmentAdapter + + repo_detail_tablayout.setupWithViewPager(repo_detail_viewpager) } private fun configToolbar() { 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..0a1d403 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsPagerAdapter.kt @@ -0,0 +1,38 @@ +package br.com.luisfernandez.github.client.repodetails + +import android.support.v4.app.Fragment +import android.support.v4.app.FragmentManager +import android.support.v4.app.FragmentPagerAdapter + +class RepoDetailsPagerAdapter(fm: FragmentManager): + FragmentPagerAdapter(fm) { + + override fun getCount(): Int { + return 5 + } + + override fun getItem(position: Int): Fragment { + return when(position) { + 0 -> PullRequestsFragment() + 1 -> IssuesFragment() + 2 -> CommitsFragment() + 3 -> CollaboratorsFragment() + 4 -> BranchesFragment() + + else -> PullRequestsFragment() + } + } + + override fun getPageTitle(position: Int): CharSequence? { + return when(position){ + 0 -> "PullRequests" + 1 -> "Issues" + 2 -> "Commits" + 3 -> "Collaborators" + 4 -> "Branches" + + else -> "PullRequests" + } + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_repo_details.xml b/app/src/main/res/layout/activity_repo_details.xml index 02bb28f..54000b9 100644 --- a/app/src/main/res/layout/activity_repo_details.xml +++ b/app/src/main/res/layout/activity_repo_details.xml @@ -17,7 +17,7 @@ android:id="@+id/repo_detail_tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" - app:tabMode="fixed" + app:tabMode="scrollable" android:layout_below="@+id/toolbar"/> + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_collaborators.xml b/app/src/main/res/layout/fragment_collaborators.xml new file mode 100644 index 0000000..6f5a920 --- /dev/null +++ b/app/src/main/res/layout/fragment_collaborators.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_commits.xml b/app/src/main/res/layout/fragment_commits.xml new file mode 100644 index 0000000..8be10b1 --- /dev/null +++ b/app/src/main/res/layout/fragment_commits.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_issues.xml b/app/src/main/res/layout/fragment_issues.xml new file mode 100644 index 0000000..8536989 --- /dev/null +++ b/app/src/main/res/layout/fragment_issues.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_pull_requests.xml b/app/src/main/res/layout/fragment_pull_requests.xml new file mode 100644 index 0000000..96f7bab --- /dev/null +++ b/app/src/main/res/layout/fragment_pull_requests.xml @@ -0,0 +1,15 @@ + + + + + + \ 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..cabf14b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,4 +8,7 @@ "Ohh no!\n%s is an invalid language\nPlease query a valid language ;)" TRY AGAIN + + + Hello blank fragment From 6903b05c397d34c9ae56790989cf4275b356536a Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Thu, 11 Apr 2019 21:04:39 -0300 Subject: [PATCH 05/49] Removing the default text string of fragments --- app/src/main/res/values/strings.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cabf14b..2781954 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,7 +8,4 @@ "Ohh no!\n%s is an invalid language\nPlease query a valid language ;)" TRY AGAIN - - - Hello blank fragment From 718dcd3fc80be84e9429d3446839236a11737511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Fri, 12 Apr 2019 18:52:17 -0300 Subject: [PATCH 06/49] Adding funcionalities from IssueListActivity to the IssuesFragment. One issue detected: RecyclerView - No layout manager attached --- .../client/repodetails/IssuesFragment.kt | 113 +++++++++++++++++- .../client/repodetails/RepoDetailsActivity.kt | 2 +- .../repodetails/RepoDetailsPagerAdapter.kt | 16 ++- .../main/res/layout/activity_issues_list.xml | 4 +- app/src/main/res/layout/fragment_issues.xml | 3 +- 5 files changed, 126 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt index 1c2eb81..bf85fb3 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt @@ -1,21 +1,122 @@ package br.com.luisfernandez.github.client.repodetails - +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.issuelist.IssueListAdapter +import br.com.luisfernandez.github.client.issuelist.IssueListView +import br.com.luisfernandez.github.client.issuelist.IssueListViewModel +import br.com.luisfernandez.github.client.pojo.IssueResponse +import kotlinx.android.synthetic.main.activity_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.koin.android.viewmodel.ext.android.viewModel + +class IssuesFragment : Fragment(), IssueListView { + + 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.activity_issues_list, container, false) + + val recyclerView = rootView.findViewById(R.id.recyclerView) as RecyclerView + + recyclerView.layoutManager = LinearLayoutManager(rootView.context) + recyclerView.setHasFixedSize(true) + + setupArguments() + + setupViewModel() + + viewModel.loadIssueList(owner, repoName) + + return inflater.inflate(R.layout.activity_issues_list, container, false) + + } -class IssuesFragment : Fragment() { + private fun setupArguments() { + owner = arguments!!.getString("OWNER") + repoName = arguments!!.getString("REPONAME") + } + + private fun setupViewModel() { + viewModel.issueList.observe(this, Observer { + issueList -> + showContent(issueList!!) + }) + + viewModel.serverError.observe(this, Observer { + serverError -> + handleError(serverError!!) + }) + } + + override fun handleError(serverError: ServerError) { + this.showErrorState() + + if (serverError.errorBody != null) { + textErrorMessage.text = serverError.errorBody!!.message + } else { + textErrorMessage.text = serverError.errorMessage + } + + buttonRetry.setOnClickListener { _ -> + showLoading() + viewModel.loadIssueList(owner, repoName) + } + } + + private fun showErrorState() { + layoutProgress.setGone() + layoutEmpty.setGone() + layoutError.setVisible() + recyclerView.setGone() + } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + override fun showLoading() { + layoutProgress.setVisible() + layoutEmpty.setGone() + layoutError.setGone() + recyclerView.setGone() + } - return inflater.inflate(R.layout.fragment_issues, container, false) + override fun showEmpty() { + layoutProgress.setGone() + layoutEmpty.setVisible() + layoutError.setGone() + recyclerView.setGone() } + override fun showContent(content: List) { + if (content.isEmpty()) { + showEmpty() + } else { + layoutProgress.setGone() + layoutEmpty.setGone() + layoutError.setGone() + recyclerView.setVisible() + recyclerView.adapter = this.getIssueListAdapter(content) + } + } + + private fun getIssueListAdapter(content: List): IssueListAdapter { + return IssueListAdapter( + content as ArrayList + ) + } } 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 index 7e29ef9..78577b9 100644 --- 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 @@ -22,7 +22,7 @@ class RepoDetailsActivity : AppCompatActivity() { fun afterViews() { this.configToolbar() - val fragmentAdapter = RepoDetailsPagerAdapter(supportFragmentManager) + val fragmentAdapter = RepoDetailsPagerAdapter(supportFragmentManager, owner, repoName) repo_detail_viewpager.adapter = fragmentAdapter repo_detail_tablayout.setupWithViewPager(repo_detail_viewpager) 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 index 0a1d403..a4fc5c7 100644 --- 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 @@ -3,16 +3,24 @@ package br.com.luisfernandez.github.client.repodetails import android.support.v4.app.Fragment import android.support.v4.app.FragmentManager import android.support.v4.app.FragmentPagerAdapter +import android.os.Bundle -class RepoDetailsPagerAdapter(fm: FragmentManager): +class RepoDetailsPagerAdapter(fm: FragmentManager, owner: String, repoName: String): FragmentPagerAdapter(fm) { + val owner = owner + val repoName = repoName + override fun getCount(): Int { return 5 } override fun getItem(position: Int): Fragment { - return when(position) { + val bundle = Bundle() + bundle.putString("OWNER", owner) + bundle.putString("REPONAME", repoName) + + var fragment = when(position) { 0 -> PullRequestsFragment() 1 -> IssuesFragment() 2 -> CommitsFragment() @@ -21,6 +29,10 @@ class RepoDetailsPagerAdapter(fm: FragmentManager): else -> PullRequestsFragment() } + + fragment.arguments = bundle + + return fragment } override fun getPageTitle(position: Int): CharSequence? { diff --git a/app/src/main/res/layout/activity_issues_list.xml b/app/src/main/res/layout/activity_issues_list.xml index 9c199fd..768e678 100644 --- a/app/src/main/res/layout/activity_issues_list.xml +++ b/app/src/main/res/layout/activity_issues_list.xml @@ -1,7 +1,9 @@ + xmlns:tools="http://schemas.android.com/tools" + android:animateLayoutChanges="true" + tools:context=".repodetails.IssuesFragment"> + android:layout_height="match_parent"> Date: Sat, 13 Apr 2019 15:55:15 -0300 Subject: [PATCH 07/49] Fixing return of IssuesFragment.kt to fix the visibility of the fragment --- .../luisfernandez/github/client/repodetails/IssuesFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt index bf85fb3..caab457 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt @@ -44,7 +44,7 @@ class IssuesFragment : Fragment(), IssueListView { viewModel.loadIssueList(owner, repoName) - return inflater.inflate(R.layout.activity_issues_list, container, false) + return rootView } From ba86bf2e652eb33b5c9bd0d48f394079d6f0e3f4 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Sat, 13 Apr 2019 16:00:41 -0300 Subject: [PATCH 08/49] Removing toolbar from activity_issues_list (that will be the fragment_issues_list) --- app/src/main/res/layout/activity_issues_list.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/app/src/main/res/layout/activity_issues_list.xml b/app/src/main/res/layout/activity_issues_list.xml index 768e678..6b90446 100644 --- a/app/src/main/res/layout/activity_issues_list.xml +++ b/app/src/main/res/layout/activity_issues_list.xml @@ -5,14 +5,6 @@ android:animateLayoutChanges="true" tools:context=".repodetails.IssuesFragment"> - - Date: Sat, 13 Apr 2019 16:08:24 -0300 Subject: [PATCH 09/49] Renaming IssuesFragment to IssuesListFragment and activity_issues_list to fragment_issues_list --- .../github/client/issuelist/IssueListActivity.kt | 2 +- .../{IssuesFragment.kt => IssuesListFragment.kt} | 6 +++--- .../github/client/repodetails/RepoDetailsPagerAdapter.kt | 2 +- .../{activity_issues_list.xml => fragment_issues_list.xml} | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename app/src/main/java/br/com/luisfernandez/github/client/repodetails/{IssuesFragment.kt => IssuesListFragment.kt} (95%) rename app/src/main/res/layout/{activity_issues_list.xml => fragment_issues_list.xml} (93%) 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/issuelist/IssueListActivity.kt index eab0573..0ac81b4 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListActivity.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListActivity.kt @@ -20,7 +20,7 @@ import org.androidannotations.annotations.Extra import org.koin.android.viewmodel.ext.android.viewModel @SuppressLint("Registered") -@EActivity(R.layout.activity_issues_list) +@EActivity(R.layout.fragment_issues_list) class IssueListActivity : AppCompatActivity(), IssueListView { @Extra diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesListFragment.kt similarity index 95% rename from app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesListFragment.kt index caab457..9be3c45 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesListFragment.kt @@ -17,13 +17,13 @@ import br.com.luisfernandez.github.client.issuelist.IssueListAdapter import br.com.luisfernandez.github.client.issuelist.IssueListView import br.com.luisfernandez.github.client.issuelist.IssueListViewModel import br.com.luisfernandez.github.client.pojo.IssueResponse -import kotlinx.android.synthetic.main.activity_issues_list.* +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.koin.android.viewmodel.ext.android.viewModel -class IssuesFragment : Fragment(), IssueListView { +class IssuesListFragment : Fragment(), IssueListView { lateinit var owner: String lateinit var repoName: String @@ -31,7 +31,7 @@ class IssuesFragment : Fragment(), IssueListView { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val rootView = inflater.inflate(R.layout.activity_issues_list, container, false) + val rootView = inflater.inflate(R.layout.fragment_issues_list, container, false) val recyclerView = rootView.findViewById(R.id.recyclerView) as RecyclerView 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 index a4fc5c7..b1f67df 100644 --- 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 @@ -22,7 +22,7 @@ class RepoDetailsPagerAdapter(fm: FragmentManager, owner: String, repoName: Stri var fragment = when(position) { 0 -> PullRequestsFragment() - 1 -> IssuesFragment() + 1 -> IssuesListFragment() 2 -> CommitsFragment() 3 -> CollaboratorsFragment() 4 -> BranchesFragment() diff --git a/app/src/main/res/layout/activity_issues_list.xml b/app/src/main/res/layout/fragment_issues_list.xml similarity index 93% rename from app/src/main/res/layout/activity_issues_list.xml rename to app/src/main/res/layout/fragment_issues_list.xml index 6b90446..796314b 100644 --- a/app/src/main/res/layout/activity_issues_list.xml +++ b/app/src/main/res/layout/fragment_issues_list.xml @@ -3,7 +3,7 @@ android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" android:animateLayoutChanges="true" - tools:context=".repodetails.IssuesFragment"> + tools:context=".repodetails.IssuesListFragment"> Date: Sat, 13 Apr 2019 16:17:51 -0300 Subject: [PATCH 10/49] Removing access to IssueListActivity and access function of PullRequestActivity --- .../client/repolist/RepoListActivity.kt | 28 +------------------ .../github/client/repolist/RepoListAdapter.kt | 7 +---- 2 files changed, 2 insertions(+), 33 deletions(-) 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 d458201..b7e4f07 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,7 +12,6 @@ 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_ @@ -121,8 +120,7 @@ class RepoListActivity : AppCompatActivity(), RepoListView { private fun getRepoListAdapter(): RepoListAdapter { return RepoListAdapter( getOnItemClickListener(), - getOnLoadMoreContentClickListener(), - getOnIssueClickListener() + getOnLoadMoreContentClickListener() ) } @@ -134,14 +132,6 @@ class RepoListActivity : AppCompatActivity(), RepoListView { } } - private fun getOnIssueClickListener(): OnItemClickListener { - return object : OnItemClickListener { - override fun onItemClick(type: Repo) { - goToIssueListActivity(type) - } - } - } - private fun getOnLoadMoreContentClickListener(): OnItemClickListener { return object : OnItemClickListener { override fun onItemClick(type: String) { @@ -150,22 +140,6 @@ 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_ - .intent(this@RepoListActivity) - .owner(type.owner.login) - .repoName(type.name) - .start() - } - private fun goToRepoDetailsActivity(type: Repo) { RepoDetailsActivity_ .intent(this@RepoListActivity) 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 From 83586b6de7c2e0ec1b714fa61f96a59e8c35aad2 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Sat, 13 Apr 2019 16:30:00 -0300 Subject: [PATCH 11/49] Optimizing imports from RepoListActivity --- .../luisfernandez/github/client/repolist/RepoListActivity.kt | 2 -- 1 file changed, 2 deletions(-) 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 b7e4f07..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 @@ -13,7 +13,6 @@ 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.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 @@ -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 From e52f25079c3554be72ab9f0882b6f646888f07b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Mon, 15 Apr 2019 11:45:35 -0300 Subject: [PATCH 12/49] Removing not used fragment. --- app/src/main/res/layout/fragment_issues.xml | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 app/src/main/res/layout/fragment_issues.xml diff --git a/app/src/main/res/layout/fragment_issues.xml b/app/src/main/res/layout/fragment_issues.xml deleted file mode 100644 index 1f212c6..0000000 --- a/app/src/main/res/layout/fragment_issues.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file From c21643afc827407055569604bcb177e62477f110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Wed, 17 Apr 2019 15:54:47 -0300 Subject: [PATCH 13/49] Renaming TabLayout and ViewPager components --- .../github/client/repodetails/RepoDetailsActivity.kt | 4 ++-- app/src/main/res/layout/activity_repo_details.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) 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 index 78577b9..7bc26a7 100644 --- 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 @@ -23,9 +23,9 @@ class RepoDetailsActivity : AppCompatActivity() { this.configToolbar() val fragmentAdapter = RepoDetailsPagerAdapter(supportFragmentManager, owner, repoName) - repo_detail_viewpager.adapter = fragmentAdapter + viewPagerRepoDetail.adapter = fragmentAdapter - repo_detail_tablayout.setupWithViewPager(repo_detail_viewpager) + tabLayoutRepoDetail.setupWithViewPager(viewPagerRepoDetail) } private fun configToolbar() { diff --git a/app/src/main/res/layout/activity_repo_details.xml b/app/src/main/res/layout/activity_repo_details.xml index 54000b9..46f8ff9 100644 --- a/app/src/main/res/layout/activity_repo_details.xml +++ b/app/src/main/res/layout/activity_repo_details.xml @@ -14,17 +14,17 @@ android:theme="@style/AppTheme.AppBarOverlay" /> + android:layout_below="@+id/tabLayoutRepoDetail"/> \ No newline at end of file From 20a08e755218d6a2f116cc00cde056e7faf85c79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Wed, 17 Apr 2019 16:23:21 -0300 Subject: [PATCH 14/49] Tranferring titles to string resources and getting them by application context --- .../client/repodetails/RepoDetailsActivity.kt | 2 +- .../repodetails/RepoDetailsPagerAdapter.kt | 16 +++++++++------- app/src/main/res/values/strings.xml | 5 +++++ 3 files changed, 15 insertions(+), 8 deletions(-) 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 index 7bc26a7..61fcfbe 100644 --- 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 @@ -22,7 +22,7 @@ class RepoDetailsActivity : AppCompatActivity() { fun afterViews() { this.configToolbar() - val fragmentAdapter = RepoDetailsPagerAdapter(supportFragmentManager, owner, repoName) + val fragmentAdapter = RepoDetailsPagerAdapter(this, supportFragmentManager, owner, repoName) viewPagerRepoDetail.adapter = fragmentAdapter tabLayoutRepoDetail.setupWithViewPager(viewPagerRepoDetail) 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 index b1f67df..39429de 100644 --- 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 @@ -1,11 +1,13 @@ package br.com.luisfernandez.github.client.repodetails +import android.content.Context import android.support.v4.app.Fragment import android.support.v4.app.FragmentManager import android.support.v4.app.FragmentPagerAdapter import android.os.Bundle +import br.com.luisfernandez.github.client.R -class RepoDetailsPagerAdapter(fm: FragmentManager, owner: String, repoName: String): +class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, owner: String, repoName: String): FragmentPagerAdapter(fm) { val owner = owner @@ -37,13 +39,13 @@ class RepoDetailsPagerAdapter(fm: FragmentManager, owner: String, repoName: Stri override fun getPageTitle(position: Int): CharSequence? { return when(position){ - 0 -> "PullRequests" - 1 -> "Issues" - 2 -> "Commits" - 3 -> "Collaborators" - 4 -> "Branches" + 0 -> context.getString(R.string.titlePullRequestsTab) + 1 -> context.getString(R.string.titleIssuesTab) + 2 -> context.getString(R.string.titleCommitsTab) + 3 -> context.getString(R.string.titleCollaboratorsTab) + 4 -> context.getString(R.string.titleBranchesTab) - else -> "PullRequests" + else -> context.getString(R.string.titlePullRequestsTab) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2781954..5bd0e2b 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 + Collaborators + Branches From 4384a55723594f6ab4e8ed72f8310c69bce43776 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Wed, 17 Apr 2019 17:11:21 -0300 Subject: [PATCH 15/49] Creating companion object to store constants on RepoDetailsPagerAdapter. Using OWNER and REPONAME as constants --- .../github/client/repodetails/IssuesListFragment.kt | 6 ++++-- .../github/client/repodetails/RepoDetailsPagerAdapter.kt | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesListFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesListFragment.kt index 9be3c45..a0d3893 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesListFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesListFragment.kt @@ -17,6 +17,8 @@ import br.com.luisfernandez.github.client.issuelist.IssueListAdapter import br.com.luisfernandez.github.client.issuelist.IssueListView import br.com.luisfernandez.github.client.issuelist.IssueListViewModel import br.com.luisfernandez.github.client.pojo.IssueResponse +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.* @@ -49,8 +51,8 @@ class IssuesListFragment : Fragment(), IssueListView { } private fun setupArguments() { - owner = arguments!!.getString("OWNER") - repoName = arguments!!.getString("REPONAME") + owner = arguments!!.getString(OWNER) + repoName = arguments!!.getString(REPONAME) } private fun setupViewModel() { 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 index 39429de..b6b9314 100644 --- 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 @@ -10,6 +10,11 @@ import br.com.luisfernandez.github.client.R 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 @@ -19,8 +24,8 @@ class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, override fun getItem(position: Int): Fragment { val bundle = Bundle() - bundle.putString("OWNER", owner) - bundle.putString("REPONAME", repoName) + bundle.putString(OWNER, owner) + bundle.putString(REPONAME, repoName) var fragment = when(position) { 0 -> PullRequestsFragment() From a434c13e698625568f2e641cf84613228514e264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 12:22:55 -0300 Subject: [PATCH 16/49] Moving packages from parent package to repodetails package. --- .../luisfernandez/github/client/koin/ModelModule.kt | 12 ++++++------ .../github/client/koin/PresenterModule.kt | 8 ++++---- .../github/client/koin/ViewModelModule.kt | 8 ++++---- .../client/pullrequest/PullRequestPresenter.kt | 9 --------- .../client/repodetails/RepoDetailsPagerAdapter.kt | 1 + .../{ => repodetails}/issuelist/IssueListActivity.kt | 4 ++-- .../{ => repodetails}/issuelist/IssueListAdapter.kt | 2 +- .../{ => repodetails}/issuelist/IssueListModel.kt | 2 +- .../issuelist/IssueListModelImpl.kt | 2 +- .../{ => repodetails}/issuelist/IssueListView.kt | 2 +- .../issuelist/IssueListViewModel.kt | 2 +- .../{ => issuelist}/IssuesListFragment.kt | 5 +---- .../pullrequest/PullRequestListActivity.kt | 10 +++++----- .../pullrequest/PullRequestListAdapter.kt | 10 +++++----- .../pullrequest/PullRequestListView.kt | 2 +- .../pullrequest/PullRequestModel.kt | 2 +- .../pullrequest/PullRequestModelImpl.kt | 4 ++-- .../repodetails/pullrequest/PullRequestPresenter.kt | 9 +++++++++ .../pullrequest/PullRequestPresenterImpl.kt | 10 +++++----- .../pullrequest/PullRequestViewModel.kt | 4 ++-- app/src/main/res/layout/fragment_issues_list.xml | 2 +- 21 files changed, 54 insertions(+), 56 deletions(-) delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestPresenter.kt rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/issuelist/IssueListActivity.kt (96%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/issuelist/IssueListAdapter.kt (96%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/issuelist/IssueListModel.kt (79%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/issuelist/IssueListModelImpl.kt (88%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/issuelist/IssueListView.kt (83%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/issuelist/IssueListViewModel.kt (95%) rename app/src/main/java/br/com/luisfernandez/github/client/repodetails/{ => issuelist}/IssuesListFragment.kt (93%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/pullrequest/PullRequestListActivity.kt (89%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/pullrequest/PullRequestListAdapter.kt (75%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/pullrequest/PullRequestListView.kt (83%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/pullrequest/PullRequestModel.kt (80%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/pullrequest/PullRequestModelImpl.kt (78%) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenter.kt rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/pullrequest/PullRequestPresenterImpl.kt (70%) rename app/src/main/java/br/com/luisfernandez/github/client/{ => repodetails}/pullrequest/PullRequestViewModel.kt (88%) 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..2722a39 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,9 @@ 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.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 @@ -16,8 +16,8 @@ val modelModule = module { ) } - single { - PullRequestModelImpl( + single { + br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestModelImpl( get() ) } 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..ddb3e74 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,7 @@ 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.repodetails.pullrequest.PullRequestPresenter +import br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestPresenterImpl import br.com.luisfernandez.github.client.repolist.RepoListPresenter import br.com.luisfernandez.github.client.repolist.RepoListPresenterImpl import org.koin.dsl.module.module @@ -11,7 +11,7 @@ val presenterModule = module { RepoListPresenterImpl(get()) } - single { - PullRequestPresenterImpl(get()) + single { + br.com.luisfernandez.github.client.repodetails.pullrequest.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..246ec37 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,8 @@ 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.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 @@ -16,8 +16,8 @@ val viewModelModule = module { ) } - viewModel { - PullRequestViewModel( + viewModel { + br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestViewModel( get() ) } 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/repodetails/RepoDetailsPagerAdapter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/RepoDetailsPagerAdapter.kt index b6b9314..7909954 100644 --- 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 @@ -6,6 +6,7 @@ import android.support.v4.app.FragmentManager import android.support.v4.app.FragmentPagerAdapter import android.os.Bundle import br.com.luisfernandez.github.client.R +import br.com.luisfernandez.github.client.repodetails.issuelist.IssuesListFragment class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, owner: String, repoName: String): FragmentPagerAdapter(fm) { 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/IssueListActivity.kt similarity index 96% 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/IssueListActivity.kt index 0ac81b4..977b849 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/IssueListActivity.kt @@ -1,4 +1,4 @@ -package br.com.luisfernandez.github.client.issuelist +package br.com.luisfernandez.github.client.repodetails.issuelist import android.annotation.SuppressLint import android.arch.lifecycle.Observer @@ -21,7 +21,7 @@ import org.koin.android.viewmodel.ext.android.viewModel @SuppressLint("Registered") @EActivity(R.layout.fragment_issues_list) -class IssueListActivity : AppCompatActivity(), IssueListView { +class IssueListActivity : AppCompatActivity(), IssueListView { @Extra lateinit var owner: String 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/IssueListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListView.kt similarity index 83% rename from app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListView.kt rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListView.kt index 6ddda1a..bf9c886 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/issuelist/IssueListView.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListView.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.model.GitHubErrorBody import br.com.luisfernandez.github.client.mvp.LoadContentView 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/repodetails/IssuesListFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssuesListFragment.kt similarity index 93% rename from app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesListFragment.kt rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssuesListFragment.kt index a0d3893..8b64d56 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/IssuesListFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssuesListFragment.kt @@ -1,4 +1,4 @@ -package br.com.luisfernandez.github.client.repodetails +package br.com.luisfernandez.github.client.repodetails.issuelist import android.arch.lifecycle.Observer import android.os.Bundle @@ -13,9 +13,6 @@ 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.IssueListAdapter -import br.com.luisfernandez.github.client.issuelist.IssueListView -import br.com.luisfernandez.github.client.issuelist.IssueListViewModel import br.com.luisfernandez.github.client.pojo.IssueResponse import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.OWNER import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.REPONAME 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/PullRequestListActivity.kt similarity index 89% 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/PullRequestListActivity.kt index e54874d..2df77f8 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/PullRequestListActivity.kt @@ -1,4 +1,4 @@ -package br.com.luisfernandez.github.client.pullrequest +package br.com.luisfernandez.github.client.repodetails.pullrequest import android.annotation.SuppressLint import android.arch.lifecycle.Observer @@ -24,7 +24,7 @@ import org.koin.android.viewmodel.ext.android.viewModel @SuppressLint("Registered") @EActivity(R.layout.activity_pull_request_list) -class PullRequestListActivity : AppCompatActivity(), PullRequestListView { +class PullRequestListActivity : AppCompatActivity(), br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListView { @Extra lateinit var owner: String @@ -32,7 +32,7 @@ class PullRequestListActivity : AppCompatActivity(), PullRequestListView { @Extra lateinit var repoName: String - val viewModel by viewModel() + val viewModel by viewModel() @AfterViews fun afterViews() { @@ -124,8 +124,8 @@ class PullRequestListActivity : AppCompatActivity(), PullRequestListView { } } - private fun getPullRequestListAdapter(content: List): PullRequestListAdapter { - return PullRequestListAdapter( + private fun getPullRequestListAdapter(content: List): br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListAdapter { + return br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListAdapter( content as ArrayList, getOnItemClickListener() ) 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/PullRequestListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListView.kt similarity index 83% rename from app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListView.kt rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListView.kt index 04b620b..d431c94 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestListView.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListView.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.model.GitHubErrorBody import br.com.luisfernandez.github.client.mvp.LoadContentView 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/repodetails/pullrequest/PullRequestPresenter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenter.kt new file mode 100644 index 0000000..c169ac2 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenter.kt @@ -0,0 +1,9 @@ +package br.com.luisfernandez.github.client.repodetails.pullrequest + +/** + * Created by luisfernandez on 12/05/18. + */ +interface PullRequestPresenter { + fun loadPullRequestList(owner: String, repoName: String) + fun inject(pullRequestView: br.com.luisfernandez.github.client.repodetails.pullrequest.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/repodetails/pullrequest/PullRequestPresenterImpl.kt similarity index 70% rename from app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestPresenterImpl.kt rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenterImpl.kt index 4919f77..2f52738 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/pullrequest/PullRequestPresenterImpl.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenterImpl.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.CallbackWrapper import br.com.luisfernandez.github.client.http.model.GitHubErrorBody @@ -8,13 +8,13 @@ import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers class PullRequestPresenterImpl ( - private val pullRequestModel: PullRequestModel -) : PullRequestPresenter + private val pullRequestModel: br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestModel +) : br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestPresenter { - private lateinit var view: PullRequestListView + private lateinit var view: br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListView - override fun inject(view: PullRequestListView) { + override fun inject(view: br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListView) { this.view = view } 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/res/layout/fragment_issues_list.xml b/app/src/main/res/layout/fragment_issues_list.xml index 796314b..74f93f1 100644 --- a/app/src/main/res/layout/fragment_issues_list.xml +++ b/app/src/main/res/layout/fragment_issues_list.xml @@ -3,7 +3,7 @@ android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" android:animateLayoutChanges="true" - tools:context=".repodetails.IssuesListFragment"> + tools:context=".repodetails.issuelist.IssuesListFragment"> Date: Thu, 18 Apr 2019 12:33:16 -0300 Subject: [PATCH 17/49] Moving PullRequestList to a Fragment. --- .../repodetails/RepoDetailsPagerAdapter.kt | 5 +- .../pullrequest/PullRequestListFragment.kt | 139 ++++++++++++++++++ 2 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt 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 index 7909954..7d2987c 100644 --- 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 @@ -1,12 +1,13 @@ 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 android.os.Bundle import br.com.luisfernandez.github.client.R 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) { @@ -29,7 +30,7 @@ class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, bundle.putString(REPONAME, repoName) var fragment = when(position) { - 0 -> PullRequestsFragment() + 0 -> PullRequestListFragment() 1 -> IssuesListFragment() 2 -> CommitsFragment() 3 -> CollaboratorsFragment() diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt new file mode 100644 index 0000000..6a1a6c2 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt @@ -0,0 +1,139 @@ +package br.com.luisfernandez.github.client.repodetails.pullrequest + +import android.arch.lifecycle.Observer +import android.content.Intent +import android.net.Uri +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.GitHubErrorBody +import br.com.luisfernandez.github.client.http.model.ServerError +import br.com.luisfernandez.github.client.pojo.PullRequestResponse +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.koin.android.viewmodel.ext.android.viewModel + +class PullRequestListFragment : Fragment(), PullRequestListView { + + 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_issues_list, container, false) + + 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 { + issueList -> + showContent(issueList!!) + }) + + viewModel.serverError.observe(this, Observer { + serverError -> + handleError(serverError!!) + }) + } + + override fun handleError(serverError: ServerError) { + this.showErrorState() + + if (serverError.errorBody != null) { + textErrorMessage.text = serverError.errorBody!!.message + } else { + textErrorMessage.text = serverError.errorMessage + } + + buttonRetry.setOnClickListener { _ -> + showLoading() + viewModel.loadPullRequestList(owner, repoName) + } + } + + private fun showErrorState() { + layoutProgress.setGone() + layoutEmpty.setGone() + layoutError.setVisible() + recyclerView.setGone() + } + + override fun showLoading() { + layoutProgress.setVisible() + layoutEmpty.setGone() + layoutError.setGone() + recyclerView.setGone() + } + + override fun showEmpty() { + layoutProgress.setGone() + layoutEmpty.setVisible() + layoutError.setGone() + recyclerView.setGone() + } + + override fun showContent(content: List) { + if (content.isEmpty()) { + showEmpty() + } else { + layoutProgress.setGone() + layoutEmpty.setGone() + layoutError.setGone() + recyclerView.setVisible() + + recyclerView.adapter = this.getPullRequestListAdapter(content) + } + } + + private fun getPullRequestListAdapter(content: List): PullRequestListAdapter { + return PullRequestListAdapter( + content as ArrayList, + getOnItemClickListener() + ) + } + + private fun getOnItemClickListener(): OnItemClickListener { + return object : OnItemClickListener { + override fun onItemClick(type: PullRequestResponse) { + openOnBrowser(type.htmlUrl) + } + } + } + + private fun openOnBrowser(url: String) { + val intent = Intent(Intent.ACTION_VIEW) + intent.data = Uri.parse(url) + startActivity(intent) + } +} From 2b93ca6fb5ca82f62040dd00fa27e3a0b6477e9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 13:02:10 -0300 Subject: [PATCH 18/49] Removing unecessary files. --- .../github/client/koin/PresenterModule.kt | 6 - .../issuelist/IssueListActivity.kt | 129 --------------- .../pullrequest/PullRequestListActivity.kt | 147 ------------------ .../pullrequest/PullRequestPresenter.kt | 9 -- .../pullrequest/PullRequestPresenterImpl.kt | 36 ----- 5 files changed, 327 deletions(-) delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListActivity.kt delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListActivity.kt delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenter.kt delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenterImpl.kt 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 ddb3e74..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.repodetails.pullrequest.PullRequestPresenter -import br.com.luisfernandez.github.client.repodetails.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 { - br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestPresenterImpl(get()) - } } diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListActivity.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListActivity.kt deleted file mode 100644 index 977b849..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -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.support.v7.widget.LinearLayoutManager -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 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.fragment_issues_list) -class IssueListActivity : AppCompatActivity(), IssueListView { - - @Extra - lateinit var owner: String - - @Extra - lateinit var repoName: String - - val viewModel by viewModel() - - @AfterViews - fun afterViews() { - this.configToolbar() - - val layoutManager = LinearLayoutManager(this) - - recyclerView.layoutManager = layoutManager - recyclerView.setHasFixedSize(true) - - setupViewModel() - - viewModel.loadIssueList(owner, repoName) - } - - private fun setupViewModel() { - viewModel.issueList.observe(this, Observer { - issueList -> - showContent(issueList!!) - }) - - viewModel.serverError.observe(this, Observer { - serverError -> - handleError(serverError!!) - }) - } - - 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) { - this.showErrorState() - - if (serverError.errorBody != null) { - textErrorMessage.text = serverError.errorBody!!.message - } else { - textErrorMessage.text = serverError.errorMessage - } - - buttonRetry.setOnClickListener { _ -> - showLoading() - viewModel.loadIssueList(owner, repoName) - } - } - - private fun showErrorState() { - layoutProgress.setGone() - layoutEmpty.setGone() - layoutError.setVisible() - recyclerView.setGone() - } - - override fun showLoading() { - layoutProgress.setVisible() - layoutEmpty.setGone() - layoutError.setGone() - recyclerView.setGone() - } - - override fun showEmpty() { - layoutProgress.setGone() - layoutEmpty.setVisible() - layoutError.setGone() - recyclerView.setGone() - } - - override fun showContent(content: List) { - if (content.isEmpty()) { - showEmpty() - } else { - layoutProgress.setGone() - layoutEmpty.setGone() - layoutError.setGone() - recyclerView.setVisible() - - recyclerView.adapter = this.getIssueListAdapter(content) - } - } - - private fun getIssueListAdapter(content: List): IssueListAdapter { - return IssueListAdapter( - content as ArrayList - ) - } -} diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListActivity.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListActivity.kt deleted file mode 100644 index 2df77f8..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListActivity.kt +++ /dev/null @@ -1,147 +0,0 @@ -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.support.v7.widget.LinearLayoutManager -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.pojo.PullRequestResponse -import kotlinx.android.synthetic.main.activity_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(), br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListView { - - @Extra - lateinit var owner: String - - @Extra - lateinit var repoName: String - - val viewModel by viewModel() - - @AfterViews - fun afterViews() { - this.configToolbar() - - val layoutManager = LinearLayoutManager(this) - - recyclerView.layoutManager = layoutManager - recyclerView.setHasFixedSize(true) - - setupViewModel() - - viewModel.loadPullRequestList(owner, repoName) - } - - private fun setupViewModel() { - viewModel.listPullRequest.observe(this, Observer { - listPullRequest -> - showContent(listPullRequest!!) - }) - - viewModel.serverError.observe(this, Observer { - serverError -> - handleError(serverError!!) - }) - } - - 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) { - this.showErrorState() - - if (serverError.errorBody != null) { - textErrorMessage.text = serverError.errorBody!!.message - } else { - textErrorMessage.text = serverError.errorMessage - } - - buttonRetry.setOnClickListener { _ -> - showLoading() - viewModel.loadPullRequestList(owner, repoName) - } - } - - private fun showErrorState() { - layoutProgress.setGone() - layoutEmpty.setGone() - layoutError.setVisible() - recyclerView.setGone() - } - - override fun showLoading() { - layoutProgress.setVisible() - layoutEmpty.setGone() - layoutError.setGone() - recyclerView.setGone() - } - - override fun showEmpty() { - layoutProgress.setGone() - layoutEmpty.setVisible() - layoutError.setGone() - recyclerView.setGone() - } - - override fun showContent(content: List) { - if (content.isEmpty()) { - showEmpty() - } else { - layoutProgress.setGone() - layoutEmpty.setGone() - layoutError.setGone() - recyclerView.setVisible() - - recyclerView.adapter = this.getPullRequestListAdapter(content) - } - } - - private fun getPullRequestListAdapter(content: List): br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListAdapter { - return br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListAdapter( - content as ArrayList, - getOnItemClickListener() - ) - } - - private fun getOnItemClickListener(): OnItemClickListener { - return object : OnItemClickListener { - override fun onItemClick(type: PullRequestResponse) { - openOnBrowser(type.htmlUrl) - } - } - } - - private fun openOnBrowser(url: String) { - val intent = Intent(Intent.ACTION_VIEW) - intent.data = Uri.parse(url) - startActivity(intent) - } -} diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenter.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenter.kt deleted file mode 100644 index c169ac2..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenter.kt +++ /dev/null @@ -1,9 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails.pullrequest - -/** - * Created by luisfernandez on 12/05/18. - */ -interface PullRequestPresenter { - fun loadPullRequestList(owner: String, repoName: String) - fun inject(pullRequestView: br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListView) -} \ No newline at end of file diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenterImpl.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenterImpl.kt deleted file mode 100644 index 2f52738..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestPresenterImpl.kt +++ /dev/null @@ -1,36 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails.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: br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestModel -) : br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestPresenter -{ - - private lateinit var view: br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListView - - override fun inject(view: br.com.luisfernandez.github.client.repodetails.pullrequest.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 From 6a9a77788a8095e48516054c3886359e1e87f41e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 13:08:37 -0300 Subject: [PATCH 19/49] Renaming layout of fragment to fragment_pull_request_list.xml. --- .../client/repodetails/PullRequestsFragment.kt | 2 +- .../pullrequest/PullRequestListFragment.kt | 2 +- ...st_list.xml => fragment_pull_request_list.xml} | 8 -------- .../main/res/layout/fragment_pull_requests.xml | 15 --------------- 4 files changed, 2 insertions(+), 25 deletions(-) rename app/src/main/res/layout/{activity_pull_request_list.xml => fragment_pull_request_list.xml} (70%) delete mode 100644 app/src/main/res/layout/fragment_pull_requests.xml diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt index 273232f..20762fa 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt @@ -14,7 +14,7 @@ class PullRequestsFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_pull_requests, container, false) + return inflater.inflate(R.layout.fragment_pull_request_list, container, false) } diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt index 6a1a6c2..259159c 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt @@ -33,7 +33,7 @@ class PullRequestListFragment : Fragment(), PullRequestListView { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - val rootView = inflater.inflate(R.layout.fragment_issues_list, container, false) + val rootView = inflater.inflate(R.layout.fragment_pull_request_list, container, false) val recyclerView = rootView.findViewById(R.id.recyclerView) as RecyclerView diff --git a/app/src/main/res/layout/activity_pull_request_list.xml b/app/src/main/res/layout/fragment_pull_request_list.xml similarity index 70% rename from app/src/main/res/layout/activity_pull_request_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_pull_request_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 From f9e1472dd5cf4582152186afebf42f46f8c6d384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 13:11:12 -0300 Subject: [PATCH 20/49] Deleting PullRequestsFragment and fixing the calling to PullRequestListFragment on RepoDetailsPagerAdapter. --- .../repodetails/PullRequestsFragment.kt | 21 ------------------- .../repodetails/RepoDetailsPagerAdapter.kt | 2 +- 2 files changed, 1 insertion(+), 22 deletions(-) delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt deleted file mode 100644 index 20762fa..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/PullRequestsFragment.kt +++ /dev/null @@ -1,21 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails - - -import android.os.Bundle -import android.support.v4.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup - -import br.com.luisfernandez.github.client.R - -class PullRequestsFragment : Fragment() { - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { - - return inflater.inflate(R.layout.fragment_pull_request_list, container, false) - } - - -} 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 index 7d2987c..0ea97da 100644 --- 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 @@ -36,7 +36,7 @@ class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, 3 -> CollaboratorsFragment() 4 -> BranchesFragment() - else -> PullRequestsFragment() + else -> PullRequestListFragment() } fragment.arguments = bundle From abb547b178563164c6a0322e7da1e86b875dedfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 14:23:58 -0300 Subject: [PATCH 21/49] Adding pojo to contributor response. --- .../github/client/pojo/ContributorResponse.kt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/pojo/ContributorResponse.kt 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..13154ca --- /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 user: String, + @SerializedName("avatar_url") val title: String, + @SerializedName("contributions") val body: Int +) \ No newline at end of file From 2661a3ee3fb554e3c04bdaab1e8528c1329be743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 14:26:39 -0300 Subject: [PATCH 22/49] Adding endpoint to get contributors list on GitHubService --- .../com/luisfernandez/github/client/http/GitHubService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java b/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java index 85314b1..7240f76 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java +++ b/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java @@ -3,6 +3,7 @@ import java.util.List; import br.com.luisfernandez.github.client.http.annotations.URL; +import br.com.luisfernandez.github.client.pojo.ContributorResponse; import br.com.luisfernandez.github.client.pojo.IssueResponse; import br.com.luisfernandez.github.client.pojo.PullRequestResponse; import br.com.luisfernandez.github.client.pojo.RepoListResponse; @@ -25,4 +26,7 @@ public interface GitHubService @GET("/repos/{owner}/{repoName}/issues") Observable> listIssues(@Path("owner") String owner, @Path("repoName") String repoName); + + @GET("/repos/{owner}/{repoName}/contributors") + Observable> listContributors(@Path("owner") String owner, @Path("repoName") String repoName); } From 4baa505a21ff5ad26812e62fa13b604962b761a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 14:29:40 -0300 Subject: [PATCH 23/49] Adding model to get contributors list from GitHubService --- .../contributorslist/ContributorsListModel.kt | 11 +++++++++++ .../ContributorsListModelImpl.kt | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListModel.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListModelImpl.kt 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..5078a20 --- /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 loadContributorList(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..204cd36 --- /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 loadContributorList(owner: String, repoName: String): Observable> { + return gitHubService + .listContributors(owner, repoName) + .map { contributorList -> + contributorList + } + } +} \ No newline at end of file From 445c63aea55b341dff7f5957dbfbc4dee3d25e6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 14:39:29 -0300 Subject: [PATCH 24/49] Renaming loadContributorList to loadContributorsList --- .../repodetails/contributorslist/ContributorsListModel.kt | 2 +- .../repodetails/contributorslist/ContributorsListModelImpl.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 index 5078a20..b12323e 100644 --- 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 @@ -7,5 +7,5 @@ import io.reactivex.Observable * Created by luisfernandez on 12/05/18. */ interface ContributorsListModel { - fun loadContributorList(owner: String, repoName: String): Observable> + 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 index 204cd36..75c01bf 100644 --- 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 @@ -8,7 +8,7 @@ class ContributorsListModelImpl ( private val gitHubService: GitHubService ) : ContributorsListModel { - override fun loadContributorList(owner: String, repoName: String): Observable> { + override fun loadContributorsList(owner: String, repoName: String): Observable> { return gitHubService .listContributors(owner, repoName) .map { contributorList -> From 44370d7a6d7abf2ce233f20d4046060295bf07b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 14:40:20 -0300 Subject: [PATCH 25/49] Adding ContributorsListViewModel to the project --- .../ContributorsListViewModel.kt | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListViewModel.kt 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 From e6752799dcb1b2c490d03e33bf17fb3c19633808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 14:46:41 -0300 Subject: [PATCH 26/49] Renaming XML fragment_collaborators to fragment_contributors_list and adding its content --- .../repodetails/CollaboratorsFragment.kt | 2 +- .../res/layout/fragment_collaborators.xml | 15 ----------- .../res/layout/fragment_contributors_list.xml | 27 +++++++++++++++++++ 3 files changed, 28 insertions(+), 16 deletions(-) delete mode 100644 app/src/main/res/layout/fragment_collaborators.xml create mode 100644 app/src/main/res/layout/fragment_contributors_list.xml diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt index 22b6fab..ddcc5f4 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt @@ -14,7 +14,7 @@ class CollaboratorsFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_collaborators, container, false) + return inflater.inflate(R.layout.fragment_contributors_list, container, false) } diff --git a/app/src/main/res/layout/fragment_collaborators.xml b/app/src/main/res/layout/fragment_collaborators.xml deleted file mode 100644 index 6f5a920..0000000 --- a/app/src/main/res/layout/fragment_collaborators.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ 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..4f32352 --- /dev/null +++ b/app/src/main/res/layout/fragment_contributors_list.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + \ No newline at end of file From 4a5161e36f2a5e948884f7b22f57ce6aa3f6e4c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 15:29:09 -0300 Subject: [PATCH 27/49] Moving CollaboratorsFragment to its package (repodetails/contributorslist) --- .../github/client/repodetails/RepoDetailsPagerAdapter.kt | 1 + .../repodetails/{ => contributorslist}/CollaboratorsFragment.kt | 2 +- app/src/main/res/layout/fragment_contributors_list.xml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) rename app/src/main/java/br/com/luisfernandez/github/client/repodetails/{ => contributorslist}/CollaboratorsFragment.kt (87%) 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 index 0ea97da..684834d 100644 --- 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 @@ -6,6 +6,7 @@ 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.contributorslist.CollaboratorsFragment import br.com.luisfernandez.github.client.repodetails.issuelist.IssuesListFragment import br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestListFragment diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/CollaboratorsFragment.kt similarity index 87% rename from app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/CollaboratorsFragment.kt index ddcc5f4..c982b3d 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CollaboratorsFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/CollaboratorsFragment.kt @@ -1,4 +1,4 @@ -package br.com.luisfernandez.github.client.repodetails +package br.com.luisfernandez.github.client.repodetails.contributorslist import android.os.Bundle diff --git a/app/src/main/res/layout/fragment_contributors_list.xml b/app/src/main/res/layout/fragment_contributors_list.xml index 4f32352..7b044ec 100644 --- a/app/src/main/res/layout/fragment_contributors_list.xml +++ b/app/src/main/res/layout/fragment_contributors_list.xml @@ -3,7 +3,7 @@ android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" android:animateLayoutChanges="true" - tools:context=".repodetails.CollaboratorsFragment"> + tools:context=".repodetails.contributorslist.CollaboratorsFragment"> Date: Thu, 18 Apr 2019 15:31:27 -0300 Subject: [PATCH 28/49] Renaming CollaboratorsFragment to CollaboratorsListFragment --- .../github/client/repodetails/RepoDetailsPagerAdapter.kt | 4 ++-- .../{CollaboratorsFragment.kt => ContributorsListFragment.kt} | 2 +- app/src/main/res/layout/fragment_contributors_list.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/{CollaboratorsFragment.kt => ContributorsListFragment.kt} (91%) 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 index 684834d..c350ba0 100644 --- 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 @@ -6,7 +6,7 @@ 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.contributorslist.CollaboratorsFragment +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 @@ -34,7 +34,7 @@ class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, 0 -> PullRequestListFragment() 1 -> IssuesListFragment() 2 -> CommitsFragment() - 3 -> CollaboratorsFragment() + 3 -> ContributorsListFragment() 4 -> BranchesFragment() else -> PullRequestListFragment() diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/CollaboratorsFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListFragment.kt similarity index 91% rename from app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/CollaboratorsFragment.kt rename to app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListFragment.kt index c982b3d..0ac9e54 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/CollaboratorsFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListFragment.kt @@ -9,7 +9,7 @@ import android.view.ViewGroup import br.com.luisfernandez.github.client.R -class CollaboratorsFragment : Fragment() { +class ContributorsListFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { diff --git a/app/src/main/res/layout/fragment_contributors_list.xml b/app/src/main/res/layout/fragment_contributors_list.xml index 7b044ec..281fa33 100644 --- a/app/src/main/res/layout/fragment_contributors_list.xml +++ b/app/src/main/res/layout/fragment_contributors_list.xml @@ -3,7 +3,7 @@ android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" android:animateLayoutChanges="true" - tools:context=".repodetails.contributorslist.CollaboratorsFragment"> + tools:context=".repodetails.contributorslist.ContributorsListFragment"> Date: Thu, 18 Apr 2019 15:36:23 -0300 Subject: [PATCH 29/49] Adding ContributorsListModel to the koin ModelModule --- .../luisfernandez/github/client/koin/ModelModule.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 2722a39..fd2b1d7 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,5 +1,7 @@ package br.com.luisfernandez.github.client.koin +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 @@ -16,8 +18,8 @@ val modelModule = module { ) } - single { - br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestModelImpl( + single { + PullRequestModelImpl( get() ) } @@ -27,4 +29,10 @@ val modelModule = module { get() ) } + + single { + ContributorsListModelImpl( + get() + ) + } } \ No newline at end of file From b9695848ae3bb1e3c8bb57a72f626423fc90fe46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 15:38:44 -0300 Subject: [PATCH 30/49] Adding ContributorsListViewModel to the koin ViewModelModule --- .../github/client/koin/ViewModelModule.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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 246ec37..a10ea56 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,6 +2,7 @@ package br.com.luisfernandez.github.client.koin +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 @@ -16,8 +17,8 @@ val viewModelModule = module { ) } - viewModel { - br.com.luisfernandez.github.client.repodetails.pullrequest.PullRequestViewModel( + viewModel { + PullRequestViewModel( get() ) } @@ -28,4 +29,10 @@ val viewModelModule = module { ) } + viewModel { + ContributorsListViewModel( + get() + ) + } + } \ No newline at end of file From d57064a432dc8ee2d6165e4c6fce3e9136de3bb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 16:04:31 -0300 Subject: [PATCH 31/49] Adding ContributorsListAdapter to the project, fixing variables from ContributorResponse and creating the item_contributors_list --- .../github/client/pojo/ContributorResponse.kt | 6 +-- .../ContributorsListAdapter.kt | 43 +++++++++++++++++ .../res/layout/item_contributors_list.xml | 46 +++++++++++++++++++ 3 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListAdapter.kt create mode 100644 app/src/main/res/layout/item_contributors_list.xml 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 index 13154ca..86d937e 100644 --- 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 @@ -3,7 +3,7 @@ package br.com.luisfernandez.github.client.pojo import com.google.gson.annotations.SerializedName data class ContributorResponse( - @SerializedName("login") val user: String, - @SerializedName("avatar_url") val title: String, - @SerializedName("contributions") val body: Int + @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/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/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 From 1db644686dbf43ce38a22febd1fbbae9f7d03eec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 16:27:21 -0300 Subject: [PATCH 32/49] Adding Fragment to contributors listing --- .../ContributorsListFragment.kt | 113 +++++++++++++++++- .../contributorslist/ContributorsListView.kt | 11 ++ 2 files changed, 118 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListView.kt 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 index 0ac9e54..28b6cec 100644 --- 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 @@ -1,21 +1,122 @@ 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.pojo.IssueResponse +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.koin.android.viewmodel.ext.android.viewModel + +class ContributorsListFragment : Fragment(), ContributorsListView { + + 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 + + } -class ContributorsListFragment : Fragment() { + 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!!) + }) + } + + override 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() + } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { + override fun showLoading() { + layoutProgress.setVisible() + layoutEmpty.setGone() + layoutError.setGone() + recyclerView.setGone() + } - return inflater.inflate(R.layout.fragment_contributors_list, container, false) + override fun showEmpty() { + layoutProgress.setGone() + layoutEmpty.setVisible() + layoutError.setGone() + recyclerView.setGone() } + override 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/ContributorsListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListView.kt new file mode 100644 index 0000000..b926755 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListView.kt @@ -0,0 +1,11 @@ +package br.com.luisfernandez.github.client.repodetails.contributorslist + +import br.com.luisfernandez.github.client.http.model.GitHubErrorBody +import br.com.luisfernandez.github.client.mvp.LoadContentView +import br.com.luisfernandez.github.client.pojo.ContributorResponse + + +/** + * Created by luisfernandez on 11/05/18. + */ +interface ContributorsListView : LoadContentView, GitHubErrorBody> \ No newline at end of file From 4226730bdc77204543d52e0b7e2092460a919c6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=CC=81liver=20Silva?= Date: Thu, 18 Apr 2019 16:32:42 -0300 Subject: [PATCH 33/49] Renaming collaborators tab and collaborators string to Contributors and titleContributorsTab, respectively --- .../github/client/repodetails/RepoDetailsPagerAdapter.kt | 2 +- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 index c350ba0..6a43d4e 100644 --- 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 @@ -50,7 +50,7 @@ class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, 0 -> context.getString(R.string.titlePullRequestsTab) 1 -> context.getString(R.string.titleIssuesTab) 2 -> context.getString(R.string.titleCommitsTab) - 3 -> context.getString(R.string.titleCollaboratorsTab) + 3 -> context.getString(R.string.titleContributorsTab) 4 -> context.getString(R.string.titleBranchesTab) else -> context.getString(R.string.titlePullRequestsTab) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5bd0e2b..fe1531d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,6 +11,6 @@ PullRequests Issues Commits - Collaborators + Contributors Branches From 1265bf5b15df11d5b693adcffaa892b358724724 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 19:06:35 -0300 Subject: [PATCH 34/49] Removing PullRequestListActivity and IssueListActivity from AndroidManifest --- app/src/main/AndroidManifest.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0e2ac4b..6b506f3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,16 +23,6 @@ - - - - Date: Mon, 22 Apr 2019 19:20:33 -0300 Subject: [PATCH 35/49] Adding Commit pojos to the project --- .../luisfernandez/github/client/pojo/commit/Commit.kt | 8 ++++++++ .../github/client/pojo/commit/CommitResponse.kt | 9 +++++++++ .../luisfernandez/github/client/pojo/commit/Committer.kt | 8 ++++++++ 3 files changed, 25 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/Commit.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/CommitResponse.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/pojo/commit/Committer.kt 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 From 01dc5e39b9e84980e9bb299af1803c4cdab935be Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 19:23:45 -0300 Subject: [PATCH 36/49] Adding endpoint to commits listing from a repository on the GitHubService --- .../com/luisfernandez/github/client/http/GitHubService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java b/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java index 7240f76..24c83c5 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java +++ b/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java @@ -3,6 +3,7 @@ import java.util.List; import br.com.luisfernandez.github.client.http.annotations.URL; +import br.com.luisfernandez.github.client.pojo.commit.CommitResponse; import br.com.luisfernandez.github.client.pojo.ContributorResponse; import br.com.luisfernandez.github.client.pojo.IssueResponse; import br.com.luisfernandez.github.client.pojo.PullRequestResponse; @@ -29,4 +30,7 @@ public interface GitHubService @GET("/repos/{owner}/{repoName}/contributors") Observable> listContributors(@Path("owner") String owner, @Path("repoName") String repoName); + + @GET("/repos/{owner}/{repoName}/commits") + Observable> listCommits(@Path("owner") String owner, @Path("repoName") String repoName); } From 1b410b473ec0143d0e81fa8ab94cae02d6a9357a Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 19:44:03 -0300 Subject: [PATCH 37/49] Adding CommitsListModel to the project --- .../github/client/koin/ModelModule.kt | 8 ++++++++ .../commitslist/CommitsListModel.kt | 11 +++++++++++ .../commitslist/CommitsListModelImpl.kt | 18 ++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListModel.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListModelImpl.kt 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 fd2b1d7..15b6241 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,5 +1,7 @@ package br.com.luisfernandez.github.client.koin +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 @@ -35,4 +37,10 @@ val modelModule = module { get() ) } + + single { + CommitsListModelImpl( + get() + ) + } } \ No newline at end of file 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 From af0bd2cf7aeb8a567c52dd54fe1c33e8b995b5a1 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 19:58:51 -0300 Subject: [PATCH 38/49] Adding CommitsListViewModel to the project --- .../github/client/koin/ViewModelModule.kt | 7 ++++ .../commitslist/CommitsListViewModel.kt | 35 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListViewModel.kt 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 a10ea56..6965eea 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,6 +2,7 @@ package br.com.luisfernandez.github.client.koin +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 @@ -35,4 +36,10 @@ val viewModelModule = module { ) } + viewModel { + CommitsListViewModel( + get() + ) + } + } \ 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 From 603ae023b5fa7ce054558ff9aa93cb02c113e894 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 20:20:14 -0300 Subject: [PATCH 39/49] Adding CommitsListAdapter to the project with the item_commit_list --- .../commitslist/CommitsListAdapter.kt | 45 +++++++++++++++ app/src/main/res/layout/item_commits_list.xml | 56 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListAdapter.kt create mode 100644 app/src/main/res/layout/item_commits_list.xml 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/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 From d6a22fd8439dade29885034e31452c48c256ce7f Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 20:36:42 -0300 Subject: [PATCH 40/49] Adding CommitsListFragment and updating the RepoDetailsPagerAdapter with the new fragment --- .../client/repodetails/CommitsFragment.kt | 21 --- .../repodetails/RepoDetailsPagerAdapter.kt | 5 +- .../commitslist/CommitsListFragment.kt | 121 ++++++++++++++++++ .../commitslist/CommitsListView.kt | 11 ++ app/src/main/res/layout/fragment_commits.xml | 15 --- .../main/res/layout/fragment_commits_list.xml | 27 ++++ 6 files changed, 162 insertions(+), 38 deletions(-) delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/CommitsFragment.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListFragment.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListView.kt delete mode 100644 app/src/main/res/layout/fragment_commits.xml create mode 100644 app/src/main/res/layout/fragment_commits_list.xml diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CommitsFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CommitsFragment.kt deleted file mode 100644 index fc7122b..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/CommitsFragment.kt +++ /dev/null @@ -1,21 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails - - -import android.os.Bundle -import android.support.v4.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup - -import br.com.luisfernandez.github.client.R - -class CommitsFragment : Fragment() { - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { - - return inflater.inflate(R.layout.fragment_commits, container, false) - } - - -} 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 index 6a43d4e..1777615 100644 --- 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 @@ -6,6 +6,7 @@ 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.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 @@ -33,7 +34,7 @@ class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, var fragment = when(position) { 0 -> PullRequestListFragment() 1 -> IssuesListFragment() - 2 -> CommitsFragment() + 2 -> CommitsListFragment() 3 -> ContributorsListFragment() 4 -> BranchesFragment() @@ -48,7 +49,7 @@ class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, override fun getPageTitle(position: Int): CharSequence? { return when(position){ 0 -> context.getString(R.string.titlePullRequestsTab) - 1 -> context.getString(R.string.titleIssuesTab) + 1-> context.getString(R.string.titleIssuesTab) 2 -> context.getString(R.string.titleCommitsTab) 3 -> context.getString(R.string.titleContributorsTab) 4 -> context.getString(R.string.titleBranchesTab) 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..eadf695 --- /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_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.koin.android.viewmodel.ext.android.viewModel + +class CommitsListFragment : Fragment(), CommitsListView { + + 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!!) + }) + } + + override 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() + } + + override fun showLoading() { + layoutProgress.setVisible() + layoutEmpty.setGone() + layoutError.setGone() + recyclerView.setGone() + } + + override fun showEmpty() { + layoutProgress.setGone() + layoutEmpty.setVisible() + layoutError.setGone() + recyclerView.setGone() + } + + override 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/CommitsListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListView.kt new file mode 100644 index 0000000..fab5715 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListView.kt @@ -0,0 +1,11 @@ +package br.com.luisfernandez.github.client.repodetails.commitslist + +import br.com.luisfernandez.github.client.http.model.GitHubErrorBody +import br.com.luisfernandez.github.client.mvp.LoadContentView +import br.com.luisfernandez.github.client.pojo.commit.CommitResponse + + +/** + * Created by luisfernandez on 11/05/18. + */ +interface CommitsListView : LoadContentView, GitHubErrorBody> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_commits.xml b/app/src/main/res/layout/fragment_commits.xml deleted file mode 100644 index 8be10b1..0000000 --- a/app/src/main/res/layout/fragment_commits.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_commits_list.xml b/app/src/main/res/layout/fragment_commits_list.xml new file mode 100644 index 0000000..ab23521 --- /dev/null +++ b/app/src/main/res/layout/fragment_commits_list.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + \ No newline at end of file From 71900a9363d6cdff88b0171b82eedd5a35e0e206 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 20:45:12 -0300 Subject: [PATCH 41/49] Limiting numbers of commit to 10 --- .../br/com/luisfernandez/github/client/http/GitHubService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java b/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java index 24c83c5..93ef54c 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java +++ b/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java @@ -31,6 +31,6 @@ public interface GitHubService @GET("/repos/{owner}/{repoName}/contributors") Observable> listContributors(@Path("owner") String owner, @Path("repoName") String repoName); - @GET("/repos/{owner}/{repoName}/commits") + @GET("/repos/{owner}/{repoName}/commits?per_page=10") Observable> listCommits(@Path("owner") String owner, @Path("repoName") String repoName); } From db81afc4450e40b9f47ed1f848c99913f13f8e58 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 21:29:16 -0300 Subject: [PATCH 42/49] Adding BranchResponse pojo to the project --- .../com/luisfernandez/github/client/pojo/BranchResponse.kt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/pojo/BranchResponse.kt 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 From 6f6dcb8e52d4563840fe28bd1cf586c67b52eaff Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 21:47:46 -0300 Subject: [PATCH 43/49] Adding endpoint to get branches from GitHubService --- .../com/luisfernandez/github/client/http/GitHubService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java b/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java index 93ef54c..0b6bb4e 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java +++ b/app/src/main/java/br/com/luisfernandez/github/client/http/GitHubService.java @@ -3,6 +3,7 @@ import java.util.List; import br.com.luisfernandez.github.client.http.annotations.URL; +import br.com.luisfernandez.github.client.pojo.BranchResponse; import br.com.luisfernandez.github.client.pojo.commit.CommitResponse; import br.com.luisfernandez.github.client.pojo.ContributorResponse; import br.com.luisfernandez.github.client.pojo.IssueResponse; @@ -33,4 +34,7 @@ public interface GitHubService @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); } From b4dfc1e8255427bf692acf0bc4d62573a635c9ec Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 21:50:29 -0300 Subject: [PATCH 44/49] Adding CommitsListModel to the project --- .../github/client/koin/ModelModule.kt | 8 ++++++++ .../brancheslist/BranchesListModel.kt | 11 +++++++++++ .../brancheslist/BranchesListModelImpl.kt | 18 ++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListModel.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListModelImpl.kt 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 15b6241..e1e0735 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 @@ -2,6 +2,8 @@ package br.com.luisfernandez.github.client.koin 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.BranchesListModel +import br.com.luisfernandez.github.client.repodetails.contributorslist.BranchesListModelImpl 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 @@ -43,4 +45,10 @@ val modelModule = module { get() ) } + + single { + BranchesListModelImpl( + get() + ) + } } \ No newline at end of file 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..ef4c357 --- /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.contributorslist + +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..31ec4d7 --- /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.contributorslist + +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 From 8977a81937d16b69932c1f50fabac3f0374e471a Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 21:55:43 -0300 Subject: [PATCH 45/49] Adding BranchesListViewModel to the project --- .../github/client/koin/ViewModelModule.kt | 7 ++++ .../brancheslist/BranchesListViewModel.kt | 36 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListViewModel.kt 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 6965eea..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,6 +2,7 @@ package br.com.luisfernandez.github.client.koin +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 @@ -42,4 +43,10 @@ val viewModelModule = module { ) } + viewModel { + BranchesListViewModel( + get() + ) + } + } \ 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..aab358e --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListViewModel.kt @@ -0,0 +1,36 @@ +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 br.com.luisfernandez.github.client.repodetails.contributorslist.BranchesListModel +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 loadContributorsList(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 From f2d0af078f017b322b0487f5d11f2de32a4a848f Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 22:06:52 -0300 Subject: [PATCH 46/49] Adding BranchesListAdapter and item_branches_list to the project --- .../brancheslist/BranchesListAdapter.kt | 38 +++++++++++++++++++ .../main/res/layout/item_branches_list.xml | 26 +++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListAdapter.kt create mode 100644 app/src/main/res/layout/item_branches_list.xml 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/res/layout/item_branches_list.xml b/app/src/main/res/layout/item_branches_list.xml new file mode 100644 index 0000000..bdc1abf --- /dev/null +++ b/app/src/main/res/layout/item_branches_list.xml @@ -0,0 +1,26 @@ + + + + + + + + + \ No newline at end of file From e39f8257483bd045afec93d40e601e704b7bbcae Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Mon, 22 Apr 2019 22:22:54 -0300 Subject: [PATCH 47/49] Adding BranchesListFragment to the project and fixing function name on the BranchesListViewModel --- .../brancheslist/BranchesListFragment.kt | 123 ++++++++++++++++++ .../brancheslist/BranchesListView.kt | 11 ++ .../brancheslist/BranchesListViewModel.kt | 2 +- .../res/layout/fragment_branches_list.xml | 27 ++++ 4 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListFragment.kt create mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListView.kt create mode 100644 app/src/main/res/layout/fragment_branches_list.xml 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..677f04f --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListFragment.kt @@ -0,0 +1,123 @@ +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.BranchResponse +import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.OWNER +import br.com.luisfernandez.github.client.repodetails.RepoDetailsPagerAdapter.Companion.REPONAME +import br.com.luisfernandez.github.client.repodetails.brancheslist.BranchesListAdapter +import br.com.luisfernandez.github.client.repodetails.brancheslist.BranchesListViewModel +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.koin.android.viewmodel.ext.android.viewModel + +class BranchesListFragment : Fragment(), BranchesListView { + + 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!!) + }) + } + + override 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() + } + + override fun showLoading() { + layoutProgress.setVisible() + layoutEmpty.setGone() + layoutError.setGone() + recyclerView.setGone() + } + + override fun showEmpty() { + layoutProgress.setGone() + layoutEmpty.setVisible() + layoutError.setGone() + recyclerView.setGone() + } + + override 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/BranchesListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListView.kt new file mode 100644 index 0000000..cc742f0 --- /dev/null +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListView.kt @@ -0,0 +1,11 @@ +package br.com.luisfernandez.github.client.repodetails.contributorslist + +import br.com.luisfernandez.github.client.http.model.GitHubErrorBody +import br.com.luisfernandez.github.client.mvp.LoadContentView +import br.com.luisfernandez.github.client.pojo.BranchResponse + + +/** + * Created by luisfernandez on 11/05/18. + */ +interface BranchesListView : LoadContentView, GitHubErrorBody> \ 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 index aab358e..74e1b2d 100644 --- 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 @@ -18,7 +18,7 @@ class BranchesListViewModel ( val branchesList = MutableLiveData>() val serverError = MutableLiveData>() - fun loadContributorsList(owner: String, repoName: String) { + fun loadBranchesList(owner: String, repoName: String) { branchesListModel .loadBranchesList(owner, repoName) .subscribeOn(Schedulers.newThread()) diff --git a/app/src/main/res/layout/fragment_branches_list.xml b/app/src/main/res/layout/fragment_branches_list.xml new file mode 100644 index 0000000..599e653 --- /dev/null +++ b/app/src/main/res/layout/fragment_branches_list.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + \ No newline at end of file From d55167e53a19d6d0954e97d28ffbaf84ade2d8f1 Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Tue, 23 Apr 2019 05:45:58 -0300 Subject: [PATCH 48/49] Refactoring to fix imports of package brancheslist, adding BranchesListFragment and fixing the interface problem from fragments implementations. All View interfaces from fragments was removed. --- .../github/client/koin/ModelModule.kt | 4 ++-- .../repodetails/RepoDetailsPagerAdapter.kt | 3 ++- .../brancheslist/BranchesListFragment.kt | 16 +++++++--------- .../brancheslist/BranchesListModel.kt | 2 +- .../brancheslist/BranchesListModelImpl.kt | 2 +- .../repodetails/brancheslist/BranchesListView.kt | 11 ----------- .../brancheslist/BranchesListViewModel.kt | 1 - .../commitslist/CommitsListFragment.kt | 12 ++++++------ .../repodetails/commitslist/CommitsListView.kt | 11 ----------- .../contributorslist/ContributorsListFragment.kt | 13 ++++++------- .../contributorslist/ContributorsListView.kt | 11 ----------- .../repodetails/issuelist/IssueListView.kt | 11 ----------- .../repodetails/issuelist/IssuesListFragment.kt | 10 +++++----- .../pullrequest/PullRequestListFragment.kt | 12 ++++++------ .../pullrequest/PullRequestListView.kt | 11 ----------- 15 files changed, 36 insertions(+), 94 deletions(-) delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListView.kt delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListView.kt delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListView.kt delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListView.kt delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListView.kt 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 e1e0735..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,9 @@ package br.com.luisfernandez.github.client.koin +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.BranchesListModel -import br.com.luisfernandez.github.client.repodetails.contributorslist.BranchesListModelImpl 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 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 index 1777615..8dcfc14 100644 --- 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 @@ -6,6 +6,7 @@ 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 @@ -36,7 +37,7 @@ class RepoDetailsPagerAdapter(private val context: Context, fm: FragmentManager, 1 -> IssuesListFragment() 2 -> CommitsListFragment() 3 -> ContributorsListFragment() - 4 -> BranchesFragment() + 4 -> BranchesListFragment() else -> PullRequestListFragment() } 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 index 677f04f..36717b1 100644 --- 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 @@ -1,4 +1,4 @@ -package br.com.luisfernandez.github.client.repodetails.contributorslist +package br.com.luisfernandez.github.client.repodetails.brancheslist import android.arch.lifecycle.Observer import android.os.Bundle @@ -16,15 +16,13 @@ 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 br.com.luisfernandez.github.client.repodetails.brancheslist.BranchesListAdapter -import br.com.luisfernandez.github.client.repodetails.brancheslist.BranchesListViewModel -import kotlinx.android.synthetic.main.fragment_issues_list.* +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(), BranchesListView { +class BranchesListFragment : Fragment() { lateinit var owner: String lateinit var repoName: String @@ -66,7 +64,7 @@ class BranchesListFragment : Fragment(), BranchesListView { }) } - override fun handleError(serverError: ServerError) { + private fun handleError(serverError: ServerError) { this.showErrorState() if (serverError.errorBody != null) { @@ -88,21 +86,21 @@ class BranchesListFragment : Fragment(), BranchesListView { 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/repodetails/brancheslist/BranchesListModel.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListModel.kt index ef4c357..b7a611b 100644 --- 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 @@ -1,4 +1,4 @@ -package br.com.luisfernandez.github.client.repodetails.contributorslist +package br.com.luisfernandez.github.client.repodetails.brancheslist import br.com.luisfernandez.github.client.pojo.BranchResponse import io.reactivex.Observable 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 index 31ec4d7..e508802 100644 --- 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 @@ -1,4 +1,4 @@ -package br.com.luisfernandez.github.client.repodetails.contributorslist +package br.com.luisfernandez.github.client.repodetails.brancheslist import br.com.luisfernandez.github.client.http.GitHubService import br.com.luisfernandez.github.client.pojo.BranchResponse diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListView.kt deleted file mode 100644 index cc742f0..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/brancheslist/BranchesListView.kt +++ /dev/null @@ -1,11 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails.contributorslist - -import br.com.luisfernandez.github.client.http.model.GitHubErrorBody -import br.com.luisfernandez.github.client.mvp.LoadContentView -import br.com.luisfernandez.github.client.pojo.BranchResponse - - -/** - * Created by luisfernandez on 11/05/18. - */ -interface BranchesListView : LoadContentView, GitHubErrorBody> \ 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 index 74e1b2d..8b2c6cb 100644 --- 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 @@ -6,7 +6,6 @@ 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 br.com.luisfernandez.github.client.repodetails.contributorslist.BranchesListModel import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers 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 index eadf695..2ea3720 100644 --- 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 @@ -16,13 +16,13 @@ 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_issues_list.* +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(), CommitsListView { +class CommitsListFragment : Fragment() { lateinit var owner: String lateinit var repoName: String @@ -64,7 +64,7 @@ class CommitsListFragment : Fragment(), CommitsListView { }) } - override fun handleError(serverError: ServerError) { + private fun handleError(serverError: ServerError) { this.showErrorState() if (serverError.errorBody != null) { @@ -86,21 +86,21 @@ class CommitsListFragment : Fragment(), CommitsListView { 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/repodetails/commitslist/CommitsListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListView.kt deleted file mode 100644 index fab5715..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/commitslist/CommitsListView.kt +++ /dev/null @@ -1,11 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails.commitslist - -import br.com.luisfernandez.github.client.http.model.GitHubErrorBody -import br.com.luisfernandez.github.client.mvp.LoadContentView -import br.com.luisfernandez.github.client.pojo.commit.CommitResponse - - -/** - * Created by luisfernandez on 11/05/18. - */ -interface CommitsListView : LoadContentView, GitHubErrorBody> \ 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 index 28b6cec..ec6c905 100644 --- 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 @@ -14,16 +14,15 @@ 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.pojo.IssueResponse 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.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(), ContributorsListView { +class ContributorsListFragment : Fragment() { lateinit var owner: String lateinit var repoName: String @@ -65,7 +64,7 @@ class ContributorsListFragment : Fragment(), ContributorsListView { }) } - override fun handleError(serverError: ServerError) { + private fun handleError(serverError: ServerError) { this.showErrorState() if (serverError.errorBody != null) { @@ -87,21 +86,21 @@ class ContributorsListFragment : Fragment(), ContributorsListView { 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/repodetails/contributorslist/ContributorsListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListView.kt deleted file mode 100644 index b926755..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/contributorslist/ContributorsListView.kt +++ /dev/null @@ -1,11 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails.contributorslist - -import br.com.luisfernandez.github.client.http.model.GitHubErrorBody -import br.com.luisfernandez.github.client.mvp.LoadContentView -import br.com.luisfernandez.github.client.pojo.ContributorResponse - - -/** - * Created by luisfernandez on 11/05/18. - */ -interface ContributorsListView : LoadContentView, GitHubErrorBody> \ No newline at end of file diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListView.kt deleted file mode 100644 index bf9c886..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssueListView.kt +++ /dev/null @@ -1,11 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails.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/repodetails/issuelist/IssuesListFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssuesListFragment.kt index 8b64d56..65b79dd 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssuesListFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/issuelist/IssuesListFragment.kt @@ -22,7 +22,7 @@ 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 IssuesListFragment : Fragment(), IssueListView { +class IssuesListFragment : Fragment() { lateinit var owner: String lateinit var repoName: String @@ -64,7 +64,7 @@ class IssuesListFragment : Fragment(), IssueListView { }) } - override fun handleError(serverError: ServerError) { + private fun handleError(serverError: ServerError) { this.showErrorState() if (serverError.errorBody != null) { @@ -86,21 +86,21 @@ class IssuesListFragment : Fragment(), 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/repodetails/pullrequest/PullRequestListFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt index 259159c..4c85632 100644 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt +++ b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListFragment.kt @@ -19,13 +19,13 @@ import br.com.luisfernandez.github.client.http.model.ServerError import br.com.luisfernandez.github.client.pojo.PullRequestResponse 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.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.koin.android.viewmodel.ext.android.viewModel -class PullRequestListFragment : Fragment(), PullRequestListView { +class PullRequestListFragment : Fragment() { lateinit var owner: String lateinit var repoName: String @@ -67,7 +67,7 @@ class PullRequestListFragment : Fragment(), PullRequestListView { }) } - override fun handleError(serverError: ServerError) { + private fun handleError(serverError: ServerError) { this.showErrorState() if (serverError.errorBody != null) { @@ -89,21 +89,21 @@ class PullRequestListFragment : Fragment(), 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/repodetails/pullrequest/PullRequestListView.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListView.kt deleted file mode 100644 index d431c94..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/pullrequest/PullRequestListView.kt +++ /dev/null @@ -1,11 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails.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 From 5045326cb551a9dd53fed5625274513905bef91f Mon Sep 17 00:00:00 2001 From: Oliver Silva Date: Tue, 23 Apr 2019 07:34:26 -0300 Subject: [PATCH 49/49] Removing BranchesFragment from project --- .../client/repodetails/BranchesFragment.kt | 21 ------------------- app/src/main/res/layout/fragment_branches.xml | 15 ------------- 2 files changed, 36 deletions(-) delete mode 100644 app/src/main/java/br/com/luisfernandez/github/client/repodetails/BranchesFragment.kt delete mode 100644 app/src/main/res/layout/fragment_branches.xml diff --git a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/BranchesFragment.kt b/app/src/main/java/br/com/luisfernandez/github/client/repodetails/BranchesFragment.kt deleted file mode 100644 index 204ec0e..0000000 --- a/app/src/main/java/br/com/luisfernandez/github/client/repodetails/BranchesFragment.kt +++ /dev/null @@ -1,21 +0,0 @@ -package br.com.luisfernandez.github.client.repodetails - - -import android.os.Bundle -import android.support.v4.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup - -import br.com.luisfernandez.github.client.R - -class BranchesFragment : Fragment() { - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle?): View? { - - return inflater.inflate(R.layout.fragment_branches, container, false) - } - - -} diff --git a/app/src/main/res/layout/fragment_branches.xml b/app/src/main/res/layout/fragment_branches.xml deleted file mode 100644 index 20a29b3..0000000 --- a/app/src/main/res/layout/fragment_branches.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - \ No newline at end of file