Add support for Prever

This commit is contained in:
Matte23
2021-02-15 19:52:34 +01:00
parent 0a414b0dbc
commit 24d51aaeec
12 changed files with 244 additions and 15 deletions

View File

@@ -44,6 +44,7 @@ import net.underdesk.circolapp.data.AndroidCircularRepository
import net.underdesk.circolapp.data.AndroidDatabase
import net.underdesk.circolapp.databinding.ItemCircularBinding
import net.underdesk.circolapp.fragments.NewReminderFragment
import net.underdesk.circolapp.server.AndroidServerApi
import net.underdesk.circolapp.shared.data.Circular
import net.underdesk.circolapp.shared.data.CircularRepository
import net.underdesk.circolapp.utils.DownloadableFile
@@ -57,6 +58,7 @@ class CircularLetterAdapter(
RecyclerView.Adapter<CircularLetterAdapter.CircularLetterViewHolder>() {
private lateinit var context: Context
private lateinit var circularRepository: CircularRepository
private var idsAreHumanReadable = true
private val adapterCallback: AdapterCallback = mainActivity
private var collapsedItems = -1
@@ -90,14 +92,22 @@ class CircularLetterAdapter(
val binding = ItemCircularBinding.inflate(LayoutInflater.from(parent.context), parent, false)
context = parent.context
circularRepository = AndroidCircularRepository.getInstance(context)
idsAreHumanReadable = AndroidServerApi.getInstance(context).idsAreHumanReadable()
return CircularLetterViewHolder(binding)
}
override fun onBindViewHolder(holder: CircularLetterViewHolder, position: Int) {
holder.number.text = context.getString(R.string.notification_title, circulars[position].id)
if (idsAreHumanReadable) {
holder.number.text =
context.getString(R.string.notification_title_id, circulars[position].id)
holder.date.text = circulars[position].date
} else {
holder.number.text =
context.getString(R.string.notification_title_date, circulars[position].date)
holder.date.text = ""
}
holder.title.text = circulars[position].name
holder.date.text = circulars[position].date
val observer = Observer<Boolean> {
if (it) {

View File

@@ -30,19 +30,21 @@ import androidx.core.app.NotificationManagerCompat
import androidx.core.app.TaskStackBuilder
import net.underdesk.circolapp.MainActivity
import net.underdesk.circolapp.R
import net.underdesk.circolapp.server.AndroidServerApi
import net.underdesk.circolapp.shared.data.Circular
import net.underdesk.circolapp.works.PollWork
object NotificationsUtils {
fun createNotificationsForCirculars(circulars: List<Circular>, context: Context) {
createNotificationChannel(context)
val idsAreHumanReadable = AndroidServerApi.getInstance(context).idsAreHumanReadable()
val summaryStyle = NotificationCompat.InboxStyle()
.setBigContentTitle(context.getString(R.string.notification_summary_title))
.setSummaryText(context.getString(R.string.notification_summary))
for (circular in circulars) {
createNotification(circular, context)
createNotification(circular, context, idsAreHumanReadable)
summaryStyle.addLine(circular.name)
}
@@ -67,7 +69,11 @@ object NotificationsUtils {
}
}
private fun createNotification(circular: Circular, context: Context) {
private fun createNotification(
circular: Circular,
context: Context,
idsAreHumanReadable: Boolean
) {
val mainIntent = Intent(context, MainActivity::class.java)
val viewIntent = Intent(Intent.ACTION_VIEW)
@@ -88,7 +94,6 @@ object NotificationsUtils {
val builder = NotificationCompat.Builder(context, PollWork.CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(context.getString(R.string.notification_title, circular.id))
.setContentText(circular.name)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent)
@@ -99,6 +104,17 @@ object NotificationsUtils {
.bigText(circular.name)
)
if (idsAreHumanReadable) {
builder.setContentTitle(context.getString(R.string.notification_title_id, circular.id))
} else {
builder.setContentTitle(
context.getString(
R.string.notification_title_date,
circular.date
)
)
}
with(NotificationManagerCompat.from(context)) {
notify(circular.id.toInt(), builder.build())
}

View File

@@ -22,7 +22,8 @@
<string name="preferences_polling_summary">Sconsigliato. Disabilitare questa opzione per utilizzare le notifiche push</string>
<string name="preferences_poll_interval_summary">Quanto tempo attendere tra una sincronizzazione ed un altra</string>
<string name="notification_title">Circolare numero %1$d</string>
<string name="notification_title_id">Circolare numero %1$d</string>
<string name="notification_title_date">Circolare pubblicata il %1$s</string>
<string name="notification_summary_title">Nuove circolari pubblicate</string>
<string name="notification_summary">Nuove circolari</string>
<plurals name="notification_summary_text">

View File

@@ -22,7 +22,8 @@
<string name="preferences_polling_summary">Not recommended. Disable this option to use push notifications</string>
<string name="preferences_poll_interval_summary">How long to wait before checking if new circulars are published</string>
<string name="notification_title">Circular letter number %1$d</string>
<string name="notification_title_id">Circular letter number %1$d</string>
<string name="notification_title_date">Circular published on %1$s</string>
<string name="notification_summary_title">New circulars published</string>
<string name="notification_summary">New circulars</string>
<plurals name="notification_summary_text">