Skip to content

Commit

Permalink
Added: withDeliveryReport option support
Browse files Browse the repository at this point in the history
  • Loading branch information
capcom6 committed Dec 4, 2023
1 parent 7f39858 commit 12729f1
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ class GatewayApi() {
val message: String,
val phoneNumbers: List<String>,
val simNumber: Int? = null,
val withDeliveryReport: Boolean? = null,
)

data class RecipientState(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,8 @@ class GatewayModule(
it.message,
it.phoneNumbers,
Message.Source.Gateway,
it.simNumber?.let { it - 1 }
it.simNumber?.let { it - 1 },
it.withDeliveryReport
)
} catch (th: Throwable) {
th.printStackTrace()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ class WebService : Service() {
request.message,
request.phoneNumbers,
Message.Source.Local,
request.simNumber?.let { it - 1 }
request.simNumber?.let { it - 1 },
request.withDeliveryReport
)
} catch (e: IllegalArgumentException) {
return@post call.respond(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ data class PostMessageRequest(
val message: String,
val phoneNumbers: List<String>,
val simNumber: Int? = null,
val withDeliveryReport: Boolean? = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ class MessagesService(
text: String,
recipients: List<String>,
source: Message.Source,
simNumber: Int? = null,
simNumber: Int?,
withDeliveryReport: Boolean?
): MessageWithRecipients {
val id = id ?: NanoIdUtils.randomNanoId()

Expand Down Expand Up @@ -73,7 +74,8 @@ class MessagesService(
text,
message.recipients.filter { it.state == Message.State.Pending }
.map { it.phoneNumber },
simNumber
simNumber,
withDeliveryReport ?: true
)
} catch (e: Exception) {
e.printStackTrace()
Expand Down Expand Up @@ -156,7 +158,8 @@ class MessagesService(
id: String,
message: String,
recipients: List<String>,
simNumber: Int?
simNumber: Int?,
withDeliveryReport: Boolean
) {
val smsManager: SmsManager = getSmsManager(simNumber)

Expand All @@ -172,17 +175,20 @@ class MessagesService(
),
PendingIntent.FLAG_IMMUTABLE
)
val deliveredIntent = PendingIntent.getBroadcast(
context,
0,
Intent(
EventsReceiver.ACTION_DELIVERED,
Uri.parse("$id|$it"),
val deliveredIntent = when (withDeliveryReport) {
false -> null
true -> PendingIntent.getBroadcast(
context,
EventsReceiver::class.java
),
PendingIntent.FLAG_IMMUTABLE
)
0,
Intent(
EventsReceiver.ACTION_DELIVERED,
Uri.parse("$id|$it"),
context,
EventsReceiver::class.java
),
PendingIntent.FLAG_IMMUTABLE
)
}

try {
val parts = smsManager.divideMessage(message)
Expand All @@ -193,7 +199,7 @@ class MessagesService(
null,
parts,
ArrayList(parts.map { sentIntent }),
ArrayList(parts.map { deliveredIntent })
deliveredIntent?.let { ArrayList(parts.map { deliveredIntent }) }
)
} else {
smsManager.sendTextMessage(it, null, message, sentIntent, deliveredIntent)
Expand Down
5 changes: 5 additions & 0 deletions docs/api/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,11 @@
"description": "*(cloud-only)* message storage time in `Pending` state, `null` - forever",
"minimum": 5,
"example": 86400
},
"withDeliveryReport": {
"type": "boolean",
"description": "request delivery report",
"default": true
}
},
"required": [
Expand Down

0 comments on commit 12729f1

Please sign in to comment.