diff --git a/data/src/main/java/com/moez/QKSMS/receiver/DeleteMessagesReceiver.kt b/data/src/main/java/com/moez/QKSMS/receiver/DeleteMessagesReceiver.kt new file mode 100644 index 00000000..7d5e1525 --- /dev/null +++ b/data/src/main/java/com/moez/QKSMS/receiver/DeleteMessagesReceiver.kt @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2017 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ +package com.moez.QKSMS.receiver + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import com.moez.QKSMS.interactor.DeleteMessages +import dagger.android.AndroidInjection +import javax.inject.Inject + +class DeleteMessagesReceiver : BroadcastReceiver() { + + @Inject lateinit var deleteMessages: DeleteMessages + + override fun onReceive(context: Context, intent: Intent) { + AndroidInjection.inject(this, context) + + val pendingResult = goAsync() + val threadId = intent.getLongExtra("threadId", 0) + val messageIds = intent.getLongArrayExtra("messageIds") + deleteMessages.execute(DeleteMessages.Params(messageIds.toList(), threadId)) { pendingResult.finish() } + } + +} \ No newline at end of file diff --git a/domain/src/main/java/com/moez/QKSMS/interactor/DeleteMessages.kt b/domain/src/main/java/com/moez/QKSMS/interactor/DeleteMessages.kt index a3db035e..9d0b0a26 100644 --- a/domain/src/main/java/com/moez/QKSMS/interactor/DeleteMessages.kt +++ b/domain/src/main/java/com/moez/QKSMS/interactor/DeleteMessages.kt @@ -18,6 +18,7 @@ */ package com.moez.QKSMS.interactor +import com.moez.QKSMS.manager.NotificationManager import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.repository.MessageRepository import io.reactivex.Flowable @@ -26,6 +27,7 @@ import javax.inject.Inject class DeleteMessages @Inject constructor( private val conversationRepo: ConversationRepository, private val messageRepo: MessageRepository, + private val notificationManager: NotificationManager, private val updateBadge: UpdateBadge ) : Interactor() { @@ -35,6 +37,7 @@ class DeleteMessages @Inject constructor( return Flowable.just(params.messageIds.toLongArray()) .doOnNext { messageIds -> messageRepo.deleteMessages(*messageIds) } // Delete the messages .doOnNext { params.threadId?.let { conversationRepo.updateConversations(it) } } // Update the conversation + .doOnNext { params.threadId?.let { notificationManager.update(it) } } .flatMap { updateBadge.buildObservable(Unit) } // Update the badge } diff --git a/presentation/src/main/AndroidManifest.xml b/presentation/src/main/AndroidManifest.xml index f24978b6..8b5a6619 100644 --- a/presentation/src/main/AndroidManifest.xml +++ b/presentation/src/main/AndroidManifest.xml @@ -104,6 +104,7 @@ + diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt index e467f043..082f8a6d 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/NotificationManagerImpl.kt @@ -38,8 +38,10 @@ import com.moez.QKSMS.common.util.extensions.dpToPx import com.moez.QKSMS.extensions.isImage import com.moez.QKSMS.feature.compose.ComposeActivity import com.moez.QKSMS.feature.qkreply.QkReplyActivity +import com.moez.QKSMS.interactor.DeleteMessages import com.moez.QKSMS.manager.PermissionManager import com.moez.QKSMS.mapper.CursorToPartImpl +import com.moez.QKSMS.receiver.DeleteMessagesReceiver import com.moez.QKSMS.receiver.MarkReadReceiver import com.moez.QKSMS.receiver.MarkSeenReceiver import com.moez.QKSMS.receiver.RemoteMessagingReceiver @@ -230,6 +232,14 @@ class NotificationManagerImpl @Inject constructor( .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_CALL).build() } + Preferences.NOTIFICATION_ACTION_DELETE -> { + val messageIds = messages.map { it.id }.toLongArray() + val intent = Intent(context, DeleteMessagesReceiver::class.java).putExtra("threadId", threadId).putExtra("messageIds", messageIds) + val pi = PendingIntent.getBroadcast(context, threadId.toInt() + 60000, intent, PendingIntent.FLAG_UPDATE_CURRENT) + NotificationCompat.Action.Builder(R.drawable.ic_delete_white_24dp, actionLabels[action], pi) + .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_DELETE).build() + } + else -> null } } diff --git a/presentation/src/main/java/com/moez/QKSMS/injection/android/BroadcastReceiverBuilderModule.kt b/presentation/src/main/java/com/moez/QKSMS/injection/android/BroadcastReceiverBuilderModule.kt index 2b73e816..6ee636c2 100644 --- a/presentation/src/main/java/com/moez/QKSMS/injection/android/BroadcastReceiverBuilderModule.kt +++ b/presentation/src/main/java/com/moez/QKSMS/injection/android/BroadcastReceiverBuilderModule.kt @@ -22,6 +22,7 @@ import com.moez.QKSMS.feature.widget.WidgetProvider import com.moez.QKSMS.injection.scope.ActivityScope import com.moez.QKSMS.receiver.BootReceiver import com.moez.QKSMS.receiver.DefaultSmsChangedReceiver +import com.moez.QKSMS.receiver.DeleteMessagesReceiver import com.moez.QKSMS.receiver.MarkReadReceiver import com.moez.QKSMS.receiver.MarkSeenReceiver import com.moez.QKSMS.receiver.MmsReceivedReceiver @@ -50,6 +51,10 @@ abstract class BroadcastReceiverBuilderModule { @ContributesAndroidInjector() abstract fun bindDefaultSmsChangedReceiver(): DefaultSmsChangedReceiver + @ActivityScope + @ContributesAndroidInjector() + abstract fun bindDeleteMessagesReceiver(): DeleteMessagesReceiver + @ActivityScope @ContributesAndroidInjector() abstract fun bindMarkReadReceiver(): MarkReadReceiver diff --git a/presentation/src/main/res/values-ar/strings.xml b/presentation/src/main/res/values-ar/strings.xml index 6e0ce3c2..30d4ea00 100644 --- a/presentation/src/main/res/values-ar/strings.xml +++ b/presentation/src/main/res/values-ar/strings.xml @@ -255,6 +255,7 @@ علّمها مقروءة الرد اتصال + حذف إلغاء حذف diff --git a/presentation/src/main/res/values-bn/strings.xml b/presentation/src/main/res/values-bn/strings.xml index 578b2758..44b6521f 100644 --- a/presentation/src/main/res/values-bn/strings.xml +++ b/presentation/src/main/res/values-bn/strings.xml @@ -250,6 +250,7 @@ Mark read Reply Call + Delete বাতিল করুন মুছে ফেলুন diff --git a/presentation/src/main/res/values-cs/strings.xml b/presentation/src/main/res/values-cs/strings.xml index 83e52634..417671a9 100644 --- a/presentation/src/main/res/values-cs/strings.xml +++ b/presentation/src/main/res/values-cs/strings.xml @@ -252,6 +252,7 @@ Přečteno Odpovědět Volat + Smazat Zrušit Odstranit diff --git a/presentation/src/main/res/values-da/strings.xml b/presentation/src/main/res/values-da/strings.xml index 37b197fd..0bcb9c7e 100644 --- a/presentation/src/main/res/values-da/strings.xml +++ b/presentation/src/main/res/values-da/strings.xml @@ -250,6 +250,7 @@ Markér som læst Besvar Ring op + Slet Annullér Slet diff --git a/presentation/src/main/res/values-de/strings.xml b/presentation/src/main/res/values-de/strings.xml index 3c800fcc..965a2b90 100644 --- a/presentation/src/main/res/values-de/strings.xml +++ b/presentation/src/main/res/values-de/strings.xml @@ -250,6 +250,7 @@ Als gelesen markieren Antworten Anrufen + Löschen Abbrechen Löschen diff --git a/presentation/src/main/res/values-es/strings.xml b/presentation/src/main/res/values-es/strings.xml index 12971551..57f8eb5c 100644 --- a/presentation/src/main/res/values-es/strings.xml +++ b/presentation/src/main/res/values-es/strings.xml @@ -250,6 +250,7 @@ Mark read Reply Call + Eliminar Cancelar Eliminar diff --git a/presentation/src/main/res/values-fa/strings.xml b/presentation/src/main/res/values-fa/strings.xml index fd56e4d3..f0e798e6 100644 --- a/presentation/src/main/res/values-fa/strings.xml +++ b/presentation/src/main/res/values-fa/strings.xml @@ -250,6 +250,7 @@ Mark read Reply Call + Delete کنسل حذف diff --git a/presentation/src/main/res/values-fi/strings.xml b/presentation/src/main/res/values-fi/strings.xml index dac5b720..b36e6945 100644 --- a/presentation/src/main/res/values-fi/strings.xml +++ b/presentation/src/main/res/values-fi/strings.xml @@ -250,6 +250,7 @@ Merkitse luetuksi Vastaa Soita + Poista Peruuta Poista diff --git a/presentation/src/main/res/values-fr/strings.xml b/presentation/src/main/res/values-fr/strings.xml index c2c126f8..5ae2625d 100644 --- a/presentation/src/main/res/values-fr/strings.xml +++ b/presentation/src/main/res/values-fr/strings.xml @@ -250,6 +250,7 @@ Marquer comme lu Répondre Appeler + Supprimer Annuler Supprimer diff --git a/presentation/src/main/res/values-hi/strings.xml b/presentation/src/main/res/values-hi/strings.xml index 497d3bc2..9aa84aca 100644 --- a/presentation/src/main/res/values-hi/strings.xml +++ b/presentation/src/main/res/values-hi/strings.xml @@ -250,6 +250,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-hr/strings.xml b/presentation/src/main/res/values-hr/strings.xml index 8fbcbbd8..624bd509 100644 --- a/presentation/src/main/res/values-hr/strings.xml +++ b/presentation/src/main/res/values-hr/strings.xml @@ -251,6 +251,7 @@ Mark read Reply Call + Delete Odustani Izbriši diff --git a/presentation/src/main/res/values-hu/strings.xml b/presentation/src/main/res/values-hu/strings.xml index ecaa1799..225d1445 100644 --- a/presentation/src/main/res/values-hu/strings.xml +++ b/presentation/src/main/res/values-hu/strings.xml @@ -250,6 +250,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-in/strings.xml b/presentation/src/main/res/values-in/strings.xml index 6f674c05..18e94ce8 100644 --- a/presentation/src/main/res/values-in/strings.xml +++ b/presentation/src/main/res/values-in/strings.xml @@ -249,6 +249,7 @@ Mark read Reply Call + Delete Batal Hapus diff --git a/presentation/src/main/res/values-it/strings.xml b/presentation/src/main/res/values-it/strings.xml index 9b912853..f8b35055 100644 --- a/presentation/src/main/res/values-it/strings.xml +++ b/presentation/src/main/res/values-it/strings.xml @@ -250,6 +250,7 @@ Segna come letto Rispondi Chiama + Elimina Annulla Elimina diff --git a/presentation/src/main/res/values-iw/strings.xml b/presentation/src/main/res/values-iw/strings.xml index dfcf8f21..ad25e202 100644 --- a/presentation/src/main/res/values-iw/strings.xml +++ b/presentation/src/main/res/values-iw/strings.xml @@ -252,6 +252,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-ja/strings.xml b/presentation/src/main/res/values-ja/strings.xml index 4dbe1b20..4ef693d5 100644 --- a/presentation/src/main/res/values-ja/strings.xml +++ b/presentation/src/main/res/values-ja/strings.xml @@ -249,6 +249,7 @@ Mark read Reply Call + Delete キャンセル 削除 diff --git a/presentation/src/main/res/values-ko/strings.xml b/presentation/src/main/res/values-ko/strings.xml index 3a9df4b5..0a83dd79 100644 --- a/presentation/src/main/res/values-ko/strings.xml +++ b/presentation/src/main/res/values-ko/strings.xml @@ -249,6 +249,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-lt/strings.xml b/presentation/src/main/res/values-lt/strings.xml index 1206accc..e8217198 100644 --- a/presentation/src/main/res/values-lt/strings.xml +++ b/presentation/src/main/res/values-lt/strings.xml @@ -252,6 +252,7 @@ Mark read Reply Call + Delete Atšaukti Ištrinti diff --git a/presentation/src/main/res/values-ne/strings.xml b/presentation/src/main/res/values-ne/strings.xml index 0ab6a10e..168a9f02 100644 --- a/presentation/src/main/res/values-ne/strings.xml +++ b/presentation/src/main/res/values-ne/strings.xml @@ -250,6 +250,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-nl/strings.xml b/presentation/src/main/res/values-nl/strings.xml index 9282ed52..c30ddafe 100644 --- a/presentation/src/main/res/values-nl/strings.xml +++ b/presentation/src/main/res/values-nl/strings.xml @@ -250,6 +250,7 @@ Markeren als gelezen Beantwoorden Bellen + Verwijderen Annuleren Verwijderen diff --git a/presentation/src/main/res/values-no/strings.xml b/presentation/src/main/res/values-no/strings.xml index cd5a3662..a7d667b2 100644 --- a/presentation/src/main/res/values-no/strings.xml +++ b/presentation/src/main/res/values-no/strings.xml @@ -250,6 +250,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-pl/strings.xml b/presentation/src/main/res/values-pl/strings.xml index 7456b8bc..b39a4f7e 100644 --- a/presentation/src/main/res/values-pl/strings.xml +++ b/presentation/src/main/res/values-pl/strings.xml @@ -252,6 +252,7 @@ Oznacz jako przeczytane Odpowiedz Zadzwoń + Usuń Anuluj Usuń diff --git a/presentation/src/main/res/values-pt-rBR/strings.xml b/presentation/src/main/res/values-pt-rBR/strings.xml index bf2b4590..be53546b 100644 --- a/presentation/src/main/res/values-pt-rBR/strings.xml +++ b/presentation/src/main/res/values-pt-rBR/strings.xml @@ -250,6 +250,7 @@ Marcar como lida Responder Ligar + Apagar Cancelar Apagar diff --git a/presentation/src/main/res/values-pt/strings.xml b/presentation/src/main/res/values-pt/strings.xml index 7a1ca6ec..897a6c38 100644 --- a/presentation/src/main/res/values-pt/strings.xml +++ b/presentation/src/main/res/values-pt/strings.xml @@ -250,6 +250,7 @@ Marcar como lida Responder Ligar + Apagar Cancelar Apagar diff --git a/presentation/src/main/res/values-ro/strings.xml b/presentation/src/main/res/values-ro/strings.xml index 556a7977..023a0d99 100644 --- a/presentation/src/main/res/values-ro/strings.xml +++ b/presentation/src/main/res/values-ro/strings.xml @@ -251,6 +251,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-ru/strings.xml b/presentation/src/main/res/values-ru/strings.xml index 43931348..5f0a6b1f 100644 --- a/presentation/src/main/res/values-ru/strings.xml +++ b/presentation/src/main/res/values-ru/strings.xml @@ -252,6 +252,7 @@ Отметить непрочитанным Ответить Позвонить + Удалить Отмена Удалить diff --git a/presentation/src/main/res/values-sk/strings.xml b/presentation/src/main/res/values-sk/strings.xml index 0c8f3d11..946ecde4 100644 --- a/presentation/src/main/res/values-sk/strings.xml +++ b/presentation/src/main/res/values-sk/strings.xml @@ -252,6 +252,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-sr/strings.xml b/presentation/src/main/res/values-sr/strings.xml index 8e100f80..46a9711b 100644 --- a/presentation/src/main/res/values-sr/strings.xml +++ b/presentation/src/main/res/values-sr/strings.xml @@ -251,6 +251,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-sv/strings.xml b/presentation/src/main/res/values-sv/strings.xml index f25f1008..1c3a0c23 100644 --- a/presentation/src/main/res/values-sv/strings.xml +++ b/presentation/src/main/res/values-sv/strings.xml @@ -250,6 +250,7 @@ Mark read Svara Ring + Radera Avbryt Radera diff --git a/presentation/src/main/res/values-th/strings.xml b/presentation/src/main/res/values-th/strings.xml index 304752d6..70a66ee8 100644 --- a/presentation/src/main/res/values-th/strings.xml +++ b/presentation/src/main/res/values-th/strings.xml @@ -249,6 +249,7 @@ Mark read Reply Call + Delete ยกเลิก ลบ diff --git a/presentation/src/main/res/values-tl/strings.xml b/presentation/src/main/res/values-tl/strings.xml index 6ba79cf9..4f0aec1a 100644 --- a/presentation/src/main/res/values-tl/strings.xml +++ b/presentation/src/main/res/values-tl/strings.xml @@ -250,6 +250,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-tr/strings.xml b/presentation/src/main/res/values-tr/strings.xml index a93fe547..792c508c 100644 --- a/presentation/src/main/res/values-tr/strings.xml +++ b/presentation/src/main/res/values-tr/strings.xml @@ -250,6 +250,7 @@ Okundu olarak işaretle Yanıtla Ara + Sil İptal Sil diff --git a/presentation/src/main/res/values-uk/strings.xml b/presentation/src/main/res/values-uk/strings.xml index 032829eb..a9edc5e3 100644 --- a/presentation/src/main/res/values-uk/strings.xml +++ b/presentation/src/main/res/values-uk/strings.xml @@ -252,6 +252,7 @@ Позначити як прочитане Відповісти Зателефонувати + Видалити Скасувати Видалити diff --git a/presentation/src/main/res/values-ur/strings.xml b/presentation/src/main/res/values-ur/strings.xml index 89431824..5c95420c 100644 --- a/presentation/src/main/res/values-ur/strings.xml +++ b/presentation/src/main/res/values-ur/strings.xml @@ -250,6 +250,7 @@ Mark read Reply Call + Delete Cancel Delete diff --git a/presentation/src/main/res/values-vi/strings.xml b/presentation/src/main/res/values-vi/strings.xml index f81c83fd..bc05e49b 100644 --- a/presentation/src/main/res/values-vi/strings.xml +++ b/presentation/src/main/res/values-vi/strings.xml @@ -249,6 +249,7 @@ Mark read Reply Call + Delete Hủy Xóa diff --git a/presentation/src/main/res/values-zh-rCN/strings.xml b/presentation/src/main/res/values-zh-rCN/strings.xml index 33e82005..152838c7 100644 --- a/presentation/src/main/res/values-zh-rCN/strings.xml +++ b/presentation/src/main/res/values-zh-rCN/strings.xml @@ -249,6 +249,7 @@ Mark read Reply Call + Delete 取消 删除 diff --git a/presentation/src/main/res/values-zh/strings.xml b/presentation/src/main/res/values-zh/strings.xml index 421f8354..fe411d3f 100644 --- a/presentation/src/main/res/values-zh/strings.xml +++ b/presentation/src/main/res/values-zh/strings.xml @@ -249,6 +249,7 @@ Mark read Reply Call + Delete 取消 刪除 diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index e810df90..583e4055 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -276,6 +276,7 @@ Mark read Reply Call + Delete Cancel