Skip to content
Snippets Groups Projects
Commit b068f68e authored by John Carlson's avatar John Carlson
Browse files

Fix fragment lifecycle crashes.

parent 98cadd2e
No related branches found
No related tags found
No related merge requests found
Showing
with 60 additions and 34 deletions
Loading
Loading
@@ -79,7 +79,7 @@ ext {
butterknifeVersion = '8.5.1'
loganSquareVersion = '1.3.7'
parcelerVersion = '1.1.6'
reptarVersion = '2.3.0'
reptarVersion = '2.4.1'
adapterLayout = '1.1.0'
materialDialogsVersion = '0.9.4.2'
}
Loading
Loading
Loading
Loading
@@ -144,7 +144,7 @@ class AddIssueActivity : MorphActivity() {
spinnerMilestone.visibility = View.GONE
}
 
override fun responseSuccess(milestones: List<Milestone>) {
override fun responseNonNullSuccess(milestones: List<Milestone>) {
progressMilestone.visibility = View.GONE
spinnerMilestone.visibility = View.VISIBLE
val maybeNullMilestones = mutableListOf<Milestone?>()
Loading
Loading
@@ -168,7 +168,7 @@ class AddIssueActivity : MorphActivity() {
progressAssignee.visibility = View.GONE
}
 
override fun responseSuccess(members: List<Member>) {
override fun responseNonNullSuccess(members: List<Member>) {
this@AddIssueActivity.members.addAll(members)
if (project.belongsToGroup()) {
Timber.d("Project belongs to a group, loading those users too")
Loading
Loading
@@ -182,7 +182,7 @@ class AddIssueActivity : MorphActivity() {
progressAssignee.visibility = View.GONE
}
 
override fun responseSuccess(members: List<Member>) {
override fun responseNonNullSuccess(members: List<Member>) {
this@AddIssueActivity.members.addAll(members)
setAssignees()
}
Loading
Loading
Loading
Loading
@@ -136,7 +136,7 @@ class AddNewLabelActivity : BaseActivity(), ColorChooserDialog.ColorCallback {
}
}
 
override fun responseSuccess(label: Label) {
override fun responseNonNullSuccess(label: Label) {
val data = Intent()
data.putExtra(KEY_NEW_LABEL, Parcels.wrap(label))
setResult(Activity.RESULT_OK, data)
Loading
Loading
Loading
Loading
@@ -169,7 +169,7 @@ class AddUserActivity : MorphActivity() {
.show()
}
 
override fun responseSuccess(users: List<UserBasic>) {
override fun responseNonNullSuccess(users: List<UserBasic>) {
swipeRefreshLayout.isRefreshing = false
loading = false
adapter.setData(users)
Loading
Loading
@@ -192,7 +192,7 @@ class AddUserActivity : MorphActivity() {
adapter.setLoading(false)
}
 
override fun responseSuccess(users: List<UserBasic>) {
override fun responseNonNullSuccess(users: List<UserBasic>) {
loading = false
adapter.setLoading(false)
adapter.addData(users)
Loading
Loading
@@ -217,7 +217,7 @@ class AddUserActivity : MorphActivity() {
.show()
}
 
override fun responseSuccess(member: Member) {
override fun responseNonNullSuccess(member: Member) {
Snackbar.make(root, R.string.user_added_successfully, Snackbar.LENGTH_SHORT)
.show()
dialogAccess.dismiss()
Loading
Loading
Loading
Loading
@@ -115,7 +115,7 @@ class GroupsActivity : BaseActivity() {
textMessage.setText(R.string.connection_error)
}
 
override fun responseSuccess(groups: List<Group>) {
override fun responseNonNullSuccess(groups: List<Group>) {
loading = false
swipeRefreshLayout.isRefreshing = false
if (groups.isEmpty()) {
Loading
Loading
@@ -151,7 +151,7 @@ class GroupsActivity : BaseActivity() {
loading = false
}
 
override fun responseSuccess(groups: List<Group>) {
override fun responseNonNullSuccess(groups: List<Group>) {
loading = false
adapterGroup.addGroups(groups)
nextPageUrl = LinkHeaderParser.parse(response()).next
Loading
Loading
Loading
Loading
@@ -271,7 +271,7 @@ class IssueActivity : BaseActivity() {
.show()
}
 
override fun responseSuccess(notes: List<Note>) {
override fun responseNonNullSuccess(notes: List<Note>) {
loading = false
swipeRefreshLayout.isRefreshing = false
nextPageUrl = LinkHeaderParser.parse(response()).next
Loading
Loading
@@ -295,7 +295,7 @@ class IssueActivity : BaseActivity() {
adapterIssueDetails.setLoading(false)
}
 
override fun responseSuccess(notes: List<Note>) {
override fun responseNonNullSuccess(notes: List<Note>) {
loading = false
adapterIssueDetails.setLoading(false)
nextPageUrl = LinkHeaderParser.parse(response()).next
Loading
Loading
Loading
Loading
@@ -242,7 +242,7 @@ class LoginActivity : BaseActivity() {
}
}
 
override fun responseSuccess(userLogin: UserLogin) {
override fun responseNonNullSuccess(userLogin: UserLogin) {
account.privateToken = userLogin.privateToken
loadUser()
}
Loading
Loading
@@ -341,7 +341,7 @@ class LoginActivity : BaseActivity() {
}
}
 
override fun responseSuccess(userFull: UserFull) {
override fun responseNonNullSuccess(userFull: UserFull) {
progress.visibility = View.GONE
account.user = userFull
account.lastUsed = Date()
Loading
Loading
Loading
Loading
@@ -105,7 +105,7 @@ class MergeRequestActivity : BaseActivity() {
.show()
}
 
override fun responseSuccess(mergeRequest: MergeRequest) {
override fun responseNonNullSuccess(mergeRequest: MergeRequest) {
progress.visibility = View.GONE
Snackbar.make(root, R.string.merge_request_accepted, Snackbar.LENGTH_LONG)
.show()
Loading
Loading
Loading
Loading
@@ -155,7 +155,7 @@ class MilestoneActivity : BaseActivity() {
adapterMilestoneIssues.setIssues(null)
}
 
override fun responseSuccess(issues: List<Issue>) {
override fun responseNonNullSuccess(issues: List<Issue>) {
swipeRefreshLayout.isRefreshing = false
loading = false
 
Loading
Loading
@@ -191,7 +191,7 @@ class MilestoneActivity : BaseActivity() {
loading = false
}
 
override fun responseSuccess(issues: List<Issue>) {
override fun responseNonNullSuccess(issues: List<Issue>) {
loading = false
nextPageUrl = LinkHeaderParser.parse(response()).next
adapterMilestoneIssues.addIssues(issues)
Loading
Loading
Loading
Loading
@@ -22,6 +22,7 @@ import com.commit451.gitlab.R
import com.commit451.gitlab.adapter.ProjectSectionsPagerAdapter
import com.commit451.gitlab.data.Prefs
import com.commit451.gitlab.event.ProjectReloadEvent
import com.commit451.gitlab.extension.getParcelerParcelable
import com.commit451.gitlab.extension.setup
import com.commit451.gitlab.fragment.BaseFragment
import com.commit451.gitlab.model.Ref
Loading
Loading
@@ -119,7 +120,7 @@ class ProjectActivity : BaseActivity() {
Prefs.startingView = Prefs.STARTING_VIEW_PROJECTS
setContentView(R.layout.activity_project)
ButterKnife.bind(this)
var project: Project? = Parcels.unwrap<Project>(intent.getParcelableExtra<Parcelable>(EXTRA_PROJECT))
var project: Project? = intent.getParcelerParcelable(EXTRA_PROJECT)
 
if (savedInstanceState != null) {
project = Parcels.unwrap<Project>(savedInstanceState.getParcelable<Parcelable>(STATE_PROJECT))
Loading
Loading
package com.commit451.gitlab.api
/**
* Represents there was a null body from Retrofit
*/
class NullBodyException: Exception()
package com.commit451.gitlab.extension
import android.content.Intent
import org.parceler.Parcels
/**
* Get Parcelable that was put in the intent using Parceler
*/
fun <T> Intent.getParcelerParcelable(key: String): T {
return Parcels.unwrap<T>(getParcelableExtra(key))
}
Loading
Loading
@@ -19,6 +19,7 @@ import com.commit451.gitlab.model.api.RepositoryCommit
import com.commit451.gitlab.model.api.Runner
import com.commit451.gitlab.rx.CustomSingleObserver
import com.commit451.gitlab.util.DateUtil
import com.trello.rxlifecycle2.android.FragmentEvent
import org.greenrobot.eventbus.Subscribe
import org.parceler.Parcels
import timber.log.Timber
Loading
Loading
@@ -83,7 +84,7 @@ class BuildDescriptionFragment : ButterKnifeFragment() {
 
fun load() {
App.get().gitLab.getBuild(project.id, build.id)
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomSingleObserver<Build>() {
 
override fun error(t: Throwable) {
Loading
Loading
Loading
Loading
@@ -16,6 +16,7 @@ import com.commit451.gitlab.extension.setup
import com.commit451.gitlab.model.api.Build
import com.commit451.gitlab.model.api.Project
import com.commit451.gitlab.rx.CustomSingleObserver
import com.trello.rxlifecycle2.android.FragmentEvent
import org.greenrobot.eventbus.Subscribe
import org.parceler.Parcels
import timber.log.Timber
Loading
Loading
@@ -80,7 +81,7 @@ class BuildLogFragment : ButterKnifeFragment() {
val url = build.getRawBuildUrl(App.get().getAccount().serverUrl, project)
 
App.get().gitLab.getRaw(url)
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomSingleObserver<String>() {
 
override fun error(t: Throwable) {
Loading
Loading
Loading
Loading
@@ -27,6 +27,7 @@ import com.commit451.gitlab.model.api.Project
import com.commit451.gitlab.navigation.Navigator
import com.commit451.gitlab.rx.CustomResponseSingleObserver
import com.commit451.gitlab.util.LinkHeaderParser
import com.trello.rxlifecycle2.android.FragmentEvent
import org.greenrobot.eventbus.Subscribe
import timber.log.Timber
 
Loading
Loading
@@ -133,7 +134,7 @@ class BuildsFragment : ButterKnifeFragment() {
nextPageUrl = null
loading = true
App.get().gitLab.getBuilds(project!!.id, scope)
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomResponseSingleObserver<List<Build>>() {
 
override fun error(e: Throwable) {
Loading
Loading
@@ -146,7 +147,7 @@ class BuildsFragment : ButterKnifeFragment() {
nextPageUrl = null
}
 
override fun responseSuccess(builds: List<Build>) {
override fun responseNonNullSuccess(builds: List<Build>) {
loading = false
 
swipeRefreshLayout.isRefreshing = false
Loading
Loading
@@ -171,7 +172,7 @@ class BuildsFragment : ButterKnifeFragment() {
 
Timber.d("loadMore called for %s", nextPageUrl)
App.get().gitLab.getBuilds(nextPageUrl!!.toString(), scope)
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomResponseSingleObserver<List<Build>>() {
 
override fun error(e: Throwable) {
Loading
Loading
@@ -180,7 +181,7 @@ class BuildsFragment : ButterKnifeFragment() {
adapterBuilds.setLoading(false)
}
 
override fun responseSuccess(builds: List<Build>) {
override fun responseNonNullSuccess(builds: List<Build>) {
loading = false
adapterBuilds.setLoading(false)
nextPageUrl = LinkHeaderParser.parse(response()).next
Loading
Loading
Loading
Loading
@@ -21,6 +21,7 @@ import com.commit451.gitlab.model.api.Project
import com.commit451.gitlab.model.api.RepositoryCommit
import com.commit451.gitlab.navigation.Navigator
import com.commit451.gitlab.rx.CustomSingleObserver
import com.trello.rxlifecycle2.android.FragmentEvent
import org.greenrobot.eventbus.Subscribe
import timber.log.Timber
 
Loading
Loading
@@ -109,7 +110,7 @@ class CommitsFragment : ButterKnifeFragment() {
loading = true
 
App.get().gitLab.getCommits(project!!.id, branchName!!, page)
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomSingleObserver<List<RepositoryCommit>>() {
 
override fun error(t: Throwable) {
Loading
Loading
@@ -154,7 +155,7 @@ class CommitsFragment : ButterKnifeFragment() {
 
Timber.d("loadMore called for %s", page)
App.get().gitLab.getCommits(project!!.id, branchName!!, page)
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomSingleObserver<List<RepositoryCommit>>() {
 
override fun error(e: Throwable) {
Loading
Loading
Loading
Loading
@@ -20,6 +20,7 @@ import com.commit451.gitlab.model.rss.Feed
import com.commit451.gitlab.navigation.Navigator
import com.commit451.gitlab.rx.CustomSingleObserver
import com.novoda.simplechromecustomtabs.SimpleChromeCustomTabs
import com.trello.rxlifecycle2.android.FragmentEvent
import timber.log.Timber
 
/**
Loading
Loading
@@ -99,7 +100,7 @@ class FeedFragment : ButterKnifeFragment() {
textMessage.visibility = View.GONE
swipeRefreshLayout.isRefreshing = true
App.get().gitLabRss.getFeed(feedUrl!!.toString())
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomSingleObserver<Feed>() {
override fun success(feed: Feed) {
swipeRefreshLayout.isRefreshing = false
Loading
Loading
Loading
Loading
@@ -28,6 +28,7 @@ import com.commit451.gitlab.model.api.RepositoryTreeObject
import com.commit451.gitlab.navigation.Navigator
import com.commit451.gitlab.rx.CustomSingleObserver
import com.commit451.gitlab.util.IntentUtil
import com.trello.rxlifecycle2.android.FragmentEvent
import org.greenrobot.eventbus.Subscribe
import timber.log.Timber
import java.util.*
Loading
Loading
@@ -146,7 +147,7 @@ class FilesFragment : ButterKnifeFragment() {
swipeRefreshLayout.isRefreshing = true
 
App.get().gitLab.getTree(project!!.id, branchName!!, newPath)
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomSingleObserver<List<RepositoryTreeObject>>() {
 
override fun error(e: Throwable) {
Loading
Loading
Loading
Loading
@@ -27,6 +27,7 @@ import com.commit451.gitlab.rx.CustomResponseSingleObserver
import com.commit451.gitlab.rx.CustomSingleObserver
import com.commit451.gitlab.util.LinkHeaderParser
import com.commit451.gitlab.viewHolder.ProjectMemberViewHolder
import com.trello.rxlifecycle2.android.FragmentEvent
import io.reactivex.Single
import org.greenrobot.eventbus.Subscribe
import org.parceler.Parcels
Loading
Loading
@@ -82,7 +83,7 @@ class GroupMembersFragment : ButterKnifeFragment() {
override fun onUserRemoveClicked(member: Member) {
this@GroupMembersFragment.member = member
App.get().gitLab.removeGroupMember(group.id, member.id)
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomSingleObserver<String>() {
 
override fun error(e: Throwable) {
Loading
Loading
@@ -183,7 +184,7 @@ class GroupMembersFragment : ButterKnifeFragment() {
 
private fun loadGroupMembers(observable: Single<Response<List<Member>>>) {
observable
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomResponseSingleObserver<List<Member>>() {
 
override fun error(e: Throwable) {
Loading
Loading
@@ -195,7 +196,7 @@ class GroupMembersFragment : ButterKnifeFragment() {
adapterGroupMembers.setData(null)
}
 
override fun responseSuccess(members: List<Member>) {
override fun responseNonNullSuccess(members: List<Member>) {
swipeRefreshLayout.isRefreshing = false
if (members.isEmpty()) {
textMessage.visibility = View.VISIBLE
Loading
Loading
Loading
Loading
@@ -31,6 +31,7 @@ import com.commit451.gitlab.navigation.Navigator
import com.commit451.gitlab.rx.CustomResponseSingleObserver
import com.commit451.gitlab.rx.CustomSingleObserver
import com.commit451.gitlab.util.LinkHeaderParser
import com.trello.rxlifecycle2.android.FragmentEvent
import org.greenrobot.eventbus.Subscribe
import retrofit2.Response
import timber.log.Timber
Loading
Loading
@@ -144,7 +145,7 @@ class IssuesFragment : ButterKnifeFragment() {
nextPageUrl = null
loading = true
App.get().gitLab.getIssues(project!!.id, state)
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomResponseSingleObserver<List<Issue>>() {
 
override fun error(e: Throwable) {
Loading
Loading
@@ -157,7 +158,7 @@ class IssuesFragment : ButterKnifeFragment() {
nextPageUrl = null
}
 
override fun responseSuccess(issues: List<Issue>) {
override fun responseNonNullSuccess(issues: List<Issue>) {
loading = false
swipeRefreshLayout.isRefreshing = false
if (issues.isEmpty()) {
Loading
Loading
@@ -181,7 +182,7 @@ class IssuesFragment : ButterKnifeFragment() {
 
Timber.d("loadMore called for " + nextPageUrl!!)
App.get().gitLab.getIssues(nextPageUrl!!.toString())
.setup(bindToLifecycle())
.setup(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe(object : CustomSingleObserver<Response<List<Issue>>>() {
 
override fun error(e: Throwable) {
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment