Various little UI improvements for notifications activity
This commit is contained in:
parent
31baff2772
commit
2d809f3c6b
@ -36,14 +36,6 @@ class NotificationPermissionActivity : AppCompatActivity() {
|
||||
|
||||
if (adapter == null) {
|
||||
// execute the following lines only once
|
||||
adapter = NotificationPermissionAdapter(account.isNotificationsEnabled) { feed ->
|
||||
viewModel.setFeedNotificationState(feed)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.doOnError { Utils.showSnackbar(binding.root, it.message) }
|
||||
.subscribe()
|
||||
}
|
||||
|
||||
binding.notifPermissionAccountSwitch.isChecked = account.isNotificationsEnabled
|
||||
binding.notifPermissionAccountSwitch.setOnCheckedChangeListener { _, isChecked ->
|
||||
account.isNotificationsEnabled = isChecked
|
||||
@ -57,6 +49,14 @@ class NotificationPermissionActivity : AppCompatActivity() {
|
||||
.subscribe()
|
||||
}
|
||||
|
||||
adapter = NotificationPermissionAdapter(account.isNotificationsEnabled) { feed ->
|
||||
viewModel.setFeedNotificationState(feed)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.doOnError { Utils.showSnackbar(binding.root, it.message) }
|
||||
.subscribe()
|
||||
}
|
||||
|
||||
binding.notifPermissionAccountList.layoutManager = LinearLayoutManager(this)
|
||||
binding.notifPermissionAccountList.adapter = adapter
|
||||
|
||||
|
@ -12,7 +12,8 @@ import com.readrops.app.databinding.NotificationLayoutBinding
|
||||
import com.readrops.app.utils.GlideApp
|
||||
import com.readrops.readropsdb.entities.Feed
|
||||
|
||||
class NotificationPermissionAdapter(var enableAll: Boolean, val listener: (feed: Feed) -> Unit) : ListAdapter<Feed, NotificationPermissionAdapter.NotificationPermissionViewHolder>(DIFF_CALLBACK) {
|
||||
class NotificationPermissionAdapter(var enableAll: Boolean, val listener: (feed: Feed) -> Unit) :
|
||||
ListAdapter<Feed, NotificationPermissionAdapter.NotificationPermissionViewHolder>(DIFF_CALLBACK) {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NotificationPermissionViewHolder {
|
||||
val binding = DataBindingUtil.inflate<NotificationLayoutBinding>(LayoutInflater.from(parent.context),
|
||||
@ -28,7 +29,10 @@ class NotificationPermissionAdapter(var enableAll: Boolean, val listener: (feed:
|
||||
holder.binding.notificationSwitch.isChecked = feed.isNotificationEnabled
|
||||
|
||||
holder.binding.notificationSwitch.isEnabled = enableAll
|
||||
holder.binding.notificationSwitch.setOnCheckedChangeListener { _, _ -> listener(feed) }
|
||||
holder.binding.notificationSwitch.setOnCheckedChangeListener { _, isChecked ->
|
||||
if (isChecked != feed.isNotificationEnabled) listener(feed)
|
||||
}
|
||||
|
||||
holder.itemView.setOnClickListener { if (enableAll) listener(feed) }
|
||||
|
||||
GlideApp.with(holder.itemView.context)
|
||||
|
@ -10,10 +10,10 @@ import io.reactivex.Completable
|
||||
|
||||
class NotificationPermissionViewModel(application: Application) : AndroidViewModel(application) {
|
||||
|
||||
val database = Database.getInstance(application)
|
||||
val database: Database = Database.getInstance(application)
|
||||
var account: Account? = null
|
||||
|
||||
fun getAccount(accountId: Int) = database.accountDao().selectAsync(accountId)
|
||||
fun getAccount(accountId: Int): LiveData<Account> = database.accountDao().selectAsync(accountId)
|
||||
|
||||
fun getFeedsWithNotifPermission(): LiveData<List<Feed>> = database.feedDao()
|
||||
.getFeedsForNotifPermission(account?.id!!)
|
||||
|
@ -16,6 +16,7 @@
|
||||
android:id="@+id/notif_permission_account_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/md_white_1000"
|
||||
android:padding="16dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
@ -43,7 +44,9 @@
|
||||
android:id="@+id/notif_permission_account_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/notif_permission_account_layout" />
|
||||
app:layout_constraintTop_toBottomOf="@id/notif_permission_account_layout"
|
||||
tools:itemCount="8"
|
||||
tools:listitem="@layout/notification_layout" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
@ -35,6 +35,8 @@
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_toStartOf="@id/notification_switch"
|
||||
android:layout_toEndOf="@id/notification_feed_icon"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
tools:text="Feed 1" />
|
||||
|
||||
<Switch
|
||||
|
Loading…
x
Reference in New Issue
Block a user