Skip to content

Commit

Permalink
#1401 - Fix message stuck as sending when delayed messaging enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
moezbhatti committed Jun 7, 2019
1 parent 1215770 commit 4c8e1a1
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 16 deletions.
Expand Up @@ -16,27 +16,31 @@
* You should have received a copy of the GNU General Public License
* along with QKSMS. If not, see <http://www.gnu.org/licenses/>.
*/
package com.moez.QKSMS.service
package com.moez.QKSMS.receiver

import android.app.IntentService
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.moez.QKSMS.interactor.RetrySending
import com.moez.QKSMS.repository.MessageRepository
import dagger.android.AndroidInjection
import javax.inject.Inject

class SendSmsService : IntentService(null) {
class SendSmsReceiver : BroadcastReceiver() {

@Inject lateinit var messageRepo: MessageRepository
@Inject lateinit var retrySending: RetrySending

override fun onHandleIntent(intent: Intent) {
AndroidInjection.inject(this)
override fun onReceive(context: Context, intent: Intent) {
AndroidInjection.inject(this, context)

val id = intent.getLongExtra("id", 0L)
messageRepo.getMessage(id)?.let { message ->
retrySending.buildObservable(message).blockingSubscribe()
}
intent.getLongExtra("id", -1L)
.takeIf { it >= 0 }
?.let(messageRepo::getMessage)
?.let { message ->
val result = goAsync()
retrySending.execute(message) { result.finish() }
}
}

}
}
Expand Up @@ -42,9 +42,9 @@ import com.moez.QKSMS.model.Attachment
import com.moez.QKSMS.model.Conversation
import com.moez.QKSMS.model.Message
import com.moez.QKSMS.model.MmsPart
import com.moez.QKSMS.receiver.SendSmsReceiver
import com.moez.QKSMS.receiver.SmsDeliveredReceiver
import com.moez.QKSMS.receiver.SmsSentReceiver
import com.moez.QKSMS.service.SendSmsService
import com.moez.QKSMS.util.ImageUtils
import com.moez.QKSMS.util.Preferences
import com.moez.QKSMS.util.tryOrNull
Expand Down Expand Up @@ -313,8 +313,8 @@ class MessageRepositoryImpl @Inject constructor(
}

private fun getIntentForDelayedSms(id: Long): PendingIntent {
val intent = Intent(context, SendSmsService::class.java).putExtra("id", id)
return PendingIntent.getService(context, id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
val intent = Intent(context, SendSmsReceiver::class.java).putExtra("id", id)
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 {
Expand Down
2 changes: 1 addition & 1 deletion presentation/src/main/AndroidManifest.xml
Expand Up @@ -166,6 +166,7 @@

<service android:name="com.android.mms.transaction.TransactionService" />
<service android:name=".feature.backup.RestoreBackupService" />
<receiver android:name=".receiver.SendSmsReceiver" />
<service
android:name=".feature.widget.WidgetService"
android:permission="android.permission.BIND_REMOTEVIEWS" />
Expand All @@ -191,7 +192,6 @@
<action android:name="android.service.chooser.ChooserTargetService" />
</intent-filter>
</service>
<service android:name=".service.SendSmsService" />

<meta-data
android:name="preloaded_fonts"
Expand Down
Expand Up @@ -21,7 +21,7 @@ package com.moez.QKSMS.injection.android
import com.moez.QKSMS.feature.backup.RestoreBackupService
import com.moez.QKSMS.injection.scope.ActivityScope
import com.moez.QKSMS.service.HeadlessSmsSendService
import com.moez.QKSMS.service.SendSmsService
import com.moez.QKSMS.receiver.SendSmsReceiver
import dagger.Module
import dagger.android.ContributesAndroidInjector

Expand All @@ -38,6 +38,6 @@ abstract class ServiceBuilderModule {

@ActivityScope
@ContributesAndroidInjector()
abstract fun bindSendSmsReceiver(): SendSmsService
abstract fun bindSendSmsReceiver(): SendSmsReceiver

}

0 comments on commit 4c8e1a1

Please sign in to comment.