aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/services
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/services')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt78
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt4
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/services/NotificationService.kt1
3 files changed, 43 insertions, 40 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt b/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt
index 279b4027..2bb1b5c5 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt
@@ -12,6 +12,7 @@ import android.support.v4.app.NotificationCompat
import android.support.v4.app.NotificationManagerCompat
import ca.allanwang.kau.utils.dpToPx
import ca.allanwang.kau.utils.string
+import com.pitchedapps.frost.BuildConfig
import com.pitchedapps.frost.R
import com.pitchedapps.frost.activities.FrostWebActivity
import com.pitchedapps.frost.dbflow.CookieModel
@@ -19,12 +20,12 @@ import com.pitchedapps.frost.dbflow.NotificationModel
import com.pitchedapps.frost.dbflow.lastNotificationTime
import com.pitchedapps.frost.enums.OverlayContext
import com.pitchedapps.frost.facebook.FbItem
-import com.pitchedapps.frost.glide.FrostGlide
-import com.pitchedapps.frost.glide.GlideApp
import com.pitchedapps.frost.facebook.parsers.FrostParser
import com.pitchedapps.frost.facebook.parsers.MessageParser
import com.pitchedapps.frost.facebook.parsers.NotifParser
import com.pitchedapps.frost.facebook.parsers.ParseNotification
+import com.pitchedapps.frost.glide.FrostGlide
+import com.pitchedapps.frost.glide.GlideApp
import com.pitchedapps.frost.utils.ARG_USER_ID
import com.pitchedapps.frost.utils.L
import com.pitchedapps.frost.utils.Prefs
@@ -99,8 +100,8 @@ enum class NotificationType(
L.v { "$name notification data not found" }
return -1
}
- val notifContents = response.data.getUnreadNotifications(data).filter {
- val text = it.text
+ val notifContents = response.data.getUnreadNotifications(data).filter { notif ->
+ val text = notif.text
Prefs.notificationKeywords.none { text.contains(it, true) }
}
if (notifContents.isEmpty()) return 0
@@ -120,8 +121,10 @@ enum class NotificationType(
if (newLatestEpoch > prevLatestEpoch)
putTime(prevNotifTime, newLatestEpoch).save()
L.d { "Notif $name new epoch ${getTime(lastNotificationTime(userId))}" }
- if (prevLatestEpoch == -1L)
+ if (prevLatestEpoch == -1L && !BuildConfig.DEBUG) {
+ L.d { "Skipping first notification fetch" }
return 0 // do not notify the first time
+ }
frostEvent("Notifications", "Type" to name, "Count" to notifs.size)
if (notifs.size > 1)
summaryNotification(context, userId, notifs.size).notify(context)
@@ -146,44 +149,43 @@ enum class NotificationType(
/**
* Create and submit a new notification with the given [content]
*/
- private fun createNotification(context: Context, content: NotificationContent): FrostNotification {
- with(content) {
- val intent = Intent(context, FrostWebActivity::class.java)
- intent.data = Uri.parse(href)
- intent.putExtra(ARG_USER_ID, data.id)
- overlayContext.put(intent)
- bindRequest(intent, content, data.cookie)
+ private fun createNotification(context: Context, content: NotificationContent): FrostNotification =
+ with(content) {
+ val intent = Intent(context, FrostWebActivity::class.java)
+ intent.data = Uri.parse(href)
+ intent.putExtra(ARG_USER_ID, data.id)
+ overlayContext.put(intent)
+ bindRequest(intent, content, data.cookie)
- val group = "${groupPrefix}_${data.id}"
- val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
- val notifBuilder = context.frostNotification(channelId)
- .setContentTitle(title ?: context.string(R.string.frost_name))
- .setContentText(text)
- .setContentIntent(pendingIntent)
- .setCategory(Notification.CATEGORY_SOCIAL)
- .setSubText(data.name)
- .setGroup(group)
+ val group = "${groupPrefix}_${data.id}"
+ val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
+ val notifBuilder = context.frostNotification(channelId)
+ .setContentTitle(title ?: context.string(R.string.frost_name))
+ .setContentText(text)
+ .setContentIntent(pendingIntent)
+ .setCategory(Notification.CATEGORY_SOCIAL)
+ .setSubText(data.name)
+ .setGroup(group)
- if (timestamp != -1L) notifBuilder.setWhen(timestamp * 1000)
- L.v { "Notif load $content" }
+ if (timestamp != -1L) notifBuilder.setWhen(timestamp * 1000)
+ L.v { "Notif load $content" }
- if (profileUrl != null) {
- try {
- val profileImg = GlideApp.with(context)
- .asBitmap()
- .load(profileUrl)
- .transform(FrostGlide.circleCrop)
- .submit(_40_DP, _40_DP)
- .get()
- notifBuilder.setLargeIcon(profileImg)
- } catch (e: Exception) {
- L.e { "Failed to get image $profileUrl" }
+ if (profileUrl != null) {
+ try {
+ val profileImg = GlideApp.with(context)
+ .asBitmap()
+ .load(profileUrl)
+ .transform(FrostGlide.circleCrop)
+ .submit(_40_DP, _40_DP)
+ .get()
+ notifBuilder.setLargeIcon(profileImg)
+ } catch (e: Exception) {
+ L.e { "Failed to get image $profileUrl" }
+ }
}
- }
- return FrostNotification(group, notifId, notifBuilder)
- }
- }
+ FrostNotification(group, notifId, notifBuilder)
+ }
/**
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt b/app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt
index 3fd5ee7b..b2ccaea2 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/services/FrostRequestService.kt
@@ -104,11 +104,11 @@ object FrostRunnable {
}
fun propagate(context: Context, intent: Intent?) {
- intent?.extras ?: return
+ val extras = intent?.extras ?: return
val command = FrostRequestCommands[intent] ?: return
intent.removeExtra(ARG_COMMAND) // reset
L.d { "Propagating command ${command.name}" }
- val builder = command.propagate(intent.extras)
+ val builder = command.propagate(extras)
schedule(context, command, builder)
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/services/NotificationService.kt b/app/src/main/kotlin/com/pitchedapps/frost/services/NotificationService.kt
index 35dd9571..56ff4db7 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/services/NotificationService.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/services/NotificationService.kt
@@ -69,6 +69,7 @@ class NotificationService : JobService() {
notifCount += fetch(jobId, NotificationType.MESSAGE, it)
}
+ L.i { "Sent $notifCount notifications" }
if (notifCount == 0 && jobId == NOTIFICATION_JOB_NOW)
generalNotification(665, R.string.no_new_notifications, BuildConfig.DEBUG)