mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-24 19:00:26 +01:00
Add ability to hide contacts behind a feature flag.
This commit is contained in:
committed by
Cody Henthorne
parent
a8a773db43
commit
04eeb434c9
@@ -130,6 +130,14 @@ public class ContactSelectionListAdapter extends CursorRecyclerViewAdapter<ViewH
|
||||
itemView.setOnClickListener(v -> {
|
||||
if (clickListener != null) clickListener.onItemClick(getView());
|
||||
});
|
||||
|
||||
itemView.setOnLongClickListener(v -> {
|
||||
if (clickListener != null) {
|
||||
return clickListener.onItemLongClick(getView());
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public ContactSelectionListItem getView() {
|
||||
@@ -435,5 +443,6 @@ public class ContactSelectionListAdapter extends CursorRecyclerViewAdapter<ViewH
|
||||
|
||||
public interface ItemClickListener {
|
||||
void onItemClick(ContactSelectionListItem item);
|
||||
boolean onItemLongClick(ContactSelectionListItem item);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package org.thoughtcrime.securesms.contacts.management
|
||||
|
||||
import android.content.Context
|
||||
import androidx.annotation.CheckResult
|
||||
import io.reactivex.rxjava3.core.Completable
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.recipients.RecipientUtil
|
||||
|
||||
class ContactsManagementRepository(context: Context) {
|
||||
private val context = context.applicationContext
|
||||
|
||||
@CheckResult
|
||||
fun blockContact(recipient: Recipient): Completable {
|
||||
return Completable.fromAction {
|
||||
if (recipient.isDistributionList) {
|
||||
error("Blocking a distribution list makes no sense")
|
||||
} else if (recipient.isGroup) {
|
||||
RecipientUtil.block(context, recipient)
|
||||
} else {
|
||||
RecipientUtil.blockNonGroup(context, recipient)
|
||||
}
|
||||
}.subscribeOn(Schedulers.io())
|
||||
}
|
||||
|
||||
@CheckResult
|
||||
fun hideContact(recipient: Recipient): Completable {
|
||||
return Completable.fromAction {
|
||||
if (recipient.isGroup || recipient.isDistributionList || recipient.isSelf) {
|
||||
error("Cannot hide groups, self, or distribution lists.")
|
||||
}
|
||||
|
||||
SignalDatabase.recipients.markHidden(recipient.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package org.thoughtcrime.securesms.contacts.management
|
||||
|
||||
import androidx.annotation.CheckResult
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.core.Completable
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
|
||||
class ContactsManagementViewModel(private val repository: ContactsManagementRepository) : ViewModel() {
|
||||
|
||||
@CheckResult
|
||||
fun hideContact(recipient: Recipient): Completable {
|
||||
return repository.hideContact(recipient).observeOn(AndroidSchedulers.mainThread())
|
||||
}
|
||||
|
||||
@CheckResult
|
||||
fun blockContact(recipient: Recipient): Completable {
|
||||
return repository.blockContact(recipient).observeOn(AndroidSchedulers.mainThread())
|
||||
}
|
||||
|
||||
class Factory(private val repository: ContactsManagementRepository) : ViewModelProvider.Factory {
|
||||
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
||||
return modelClass.cast(ContactsManagementViewModel(repository)) as T
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user