Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Qksms existing send functionality #10

Merged
merged 4 commits into from
Dec 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -294,13 +294,15 @@ class MessageRepositoryImpl @Inject constructor(
}

override fun sendMessage(
saveSentMessage: Boolean,
subId: Int,
threadId: Long,
addresses: List<String>,
body: String,
attachments: List<Attachment>,
delay: Int
) {
val saveMessage = delay > 0 || saveSentMessage
val signedBody = when {
prefs.signature.get().isEmpty() -> body
body.isNotEmpty() -> body + '\n' + prefs.signature.get()
Expand All @@ -323,7 +325,7 @@ class MessageRepositoryImpl @Inject constructor(
if (addresses.size == 1 && attachments.isEmpty() && !forceMms) { // SMS
if (delay > 0) { // With delay
val sendTime = System.currentTimeMillis() + delay
val message = insertSentSms(subId, threadId, addresses.first(), strippedBody, sendTime)
val message = insertSentSms(subId, threadId, addresses.first(), strippedBody, sendTime, saveMessage)

val intent = getIntentForDelayedSms(message.id)

Expand All @@ -334,7 +336,7 @@ class MessageRepositoryImpl @Inject constructor(
alarmManager.setExact(AlarmManager.RTC_WAKEUP, sendTime, intent)
}
} else { // No delay
val message = insertSentSms(subId, threadId, addresses.first(), strippedBody, now())
val message = insertSentSms(subId, threadId, addresses.first(), strippedBody, now(), saveMessage)
sendSms(message)
}
} else { // MMS
Expand Down Expand Up @@ -444,15 +446,19 @@ class MessageRepositoryImpl @Inject constructor(
?: arrayListOf()

val sentIntents = parts.map {
val intent = Intent(context, SmsSentReceiver::class.java).putExtra("id", message.id)
PendingIntent.getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
if (message.id <= 0) null else {
val intent = Intent(context, SmsSentReceiver::class.java).putExtra("id", message.id)
PendingIntent.getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
}
}

val deliveredIntents = parts.map {
val intent = Intent(context, SmsDeliveredReceiver::class.java).putExtra("id", message.id)
val pendingIntent = PendingIntent
.getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
if (prefs.delivery.get()) pendingIntent else null
if (message.id <= 0) null else {
val intent = Intent(context, SmsDeliveredReceiver::class.java).putExtra("id", message.id)
val pendingIntent = PendingIntent
.getBroadcast(context, message.id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
if (prefs.delivery.get()) pendingIntent else null
}
}

try {
Expand Down Expand Up @@ -498,8 +504,7 @@ class MessageRepositoryImpl @Inject constructor(
return PendingIntent.getBroadcast(context, id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
}

override fun insertSentSms(subId: Int, threadId: Long, address: String, body: String, date: Long): Message {

override fun insertSentSms(subId: Int, threadId: Long, address: String, body: String, date: Long, saveMessage: Boolean): Message {
// Insert the message to Realm
val message = Message().apply {
this.threadId = threadId
Expand All @@ -514,6 +519,8 @@ class MessageRepositoryImpl @Inject constructor(
read = true
seen = true
}
if (!saveMessage) return message

val realm = Realm.getDefaultInstance()
var managedMessage: Message? = null
realm.executeTransaction { managedMessage = realm.copyToRealmOrUpdate(message) }
Expand Down
5 changes: 3 additions & 2 deletions domain/src/main/java/com/moez/QKSMS/interactor/SendMessage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ class SendMessage @Inject constructor(
val addresses: List<String>,
val body: String,
val attachments: List<Attachment> = listOf(),
val delay: Int = 0
val delay: Int = 0,
val saveSentMessage: Boolean = true
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please move this to the top as well.

)

override fun buildObservable(params: Params): Flowable<*> = Flowable.just(Unit)
Expand All @@ -51,7 +52,7 @@ class SendMessage @Inject constructor(
0L -> TelephonyCompat.getOrCreateThreadId(context, params.addresses.toSet())
else -> params.threadId
}
messageRepo.sendMessage(params.subId, threadId, params.addresses, params.body, params.attachments,
messageRepo.sendMessage(params.saveSentMessage, params.subId, threadId, params.addresses, params.body, params.attachments,
params.delay)
}
.mapNotNull {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ interface MessageRepository {
fun markUnread(vararg threadIds: Long)

fun sendMessage(
saveSentMessage: Boolean,
subId: Int,
threadId: Long,
addresses: List<String>,
Expand All @@ -83,7 +84,7 @@ interface MessageRepository {
*/
fun cancelDelayedSms(id: Long)

fun insertSentSms(subId: Int, threadId: Long, address: String, body: String, date: Long): Message
fun insertSentSms(subId: Int, threadId: Long, address: String, body: String, date: Long, saveMessage: Boolean): Message

fun insertReceivedSms(subId: Int, address: String, body: String, sentTime: Long): Message

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class GatewayServer(
) : Server(port) {

interface Handler {
fun onSendMessage(phone: String, message: String): String?
fun onSendMessage(phone: String, message: String, saveMessage: Boolean): String?
}

init {
Expand Down Expand Up @@ -50,18 +50,20 @@ class GatewayServer(

var phone: String? = null
var message: String? = null
var saveMessage = false

val reader = JsonReader(request.reader)
reader.beginObject()
while (reader.hasNext()) {
when (reader.nextName()) {
"to" -> phone = reader.nextString()
"message" -> message = reader.nextString()
"to" -> phone = reader.nextString()
"message" -> message = reader.nextString()
"saveMessage" -> saveMessage = reader.nextBoolean()
}
}

val result = if (phone != null && message != null) {
handler.onSendMessage(phone, message)
handler.onSendMessage(phone, message, saveMessage)
} else {
"Missing phone or message"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ import android.widget.Toast
import androidx.core.app.NotificationCompat
import com.moez.QKSMS.R
import com.moez.QKSMS.common.util.NotificationManagerImpl
import com.moez.QKSMS.injection.appComponent
import com.moez.QKSMS.interactor.SendMessage
import javax.inject.Inject

class GatewayService : Service(), GatewayServer.Handler {

Expand All @@ -21,6 +24,7 @@ class GatewayService : Service(), GatewayServer.Handler {
}

private lateinit var gatewayServer: GatewayServer
@Inject lateinit var sendMessage: SendMessage

private fun createNotification(context: Context): Notification {
val intent = Intent(this, GatewayActivity::class.java)
Expand All @@ -36,6 +40,7 @@ class GatewayService : Service(), GatewayServer.Handler {

@Suppress("DEPRECATION")
override fun onCreate() {
appComponent.inject(this)
val key = PreferenceManager
.getDefaultSharedPreferences(this)
.getString(GatewayViewModel.PREFERENCE_KEY, null)
Expand All @@ -56,9 +61,9 @@ class GatewayService : Service(), GatewayServer.Handler {
return null
}

override fun onSendMessage(phone: String, message: String): String? {
override fun onSendMessage(phone: String, message: String, saveMessage: Boolean): String? {
return try {
SmsManager.getDefault().sendTextMessage(phone, null, message, null, null)
sendMessage.execute(SendMessage.Params(-1, 0L, listOf(phone), message, saveSentMessage = saveMessage))
null
} catch (e: Exception) {
Toast.makeText(this, e.message, Toast.LENGTH_LONG).show()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import com.moez.QKSMS.feature.blocking.messages.BlockedMessagesController
import com.moez.QKSMS.feature.blocking.numbers.BlockedNumbersController
import com.moez.QKSMS.feature.compose.editing.DetailedChipView
import com.moez.QKSMS.feature.conversationinfo.injection.ConversationInfoComponent
import com.moez.QKSMS.feature.gateway.GatewayService
import com.moez.QKSMS.feature.settings.SettingsController
import com.moez.QKSMS.feature.settings.about.AboutController
import com.moez.QKSMS.feature.settings.swipe.SwipeActionsController
Expand Down Expand Up @@ -73,6 +74,7 @@ interface AppComponent {
fun inject(dialog: QkDialog)

fun inject(service: WidgetAdapter)
fun inject(service: GatewayService)

/**
* This can't use AndroidInjection, or else it will crash on pre-marshmallow devices
Expand Down