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`).
|
5. In the android app, change server to the autoconnect endpoint (here `push.domain.tld`).
|
||||||
|
|
||||||
[Autopush]: https://github.com/mozilla-services/autopush-rs
|
[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", "\"http://10.0.2.2:8088\"")
|
||||||
buildConfigField("String", "DEFAULT_API_URL", "\"https://push.services.mozilla.com\"")
|
buildConfigField("String", "DEFAULT_API_URL", "\"https://push.services.mozilla.com\"")
|
||||||
|
buildConfigField("Boolean", "URGENCY", "false")
|
||||||
}
|
}
|
||||||
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
package org.unifiedpush.distributor.sunup.api
|
package org.unifiedpush.distributor.sunup.api
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.util.Log
|
||||||
import okhttp3.WebSocket
|
import okhttp3.WebSocket
|
||||||
import org.unifiedpush.distributor.sunup.api.data.ClientMessage
|
import org.unifiedpush.distributor.sunup.api.data.ClientMessage
|
||||||
import org.unifiedpush.distributor.sunup.services.RestartWorker
|
import org.unifiedpush.distributor.sunup.services.RestartWorker
|
||||||
|
import org.unifiedpush.distributor.sunup.utils.TAG
|
||||||
|
|
||||||
object MessageSender {
|
object MessageSender {
|
||||||
private var websocket: WebSocket? = null
|
private var websocket: WebSocket? = null
|
||||||
|
|
@ -20,6 +22,7 @@ object MessageSender {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun send(context: Context, message: ClientMessage) {
|
fun send(context: Context, message: ClientMessage) {
|
||||||
|
Log.d(TAG, "Sending ${message.serialize()}")
|
||||||
synchronized(this) {
|
synchronized(this) {
|
||||||
websocket?.let {
|
websocket?.let {
|
||||||
message.send(it)
|
message.send(it)
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,9 @@ class ServerConnection(private val context: Context, private val releaseLock: ()
|
||||||
ServerMessage.Ping -> onPing(ws)
|
ServerMessage.Ping -> onPing(ws)
|
||||||
is ServerMessage.Register -> onRegister(message)
|
is ServerMessage.Register -> onRegister(message)
|
||||||
is ServerMessage.Unegister -> onUnregister(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")
|
@SerialName("nack")
|
||||||
class Nack(val code: UInt?, val version: String) : ClientMessage()
|
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,
|
* Ping,
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ sealed class ServerMessage {
|
||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable
|
||||||
@SerialName("hello")
|
@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 {
|
* Register {
|
||||||
|
|
@ -38,7 +38,7 @@ sealed class ServerMessage {
|
||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable
|
||||||
@SerialName("register")
|
@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 {
|
* Unregister {
|
||||||
|
|
@ -49,7 +49,7 @@ sealed class ServerMessage {
|
||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable
|
||||||
@SerialName("unregister")
|
@SerialName("unregister")
|
||||||
class Unegister(val channelID: String, val status: UInt) : ServerMessage()
|
data class Unegister(val channelID: String, val status: UInt) : ServerMessage()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Broadcast {
|
* Broadcast {
|
||||||
|
|
@ -60,7 +60,7 @@ sealed class ServerMessage {
|
||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable
|
||||||
@SerialName("broadcast")
|
@SerialName("broadcast")
|
||||||
class Broadcast() : ServerMessage()
|
data object Broadcast : ServerMessage()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pub struct Notification {
|
* pub struct Notification {
|
||||||
|
|
@ -93,6 +93,15 @@ sealed class ServerMessage {
|
||||||
val headers: HashMap<String, String>?
|
val headers: HashMap<String, String>?
|
||||||
) : ServerMessage()
|
) : ServerMessage()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Urgency {
|
||||||
|
* status: u32,
|
||||||
|
* },
|
||||||
|
*/
|
||||||
|
@Serializable
|
||||||
|
@SerialName("urgency")
|
||||||
|
data class Urgency(val status: UInt) : ServerMessage()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ping,
|
* Ping,
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -3,21 +3,31 @@ package org.unifiedpush.distributor.sunup.callback
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import org.unifiedpush.distributor.callback.BatteryCallback
|
import org.unifiedpush.distributor.callback.BatteryCallback
|
||||||
import org.unifiedpush.distributor.callback.CallbackFactory
|
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>() {
|
object BatteryCallbackFactory : CallbackFactory<BatteryCallbackFactory.MainBatteryCallback>() {
|
||||||
|
|
||||||
class MainBatteryCallback : BatteryCallback() {
|
class MainBatteryCallback : BatteryCallback() {
|
||||||
|
|
||||||
override fun onBatteryLow(context: Context) {
|
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) {
|
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 {
|
override fun new(context: Context): MainBatteryCallback {
|
||||||
|
if (BuildConfig.URGENCY) {
|
||||||
|
MessageSender.send(context, ClientMessage.MinUrgency(ClientMessage.Urgency.VeryLow))
|
||||||
|
}
|
||||||
return MainBatteryCallback()
|
return MainBatteryCallback()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue