diff --git a/app/src/husky/res/values/strings.xml b/app/src/husky/res/values/strings.xml
index 3e6053bb..2e92d404 100644
--- a/app/src/husky/res/values/strings.xml
+++ b/app/src/husky/res/values/strings.xml
@@ -12,7 +12,8 @@
Disable %s
Stickers
Open in external app
-
+ Open a chat
+
%s reacted by
Application name
@@ -31,6 +32,9 @@
Chat Messages
Notifications about new chat messages
+ Other
+ Live notifications
+ May slightly increase power consumption
Default formatting syntax(if supported by instance)
my posts are reacted with emojis
received a chat message
diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
index 3b872eac..fe5e1b28 100644
--- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt
@@ -61,6 +61,7 @@ import com.keylesspalace.tusky.interfaces.ActionButtonActivity
import com.keylesspalace.tusky.interfaces.ReselectableFragment
import com.keylesspalace.tusky.pager.MainPagerAdapter
import com.keylesspalace.tusky.service.StreamingService
+import com.keylesspalace.tusky.settings.PrefKeys
import com.keylesspalace.tusky.util.*
import com.mikepenz.iconics.IconicsDrawable
import com.mikepenz.iconics.typeface.library.googlematerial.GoogleMaterial
@@ -190,7 +191,30 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
setupTabs(showNotificationTab)
- // Setup push notifications
+ initPullNotifications()
+
+ eventHub.events
+ .observeOn(AndroidSchedulers.mainThread())
+ .autoDispose(this, Lifecycle.Event.ON_DESTROY)
+ .subscribe { event: Event? ->
+ when (event) {
+ is ProfileEditedEvent -> onFetchUserInfoSuccess(event.newProfileData)
+ is MainTabsChangedEvent -> setupTabs(false)
+ is PreferenceChangedEvent -> {
+ when(event.preferenceKey) {
+ PrefKeys.LIVE_NOTIFICATIONS -> {
+ initPullNotifications()
+ }
+ }
+ }
+ }
+ }
+
+ // Flush old media that was cached for sharing
+ deleteStaleCachedMedia(applicationContext.getExternalFilesDir("Husky"))
+ }
+
+ private fun initPullNotifications() {
if (NotificationHelper.areNotificationsEnabled(this, accountManager)) {
if(accountManager.areNotificationsStreamingEnabled()) {
NotificationHelper.disablePullNotifications(this)
@@ -203,18 +227,6 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
StreamingService.stopStreaming(this)
NotificationHelper.disablePullNotifications(this)
}
- eventHub.events
- .observeOn(AndroidSchedulers.mainThread())
- .autoDispose(this, Lifecycle.Event.ON_DESTROY)
- .subscribe { event: Event? ->
- when (event) {
- is ProfileEditedEvent -> onFetchUserInfoSuccess(event.newProfileData)
- is MainTabsChangedEvent -> setupTabs(false)
- }
- }
-
- // Flush old media that was cached for sharing
- deleteStaleCachedMedia(applicationContext.getExternalFilesDir("Husky"))
}
override fun onResume() {
diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/preference/AccountPreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/fragment/preference/AccountPreferencesFragment.kt
index 4dd5e4d6..07e8089b 100644
--- a/app/src/main/java/com/keylesspalace/tusky/fragment/preference/AccountPreferencesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/fragment/preference/AccountPreferencesFragment.kt
@@ -229,6 +229,21 @@ class AccountPreferencesFragment : PreferenceFragmentCompat(), Injectable {
}
}
+ preferenceCategory(R.string.pref_title_other) {
+ switchPreference {
+ key = PrefKeys.LIVE_NOTIFICATIONS
+ setTitle(R.string.pref_title_live_notifications)
+ setSummary(R.string.pref_summary_live_notifications)
+ isSingleLineTitle = false
+ isChecked = accountManager.activeAccount?.notificationsStreamingEnabled ?: false
+ setOnPreferenceChangeListener { _, newValue ->
+ updateAccount { it.notificationsStreamingEnabled = newValue as Boolean }
+ eventHub.dispatch(PreferenceChangedEvent(key))
+ true
+ }
+ }
+ }
+
preferenceCategory(R.string.pref_title_timeline_filters) {
preference {
setTitle(R.string.pref_title_public_filter_keywords)
diff --git a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
index 7c08f624..3abc4a28 100644
--- a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt
@@ -45,6 +45,7 @@ object PrefKeys {
const val MEDIA_PREVIEW_ENABLED = "mediaPreviewEnabled"
const val ALWAYS_SHOW_SENSITIVE_MEDIA = "alwaysShowSensitiveMedia"
const val ALWAYS_OPEN_SPOILER = "alwaysOpenSpoiler"
+ const val LIVE_NOTIFICATIONS = "liveNotifications"
const val NOTIFICATIONS_ENABLED = "notificationsEnabled"
const val NOTIFICATION_ALERT_LIGHT = "notificationAlertLight"