Add preference for qkreply

This commit is contained in:
Moez Bhatti
2018-03-28 19:29:31 -04:00
parent e8d86364b0
commit 481c0336ff
7 changed files with 46 additions and 14 deletions
+2
View File
@@ -18,6 +18,7 @@
*/
package util
import android.os.Build
import android.provider.Settings
import com.f2prateek.rx.preferences2.Preference
import com.f2prateek.rx.preferences2.RxSharedPreferences
@@ -41,6 +42,7 @@ class Preferences @Inject constructor(private val rxPrefs: RxSharedPreferences)
val black = rxPrefs.getBoolean("black", false)
val autoEmoji = rxPrefs.getBoolean("autoEmoji", true)
val delivery = rxPrefs.getBoolean("delivery", false)
val qkreply = rxPrefs.getBoolean("qkreply", Build.VERSION.SDK_INT < Build.VERSION_CODES.N)
val unicode = rxPrefs.getBoolean("unicode", false)
val mms = rxPrefs.getBoolean("mms", true)
val mmsSize = rxPrefs.getInteger("mmsSize", 100)
@@ -48,7 +48,7 @@ class NotificationManagerImpl @Inject constructor(
private val prefs: Preferences,
private val colors: Colors,
private val messageRepo: MessageRepository
): manager.NotificationManager {
) : manager.NotificationManager {
companion object {
const val DEFAULT_CHANNEL_ID = "notifications_default"
@@ -92,15 +92,19 @@ class NotificationManagerImpl @Inject constructor(
val conversation = messageRepo.getConversation(threadId) ?: return
// If QK Reply is enabled, use the default importance so that we don't have a notification
// card in addition to the popup. Otherwise, use max importance
val importance = when (prefs.qkreply.get()) {
true -> NotificationManagerCompat.IMPORTANCE_DEFAULT
false -> NotificationManagerCompat.IMPORTANCE_MAX
}
val style = NotificationCompat.MessagingStyle("Me")
messages.forEach { message ->
val name = if (message.isMe()) null else conversation.getTitle()
style.addMessage(message.getSummary(), message.date, name)
}
val intent = Intent(context, QkReplyActivity::class.java).putExtra("threadId", threadId).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
val contentIntent = Intent(context, ComposeActivity::class.java).putExtra("threadId", threadId)
val taskStackBuilder = TaskStackBuilder.create(context)
taskStackBuilder.addParentStack(ComposeActivity::class.java)
@@ -116,7 +120,7 @@ class NotificationManagerImpl @Inject constructor(
val notification = NotificationCompat.Builder(context, getChannelIdForNotification(threadId))
.setColor(colors.themeForConversation(threadId).blockingFirst())
.setPriority(NotificationManagerCompat.IMPORTANCE_MAX)
.setPriority(importance)
.setSmallIcon(R.drawable.ic_notification)
.setNumber(messages.size)
.setAutoCancel(true)
@@ -132,6 +136,14 @@ class NotificationManagerImpl @Inject constructor(
notification.addAction(getReplyAction(conversation.recipients[0]?.address.orEmpty(), threadId))
}
if (prefs.qkreply.get()) {
val intent = Intent(context, QkReplyActivity::class.java)
.putExtra("threadId", threadId)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
}
notificationManager.notify(threadId.toInt(), notification.build())
}
@@ -29,17 +29,17 @@ import com.jakewharton.rxbinding2.view.clicks
import com.moez.QKSMS.R
import com.uber.autodispose.android.lifecycle.scope
import com.uber.autodispose.kotlin.autoDisposable
import injection.appComponent
import util.Preferences
import common.MenuItemAdapter
import common.base.QkThemedActivity
import common.util.extensions.dpToPx
import common.util.extensions.setVisible
import common.widget.PreferenceView
import injection.appComponent
import io.reactivex.subjects.PublishSubject
import io.reactivex.subjects.Subject
import kotlinx.android.synthetic.main.settings_activity.*
import kotlinx.android.synthetic.main.settings_switch_widget.view.*
import common.MenuItemAdapter
import common.base.QkThemedActivity
import common.widget.PreferenceView
import util.Preferences
import javax.inject.Inject
class SettingsActivity : QkThemedActivity<SettingsViewModel>(), SettingsView {
@@ -113,6 +113,7 @@ class SettingsActivity : QkThemedActivity<SettingsViewModel>(), SettingsView {
autoEmoji.checkbox.isChecked = state.autoEmojiEnabled
delivery.checkbox.isChecked = state.deliveryEnabled
qkreply.checkbox.isChecked = state.qkReplyEnabled
unicode.checkbox.isChecked = state.stripUnicodeEnabled
mms.checkbox.isChecked = state.mmsEnabled
@@ -18,6 +18,7 @@
*/
package feature.settings
import android.os.Build
import util.Preferences
data class SettingsState(
@@ -32,6 +33,7 @@ data class SettingsState(
val autoEmojiEnabled: Boolean = true,
val notificationsEnabled: Boolean = true,
val deliveryEnabled: Boolean = false,
val qkReplyEnabled: Boolean = Build.VERSION.SDK_INT < Build.VERSION_CODES.N,
val splitSmsEnabled: Boolean = false,
val stripUnicodeEnabled: Boolean = false,
val mmsEnabled: Boolean = true,
@@ -22,17 +22,17 @@ import android.content.Context
import com.moez.QKSMS.R
import com.uber.autodispose.android.lifecycle.scope
import com.uber.autodispose.kotlin.autoDisposable
import injection.appComponent
import common.Navigator
import common.base.QkViewModel
import common.util.BillingManager
import common.util.DateFormatter
import common.util.NightModeManager
import util.Preferences
import injection.appComponent
import interactor.FullSync
import io.reactivex.rxkotlin.plusAssign
import io.reactivex.rxkotlin.withLatestFrom
import common.Navigator
import common.base.QkViewModel
import timber.log.Timber
import util.Preferences
import java.util.*
import javax.inject.Inject
@@ -79,6 +79,9 @@ class SettingsViewModel : QkViewModel<SettingsView, SettingsState>(SettingsState
disposables += prefs.delivery.asObservable()
.subscribe { enabled -> newState { it.copy(deliveryEnabled = enabled) } }
disposables += prefs.qkreply.asObservable()
.subscribe { enabled -> newState { it.copy(qkReplyEnabled = enabled) } }
disposables += prefs.unicode.asObservable()
.subscribe { enabled -> newState { it.copy(stripUnicodeEnabled = enabled) } }
@@ -131,6 +134,8 @@ class SettingsViewModel : QkViewModel<SettingsView, SettingsState>(SettingsState
R.id.delivery -> prefs.delivery.set(!prefs.delivery.get())
R.id.qkreply -> prefs.qkreply.set(!prefs.qkreply.get())
R.id.unicode -> prefs.unicode.set(!prefs.unicode.get())
R.id.mms -> prefs.mms.set(!prefs.mms.get())
@@ -148,6 +148,14 @@
app:title="@string/settings_delivery_title"
app:widget="@layout/settings_switch_widget" />
<common.widget.PreferenceView
android:id="@+id/qkreply"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:summary="@string/settings_qkreply_summary"
app:title="@string/settings_qkreply_title"
app:widget="@layout/settings_switch_widget" />
<common.widget.PreferenceView
android:id="@+id/unicode"
android:layout_width="match_parent"
@@ -95,6 +95,8 @@
<string name="settings_blocking_title">Blocked</string>
<string name="settings_delivery_title">Delivery confirmations</string>
<string name="settings_delivery_summary">Confirm that messages were sent successfully</string>
<string name="settings_qkreply_title">QK Reply</string>
<string name="settings_qkreply_summary">Popup for new messages</string>
<string name="settings_unicode_title">Strip accents</string>
<string name="settings_unicode_summary">Remove accents from characters in outgoing SMS messages</string>
<string name="settings_mms_title">MMS enabled</string>