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

Merge remote-tracking branch 'origin/develop'

parents cbd7ebc0 f5eb33a1
No related branches found
No related tags found
No related merge requests found
Pipeline #
Showing
with 87 additions and 77 deletions
Change Log
==========
 
Version 2.4.8
----------------------------
- Crash fixes related to viewing a project
Version 2.4.7
----------------------------
 
Loading
Loading
Loading
Loading
@@ -18,7 +18,7 @@ apply plugin: 'io.fabric'
 
def versionMajor = 2
def versionMinor = 4
def versionPatch = 7
def versionPatch = 8
def versionBuild = 0 // bump for dogfood builds, public betas, etc.
 
android {
Loading
Loading
@@ -90,6 +90,10 @@ android {
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
packagingOptions {
exclude 'META-INF/MANIFEST.MF'
}
}
 
ext {
Loading
Loading
@@ -102,7 +106,7 @@ ext {
adapterLayout = '1.1.1'
materialDialogsVersion = '0.9.4.5'
leakCanaryVersion = '1.5'
addendumVersion = '1.3.1'
addendumVersion = '1.4.0'
alakazamVersion = '1.0.1'
moshiVersion = '1.5.0'
}
Loading
Loading
Loading
Loading
@@ -50,6 +50,7 @@
-keepclasseswithmembers class * {
@com.squareup.moshi.* <methods>;
}
-keep @com.squareup.moshi.JsonQualifier interface *
 
# Custom rules
-keep class com.commit451.gitlab.ssl.CustomSSLSocketFactory
\ No newline at end of file
Loading
Loading
@@ -74,7 +74,7 @@ open class App : Application() {
 
SimpleChromeCustomTabs.initialize(this)
 
val accounts = Account.getAccounts()
val accounts = Prefs.getAccounts()
if (!accounts.isEmpty()) {
setAccount(accounts[0])
}
Loading
Loading
Loading
Loading
@@ -116,7 +116,7 @@ class AboutActivity : BaseActivity() {
 
override fun success(contributors: List<Contributor>) {
progress.visibility = View.GONE
addContributors(Contributor.groupContributors(contributors))
addContributors(contributors)
}
})
progress.visibility = View.VISIBLE
Loading
Loading
Loading
Loading
@@ -55,9 +55,10 @@ class ActivityActivity : BaseActivity() {
.appendPath("dashboard")
.appendPath("projects.atom")
.build()
Timber.d("Showing activity feed for: %s", feedUri.toString())
val feedUrl = feedUri.toString()
Timber.d("Showing activity feed for: %s", feedUrl)
 
feedFragment = FeedFragment.newInstance(feedUri)
feedFragment = FeedFragment.newInstance(feedUrl)
supportFragmentManager.beginTransaction()
.replace(R.id.root_fragment, feedFragment, TAG_FEED_FRAGMENT)
.commit()
Loading
Loading
Loading
Loading
@@ -27,6 +27,7 @@ import com.commit451.gitlab.adapter.AssigneeSpinnerAdapter
import com.commit451.gitlab.adapter.MilestoneSpinnerAdapter
import com.commit451.gitlab.event.IssueChangedEvent
import com.commit451.gitlab.event.IssueCreatedEvent
import com.commit451.gitlab.extension.belongsToGroup
import com.commit451.gitlab.extension.checkValid
import com.commit451.gitlab.extension.setup
import com.commit451.gitlab.model.api.*
Loading
Loading
@@ -82,7 +83,7 @@ class AddIssueActivity : MorphActivity() {
 
lateinit var project: Project
var issue: Issue? = null
lateinit var members: HashSet<Member>
lateinit var members: HashSet<User>
 
@OnClick(R.id.text_add_labels)
fun onAddLabelClicked() {
Loading
Loading
@@ -98,7 +99,7 @@ class AddIssueActivity : MorphActivity() {
 
project = intent.getParcelerParcelableExtra<Project>(KEY_PROJECT)!!
issue = intent.getParcelerParcelableExtra<Issue>(KEY_ISSUE)
members = HashSet<Member>()
members = HashSet<User>()
adapterLabels = AddIssueLabelAdapter(object : AddIssueLabelAdapter.Listener {
override fun onLabelClicked(label: Label) {
AlertDialog.Builder(this@AddIssueActivity)
Loading
Loading
@@ -156,10 +157,10 @@ class AddIssueActivity : MorphActivity() {
}
})
App.get().gitLab.getProjectMembers(project.id)
.compose(this.bindToLifecycle<Response<List<Member>>>())
.compose(this.bindToLifecycle<Response<List<User>>>())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : CustomResponseSingleObserver<List<Member>>() {
.subscribe(object : CustomResponseSingleObserver<List<User>>() {
 
override fun error(t: Throwable) {
Timber.e(t)
Loading
Loading
@@ -167,13 +168,13 @@ class AddIssueActivity : MorphActivity() {
progressAssignee.visibility = View.GONE
}
 
override fun responseNonNullSuccess(members: List<Member>) {
override fun responseNonNullSuccess(members: List<User>) {
this@AddIssueActivity.members.addAll(members)
if (project.belongsToGroup()) {
Timber.d("Project belongs to a group, loading those users too")
App.get().gitLab.getGroupMembers(project.namespace.id)
.setup(bindToLifecycle())
.subscribe(object : CustomResponseSingleObserver<List<Member>>() {
.subscribe(object : CustomResponseSingleObserver<List<User>>() {
 
override fun error(t: Throwable) {
Timber.e(t)
Loading
Loading
@@ -181,7 +182,7 @@ class AddIssueActivity : MorphActivity() {
progressAssignee.visibility = View.GONE
}
 
override fun responseNonNullSuccess(members: List<Member>) {
override fun responseNonNullSuccess(members: List<User>) {
this@AddIssueActivity.members.addAll(members)
setAssignees()
}
Loading
Loading
@@ -240,7 +241,7 @@ class AddIssueActivity : MorphActivity() {
if (projectLabels != null && !projectLabels.isEmpty() && issue != null && issue!!.labels != null) {
val currentLabels = ArrayList<Label>()
for (label in projectLabels) {
for (labelName in issue!!.labels) {
for (labelName in issue!!.labels!!) {
if (labelName == label.name) {
currentLabels.add(label)
}
Loading
Loading
@@ -284,7 +285,7 @@ class AddIssueActivity : MorphActivity() {
var assigneeId: Long? = null
if (spinnerAssignee.adapter != null) {
//the user did make a selection of some sort. So update it
val member = spinnerAssignee.selectedItem as? Member?
val member = spinnerAssignee.selectedItem as? User?
if (member == null) {
//Removes the assignment
assigneeId = 0L
Loading
Loading
Loading
Loading
@@ -23,8 +23,7 @@ import com.commit451.gitlab.dialog.AccessDialog
import com.commit451.gitlab.event.MemberAddedEvent
import com.commit451.gitlab.extension.setup
import com.commit451.gitlab.model.api.Group
import com.commit451.gitlab.model.api.Member
import com.commit451.gitlab.model.api.UserBasic
import com.commit451.gitlab.model.api.User
import com.commit451.gitlab.rx.CustomResponseSingleObserver
import com.commit451.gitlab.util.LinkHeaderParser
import com.commit451.gitlab.viewHolder.UserViewHolder
Loading
Loading
@@ -74,7 +73,7 @@ class AddUserActivity : MorphActivity() {
var query: String? = null
var nextPageUrl: Uri? = null
var loading = false
var selectedUser: UserBasic? = null
var selectedUser: User? = null
 
@OnClick(R.id.clear)
fun onClearClick() {
Loading
Loading
@@ -127,7 +126,7 @@ class AddUserActivity : MorphActivity() {
toolbar.setNavigationOnClickListener { onBackPressed() }
 
adapter = UserAdapter(object : UserAdapter.Listener {
override fun onUserClicked(user: UserBasic, userViewHolder: UserViewHolder) {
override fun onUserClicked(user: User, userViewHolder: UserViewHolder) {
selectedUser = user
dialogAccess.show()
}
Loading
Loading
@@ -158,7 +157,7 @@ class AddUserActivity : MorphActivity() {
loading = true
App.get().gitLab.searchUsers(query!!)
.setup(bindToLifecycle())
.subscribe(object : CustomResponseSingleObserver<List<UserBasic>>() {
.subscribe(object : CustomResponseSingleObserver<List<User>>() {
 
override fun error(t: Throwable) {
Timber.e(t)
Loading
Loading
@@ -168,7 +167,7 @@ class AddUserActivity : MorphActivity() {
.show()
}
 
override fun responseNonNullSuccess(users: List<UserBasic>) {
override fun responseNonNullSuccess(users: List<User>) {
swipeRefreshLayout.isRefreshing = false
loading = false
adapter.setData(users)
Loading
Loading
@@ -184,14 +183,14 @@ class AddUserActivity : MorphActivity() {
Timber.d("loadMore " + nextPageUrl!!.toString() + " " + query)
App.get().gitLab.searchUsers(nextPageUrl!!.toString(), query!!)
.setup(bindToLifecycle())
.subscribe(object : CustomResponseSingleObserver<List<UserBasic>>() {
.subscribe(object : CustomResponseSingleObserver<List<User>>() {
 
override fun error(t: Throwable) {
Timber.e(t)
adapter.setLoading(false)
}
 
override fun responseNonNullSuccess(users: List<UserBasic>) {
override fun responseNonNullSuccess(users: List<User>) {
loading = false
adapter.setLoading(false)
adapter.addData(users)
Loading
Loading
@@ -200,9 +199,9 @@ class AddUserActivity : MorphActivity() {
})
}
 
private fun add(observable: Single<Response<Member>>) {
private fun add(observable: Single<Response<User>>) {
observable.setup(bindToLifecycle())
.subscribe(object : CustomResponseSingleObserver<Member>() {
.subscribe(object : CustomResponseSingleObserver<User>() {
 
override fun error(t: Throwable) {
Timber.e(t)
Loading
Loading
@@ -216,7 +215,7 @@ class AddUserActivity : MorphActivity() {
.show()
}
 
override fun responseNonNullSuccess(member: Member) {
override fun responseNonNullSuccess(member: User) {
Snackbar.make(root, R.string.user_added_successfully, Snackbar.LENGTH_SHORT)
.show()
dialogAccess.dismiss()
Loading
Loading
Loading
Loading
@@ -20,7 +20,7 @@ import com.commit451.gitlab.App
import com.commit451.gitlab.R
import com.commit451.gitlab.extension.setup
import com.commit451.gitlab.extension.toPart
import com.commit451.gitlab.model.api.FileUploadResponse
import com.commit451.gitlab.api.response.FileUploadResponse
import com.commit451.gitlab.model.api.Project
import com.commit451.gitlab.rx.CustomSingleObserver
import pl.aprilapps.easyphotopicker.DefaultCallback
Loading
Loading
Loading
Loading
@@ -196,10 +196,13 @@ class BuildActivity : BaseActivity() {
}
}
 
private fun downloadBuild() {
fun downloadBuild() {
val account = App.get().getAccount()
val downloadUrl = build.getDownloadBuildUrl(App.get().getAccount().serverUrl, project)
val downloadUrl = build.getDownloadBuildUrl(App.get().getAccount().serverUrl!!, project)
Timber.d("Downloading build: " + downloadUrl)
DownloadUtil.download(this@BuildActivity, account, downloadUrl, build.artifactsFile.fileName)
val artifactsFileName = build.artifactsFile?.fileName
if (artifactsFileName != null) {
DownloadUtil.download(this, account, downloadUrl, artifactsFileName)
}
}
}
Loading
Loading
@@ -26,7 +26,6 @@ import com.commit451.gitlab.R
import com.commit451.gitlab.adapter.GroupPagerAdapter
import com.commit451.gitlab.extension.setup
import com.commit451.gitlab.model.api.Group
import com.commit451.gitlab.model.api.GroupDetail
import com.commit451.gitlab.rx.CustomSingleObserver
import com.commit451.gitlab.transformation.PaletteTransformation
import timber.log.Timber
Loading
Loading
@@ -80,7 +79,7 @@ class GroupActivity : BaseActivity() {
val groupId = intent.getLongExtra(KEY_GROUP_ID, -1)
App.get().gitLab.getGroup(groupId)
.setup(bindToLifecycle())
.subscribe(object : CustomSingleObserver<GroupDetail>() {
.subscribe(object : CustomSingleObserver<Group>() {
 
override fun error(t: Throwable) {
Timber.e(t)
Loading
Loading
@@ -88,7 +87,7 @@ class GroupActivity : BaseActivity() {
showError()
}
 
override fun success(groupDetail: GroupDetail) {
override fun success(groupDetail: Group) {
progress.visibility = View.GONE
bind(groupDetail)
}
Loading
Loading
Loading
Loading
@@ -23,11 +23,11 @@ import com.commit451.addendum.parceler.putParcelerParcelableExtra
import com.commit451.gitlab.App
import com.commit451.gitlab.R
import com.commit451.gitlab.adapter.IssueDetailsAdapter
import com.commit451.gitlab.api.response.FileUploadResponse
import com.commit451.gitlab.event.IssueChangedEvent
import com.commit451.gitlab.event.IssueReloadEvent
import com.commit451.gitlab.extension.getUrl
import com.commit451.gitlab.extension.setup
import com.commit451.gitlab.model.api.FileUploadResponse
import com.commit451.gitlab.model.api.Issue
import com.commit451.gitlab.model.api.Note
import com.commit451.gitlab.model.api.Project
Loading
Loading
@@ -182,7 +182,7 @@ class IssueActivity : BaseActivity() {
if (intent.hasExtra(EXTRA_SELECTED_ISSUE)) {
project = intent.getParcelerParcelableExtra<Project>(EXTRA_PROJECT)
issue = intent.getParcelerParcelableExtra<Issue>(EXTRA_SELECTED_ISSUE)
adapterIssueDetails = IssueDetailsAdapter(this@IssueActivity, issue, project!!)
adapterIssueDetails = IssueDetailsAdapter(issue, project!!)
listNotes.adapter = adapterIssueDetails
bindIssue()
bindProject()
Loading
Loading
@@ -216,7 +216,7 @@ class IssueActivity : BaseActivity() {
.show()
} else {
issue = issues[0]
adapterIssueDetails = IssueDetailsAdapter(this@IssueActivity, issue, project!!)
adapterIssueDetails = IssueDetailsAdapter(issue, project!!)
listNotes.adapter = adapterIssueDetails
bindIssue()
bindProject()
Loading
Loading
Loading
Loading
@@ -50,7 +50,7 @@ class LaunchActivity : BaseActivity() {
}
 
private fun figureOutWhatToDo() {
val accounts = Account.getAccounts()
val accounts = Prefs.getAccounts()
if (accounts.isEmpty()) {
Navigator.navigateToLogin(this)
finish()
Loading
Loading
Loading
Loading
@@ -36,8 +36,7 @@ import com.commit451.gitlab.extension.setup
import com.commit451.gitlab.extension.text
import com.commit451.gitlab.model.Account
import com.commit451.gitlab.model.api.Message
import com.commit451.gitlab.model.api.UserFull
import com.commit451.gitlab.model.api.UserLogin
import com.commit451.gitlab.model.api.User
import com.commit451.gitlab.navigation.Navigator
import com.commit451.gitlab.rx.CustomResponseSingleObserver
import com.commit451.gitlab.ssl.CustomHostnameVerifier
Loading
Loading
@@ -245,7 +244,7 @@ class LoginActivity : BaseActivity() {
 
gitLab!!.login(request)
.setup(bindToLifecycle())
.subscribe(object : CustomResponseSingleObserver<UserLogin>() {
.subscribe(object : CustomResponseSingleObserver<User>() {
 
override fun error(e: Throwable) {
Timber.e(e)
Loading
Loading
@@ -256,7 +255,7 @@ class LoginActivity : BaseActivity() {
}
}
 
override fun responseNonNullSuccess(userLogin: UserLogin) {
override fun responseNonNullSuccess(userLogin: User) {
account.privateToken = userLogin.privateToken
loadUser()
}
Loading
Loading
@@ -345,7 +344,7 @@ class LoginActivity : BaseActivity() {
val gitLab = GitLabFactory.create(account, gitlabClientBuilder.build())
gitLab.getThisUser()
.setup(bindToLifecycle())
.subscribe(object : CustomResponseSingleObserver<UserFull>() {
.subscribe(object : CustomResponseSingleObserver<User>() {
 
override fun error(e: Throwable) {
Timber.e(e)
Loading
Loading
@@ -356,7 +355,7 @@ class LoginActivity : BaseActivity() {
}
}
 
override fun responseNonNullSuccess(userFull: UserFull) {
override fun responseNonNullSuccess(userFull: User) {
progress.visibility = View.GONE
account.user = userFull
account.lastUsed = Date()
Loading
Loading
@@ -486,8 +485,8 @@ class LoginActivity : BaseActivity() {
fun isAlreadySignedIn(url: String, usernameOrEmailOrPrivateToken: String): Boolean {
val accounts = Prefs.getAccounts()
return accounts.any {
it.serverUrl == url && (usernameOrEmailOrPrivateToken == it.user.username
|| usernameOrEmailOrPrivateToken.equals(it.user.email, ignoreCase = true)
it.serverUrl == url && (usernameOrEmailOrPrivateToken == it.user?.username
|| usernameOrEmailOrPrivateToken.equals(it.user?.email, ignoreCase = true)
|| usernameOrEmailOrPrivateToken.equals(it.privateToken, ignoreCase = true))
}
}
Loading
Loading
Loading
Loading
@@ -77,9 +77,7 @@ class ProjectActivity : BaseActivity() {
@BindView(R.id.pager) lateinit var viewPager: ViewPager
 
var project: Project? = null
internal set
var ref: Ref? = null
internal set
 
val onMenuItemClickListener = Toolbar.OnMenuItemClickListener { item ->
when (item.itemId) {
Loading
Loading
@@ -96,20 +94,22 @@ class ProjectActivity : BaseActivity() {
return@OnMenuItemClickListener true
}
R.id.action_copy_git_https -> {
if (project == null || project!!.httpUrlToRepo == null) {
val url = project?.httpUrlToRepo
if (url == null) {
Toast.makeText(this@ProjectActivity, R.string.failed_to_copy_to_clipboard, Toast.LENGTH_SHORT)
.show()
} else {
copyToClipboard(project!!.httpUrlToRepo)
copyToClipboard(url)
}
return@OnMenuItemClickListener true
}
R.id.action_copy_git_ssh -> {
if (project == null || project!!.httpUrlToRepo == null) {
val url = project?.sshUrlToRepo
if (url == null) {
Toast.makeText(this@ProjectActivity, R.string.failed_to_copy_to_clipboard, Toast.LENGTH_SHORT)
.show()
} else {
copyToClipboard(project!!.sshUrlToRepo)
copyToClipboard(url)
}
return@OnMenuItemClickListener true
}
Loading
Loading
@@ -232,10 +232,10 @@ class ProjectActivity : BaseActivity() {
fun bindProject(project: Project) {
this.project = project
if (ref == null) {
ref = Ref(Ref.TYPE_BRANCH, this.project!!.defaultBranch)
ref = Ref(Ref.TYPE_BRANCH, project.defaultBranch)
}
toolbar.title = this.project!!.name
toolbar.subtitle = this.project!!.namespace.name
toolbar.title = project.name
toolbar.subtitle = project.namespace.name
setupTabs()
}
 
Loading
Loading
Loading
Loading
@@ -5,7 +5,7 @@ import android.net.Uri
import android.os.Bundle
import android.widget.Toast
import com.commit451.gitlab.R
import com.commit451.gitlab.model.Account
import com.commit451.gitlab.data.Prefs
import com.commit451.gitlab.navigation.DeepLinker
import com.commit451.gitlab.navigation.Navigator
import com.commit451.gitlab.navigation.RoutingNavigator
Loading
Loading
@@ -97,7 +97,7 @@ class RoutingActivity : BaseActivity() {
 
//okay so last thing, if the user has followed a link, but the user
//is not actually signed in, we want to direct them to signin
if (Account.getAccounts().isEmpty()) {
if (Prefs.getAccounts().isEmpty()) {
Navigator.navigateToLogin(this)
finish()
return
Loading
Loading
Loading
Loading
@@ -19,8 +19,9 @@ import com.commit451.alakazam.Alakazam
import com.commit451.easel.Easel
import com.commit451.gitlab.App
import com.commit451.gitlab.R
import com.commit451.gitlab.extension.feedUrl
import com.commit451.gitlab.fragment.FeedFragment
import com.commit451.gitlab.model.api.UserBasic
import com.commit451.gitlab.model.api.User
import com.commit451.gitlab.transformation.PaletteTransformation
import com.commit451.gitlab.util.ImageUtil
 
Loading
Loading
@@ -33,7 +34,7 @@ class UserActivity : BaseActivity() {
 
private val KEY_USER = "user"
 
fun newIntent(context: Context, user: UserBasic): Intent {
fun newIntent(context: Context, user: User): Intent {
val intent = Intent(context, UserActivity::class.java)
intent.putParcelerParcelableExtra(KEY_USER, user)
return intent
Loading
Loading
@@ -44,13 +45,13 @@ class UserActivity : BaseActivity() {
@BindView(R.id.collapsing_toolbar) lateinit var collapsingToolbarLayout: CollapsingToolbarLayout
@BindView(R.id.backdrop) lateinit var backdrop: ImageView
 
lateinit var user: UserBasic
lateinit var user: User
 
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_user)
ButterKnife.bind(this)
user = intent.getParcelerParcelableExtra<UserBasic>(KEY_USER)!!
user = intent.getParcelerParcelableExtra<User>(KEY_USER)!!
 
// Default content and scrim colors
collapsingToolbarLayout.setCollapsedTitleTextColor(Color.WHITE)
Loading
Loading
Loading
Loading
@@ -10,7 +10,6 @@ import com.commit451.gitlab.R
import com.commit451.gitlab.model.Account
import com.commit451.gitlab.viewHolder.AccountFooterViewHolder
import com.commit451.gitlab.viewHolder.AccountViewHolder
import java.util.*
 
/**
* Adapter to show all the accounts
Loading
Loading
@@ -24,7 +23,7 @@ class AccountAdapter(context: Context, private val listener: AccountAdapter.List
private val FOOTER_COUNT = 1
}
 
private val accounts: ArrayList<Account> = ArrayList()
private val accounts = mutableListOf<Account>()
private val colorControlHighlight: Int = Easel.getThemeAttrColor(context, R.attr.colorControlHighlight)
 
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
Loading
Loading
Loading
Loading
@@ -4,23 +4,21 @@ import android.content.Context
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import com.commit451.gitlab.R
import com.commit451.gitlab.model.api.Member
import com.commit451.gitlab.model.api.UserBasic
import com.commit451.gitlab.model.api.User
import com.commit451.gitlab.viewHolder.AssigneeSpinnerViewHolder
 
/**
* Adapter to show assignees in a spinner
*/
class AssigneeSpinnerAdapter(context: Context, members: MutableList<Member?>) : ArrayAdapter<Member?>(context, 0, members) {
class AssigneeSpinnerAdapter(context: Context, members: MutableList<User?>) : ArrayAdapter<User?>(context, 0, members) {
 
init {
members.add(0, null)
notifyDataSetChanged()
}
 
fun getSelectedItemPosition(userBasic: UserBasic?): Int {
fun getSelectedItemPosition(userBasic: User?): Int {
if (userBasic == null) {
return 0
}
Loading
Loading
Loading
Loading
@@ -4,7 +4,7 @@ import android.support.v7.widget.RecyclerView
import android.view.ViewGroup
import android.widget.PopupMenu
import com.commit451.gitlab.R
import com.commit451.gitlab.model.api.Member
import com.commit451.gitlab.model.api.User
import com.commit451.gitlab.viewHolder.LoadingFooterViewHolder
import com.commit451.gitlab.viewHolder.ProjectMemberViewHolder
import java.util.*
Loading
Loading
@@ -22,7 +22,7 @@ class GroupMembersAdapter(private val listener: GroupMembersAdapter.Listener) :
private val FOOTER_COUNT = 1
}
 
val values: ArrayList<Member> = ArrayList()
val values: ArrayList<User> = ArrayList()
 
var isLoading = false
set(loading) {
Loading
Loading
@@ -82,24 +82,24 @@ class GroupMembersAdapter(private val listener: GroupMembersAdapter.Listener) :
return values.size + FOOTER_COUNT
}
 
fun setData(members: Collection<Member>?) {
fun setData(members: Collection<User>?) {
values.clear()
addData(members)
}
 
fun addData(members: Collection<Member>?) {
fun addData(members: Collection<User>?) {
if (members != null) {
values.addAll(members)
}
notifyDataSetChanged()
}
 
fun addMember(member: Member) {
fun addMember(member: User) {
values.add(0, member)
notifyItemInserted(0)
}
 
fun removeMember(member: Member) {
fun removeMember(member: User) {
val index = values.indexOf(member)
values.removeAt(index)
notifyItemRemoved(index)
Loading
Loading
@@ -113,13 +113,13 @@ class GroupMembersAdapter(private val listener: GroupMembersAdapter.Listener) :
return false
}
 
private fun getMember(position: Int): Member {
private fun getMember(position: Int): User {
return values[position]
}
 
interface Listener {
fun onUserClicked(member: Member, userViewHolder: ProjectMemberViewHolder)
fun onUserRemoveClicked(member: Member)
fun onUserChangeAccessClicked(member: Member)
fun onUserClicked(member: User, userViewHolder: ProjectMemberViewHolder)
fun onUserRemoveClicked(member: User)
fun onUserChangeAccessClicked(member: User)
}
}
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