mirror of
https://github.com/lone-cloud/prism-android
synced 2026-06-03 11:03:10 -07:00
Add support for min urgency
This commit is contained in:
parent
9a599ac7d9
commit
1845b608be
7 changed files with 60 additions and 6 deletions
|
|
@ -39,3 +39,12 @@ updates.push.domain.tld {
|
|||
5. In the android app, change server to the autoconnect endpoint (here `push.domain.tld`).
|
||||
|
||||
[Autopush]: https://github.com/mozilla-services/autopush-rs
|
||||
|
||||
## Developpers
|
||||
|
||||
It is possible to configure a few things with build config:
|
||||
|
||||
| Name | Description | Default |
|
||||
|------|-------------|---------|
|
||||
| DEFAULT_API_URL | Define the API Url used by default | `"https://push.services.mozilla.com"` |
|
||||
| URGENCY | To add support for urgency requirement depending on the battery level | `false` until this is supported by the main server |
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ android {
|
|||
|
||||
// buildConfigField("String", "DEFAULT_API_URL", "\"http://10.0.2.2:8088\"")
|
||||
buildConfigField("String", "DEFAULT_API_URL", "\"https://push.services.mozilla.com\"")
|
||||
buildConfigField("Boolean", "URGENCY", "false")
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package org.unifiedpush.distributor.sunup.api
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import okhttp3.WebSocket
|
||||
import org.unifiedpush.distributor.sunup.api.data.ClientMessage
|
||||
import org.unifiedpush.distributor.sunup.services.RestartWorker
|
||||
import org.unifiedpush.distributor.sunup.utils.TAG
|
||||
|
||||
object MessageSender {
|
||||
private var websocket: WebSocket? = null
|
||||
|
|
@ -20,6 +22,7 @@ object MessageSender {
|
|||
}
|
||||
|
||||
fun send(context: Context, message: ClientMessage) {
|
||||
Log.d(TAG, "Sending ${message.serialize()}")
|
||||
synchronized(this) {
|
||||
websocket?.let {
|
||||
message.send(it)
|
||||
|
|
|
|||
|
|
@ -75,6 +75,9 @@ class ServerConnection(private val context: Context, private val releaseLock: ()
|
|||
ServerMessage.Ping -> onPing(ws)
|
||||
is ServerMessage.Register -> onRegister(message)
|
||||
is ServerMessage.Unegister -> onUnregister(message)
|
||||
is ServerMessage.Urgency -> {
|
||||
Log.d(TAG, "Urgency status=${message.status}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,25 @@ sealed class ClientMessage {
|
|||
@SerialName("nack")
|
||||
class Nack(val code: UInt?, val version: String) : ClientMessage()
|
||||
|
||||
@Serializable
|
||||
@SerialName("urgency")
|
||||
class MinUrgency(val min: Urgency) : ClientMessage()
|
||||
|
||||
@Serializable
|
||||
enum class Urgency {
|
||||
@SerialName("very-low")
|
||||
VeryLow,
|
||||
|
||||
@SerialName("low")
|
||||
Low,
|
||||
|
||||
@SerialName("normal")
|
||||
Normal,
|
||||
|
||||
@SerialName("high")
|
||||
High
|
||||
}
|
||||
|
||||
/**
|
||||
* Ping,
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ sealed class ServerMessage {
|
|||
*/
|
||||
@Serializable
|
||||
@SerialName("hello")
|
||||
class Hello(val uaid: String?, val status: UInt, val use_webpush: Boolean) : ServerMessage()
|
||||
data class Hello(val uaid: String?, val status: UInt, val use_webpush: Boolean) : ServerMessage()
|
||||
|
||||
/**
|
||||
* Register {
|
||||
|
|
@ -38,7 +38,7 @@ sealed class ServerMessage {
|
|||
*/
|
||||
@Serializable
|
||||
@SerialName("register")
|
||||
class Register(val channelID: String, val status: UInt, val pushEndpoint: String) : ServerMessage()
|
||||
data class Register(val channelID: String, val status: UInt, val pushEndpoint: String) : ServerMessage()
|
||||
|
||||
/**
|
||||
* Unregister {
|
||||
|
|
@ -49,7 +49,7 @@ sealed class ServerMessage {
|
|||
*/
|
||||
@Serializable
|
||||
@SerialName("unregister")
|
||||
class Unegister(val channelID: String, val status: UInt) : ServerMessage()
|
||||
data class Unegister(val channelID: String, val status: UInt) : ServerMessage()
|
||||
|
||||
/**
|
||||
* Broadcast {
|
||||
|
|
@ -60,7 +60,7 @@ sealed class ServerMessage {
|
|||
*/
|
||||
@Serializable
|
||||
@SerialName("broadcast")
|
||||
class Broadcast() : ServerMessage()
|
||||
data object Broadcast : ServerMessage()
|
||||
|
||||
/**
|
||||
* pub struct Notification {
|
||||
|
|
@ -93,6 +93,15 @@ sealed class ServerMessage {
|
|||
val headers: HashMap<String, String>?
|
||||
) : ServerMessage()
|
||||
|
||||
/**
|
||||
* Urgency {
|
||||
* status: u32,
|
||||
* },
|
||||
*/
|
||||
@Serializable
|
||||
@SerialName("urgency")
|
||||
data class Urgency(val status: UInt) : ServerMessage()
|
||||
|
||||
/**
|
||||
* Ping,
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -3,21 +3,31 @@ package org.unifiedpush.distributor.sunup.callback
|
|||
import android.content.Context
|
||||
import org.unifiedpush.distributor.callback.BatteryCallback
|
||||
import org.unifiedpush.distributor.callback.CallbackFactory
|
||||
import org.unifiedpush.distributor.sunup.BuildConfig
|
||||
import org.unifiedpush.distributor.sunup.api.MessageSender
|
||||
import org.unifiedpush.distributor.sunup.api.data.ClientMessage
|
||||
|
||||
object BatteryCallbackFactory : CallbackFactory<BatteryCallbackFactory.MainBatteryCallback>() {
|
||||
|
||||
class MainBatteryCallback : BatteryCallback() {
|
||||
|
||||
override fun onBatteryLow(context: Context) {
|
||||
// TODO: Subscribe to normal and high urgency messages only
|
||||
if (BuildConfig.URGENCY) {
|
||||
MessageSender.send(context, ClientMessage.MinUrgency(ClientMessage.Urgency.Normal))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBatteryOk(context: Context) {
|
||||
// TODO: Subscribe back to all messages
|
||||
if (BuildConfig.URGENCY) {
|
||||
MessageSender.send(context, ClientMessage.MinUrgency(ClientMessage.Urgency.VeryLow))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun new(context: Context): MainBatteryCallback {
|
||||
if (BuildConfig.URGENCY) {
|
||||
MessageSender.send(context, ClientMessage.MinUrgency(ClientMessage.Urgency.VeryLow))
|
||||
}
|
||||
return MainBatteryCallback()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue