Various little UI improvements for notifications activity

This commit is contained in:
Shinokuni 2020-03-24 21:28:08 +01:00
parent 31baff2772
commit 2d809f3c6b
5 changed files with 22 additions and 13 deletions

View File

@ -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

View File

@ -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)

View File

@ -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!!)

View File

@ -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>

View File

@ -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