Add "Channel settings" button, fix instant delivery checkbox (#211, #91)

This commit is contained in:
Philipp Heckel 2022-04-14 13:00:19 -04:00
parent 3af5d60811
commit f1431e9a67
7 changed files with 27 additions and 2 deletions

View file

@ -190,7 +190,7 @@ class NotificationService(val context: Context) {
} }
} }
class DownloadBroadcastReceiver : android.content.BroadcastReceiver() { class DownloadBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {
val id = intent.getStringExtra("id") ?: return val id = intent.getStringExtra("id") ?: return
val action = intent.getStringExtra("action") ?: return val action = intent.getStringExtra("action") ?: return

View file

@ -358,7 +358,7 @@ class AddFragment : DialogFragment() {
activity.runOnUiThread { activity.runOnUiThread {
val topic = subscribeTopicText.text.toString() val topic = subscribeTopicText.text.toString()
val baseUrl = getBaseUrl() val baseUrl = getBaseUrl()
val instant = !BuildConfig.FIREBASE_AVAILABLE || baseUrl != appBaseUrl val instant = !BuildConfig.FIREBASE_AVAILABLE || baseUrl != appBaseUrl || subscribeInstantDeliveryCheckbox.isChecked
subscribeListener.onSubscribe(topic, baseUrl, instant) subscribeListener.onSubscribe(topic, baseUrl, instant)
dialog?.dismiss() dialog?.dismiss()
} }

View file

@ -5,9 +5,11 @@ import android.app.AlertDialog
import android.content.ClipData import android.content.ClipData
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.Settings
import android.text.TextUtils import android.text.TextUtils
import android.widget.Button import android.widget.Button
import android.widget.Toast import android.widget.Toast
@ -200,6 +202,20 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} }
// Channel settings
val channelPrefsPrefId = context?.getString(R.string.settings_notifications_channel_prefs_key) ?: return
val channelPrefs: Preference? = findPreference(channelPrefsPrefId)
channelPrefs?.isVisible = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
channelPrefs?.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting
channelPrefs?.onPreferenceClickListener = OnPreferenceClickListener {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startActivity(Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
putExtra(Settings.EXTRA_APP_PACKAGE, BuildConfig.APPLICATION_ID)
})
}
false
}
// Auto download // Auto download
val autoDownloadPrefId = context?.getString(R.string.settings_notifications_auto_download_key) ?: return val autoDownloadPrefId = context?.getString(R.string.settings_notifications_auto_download_key) ?: return
val autoDownload: ListPreference? = findPreference(autoDownloadPrefId) val autoDownload: ListPreference? = findPreference(autoDownloadPrefId)

View file

@ -242,6 +242,8 @@
<string name="settings_notifications_priority_default">default</string> <string name="settings_notifications_priority_default">default</string>
<string name="settings_notifications_priority_high">high</string> <string name="settings_notifications_priority_high">high</string>
<string name="settings_notifications_priority_max">max</string> <string name="settings_notifications_priority_max">max</string>
<string name="settings_notifications_channel_prefs_title">Channel settings</string>
<string name="settings_notifications_channel_prefs_summary">Manage Do Not Disturb (DND) override, custom sounds, etc.</string>
<string name="settings_notifications_auto_download_title">Download attachments</string> <string name="settings_notifications_auto_download_title">Download attachments</string>
<string name="settings_notifications_auto_download_summary_always">Auto-download all attachments</string> <string name="settings_notifications_auto_download_summary_always">Auto-download all attachments</string>
<string name="settings_notifications_auto_download_summary_never">Never auto-download attachments</string> <string name="settings_notifications_auto_download_summary_never">Never auto-download attachments</string>

View file

@ -15,6 +15,7 @@
<!-- Settings constants --> <!-- Settings constants -->
<string name="settings_notifications_muted_until_key" translatable="false">MutedUntil</string> <string name="settings_notifications_muted_until_key" translatable="false">MutedUntil</string>
<string name="settings_notifications_min_priority_key" translatable="false">MinPriority</string> <string name="settings_notifications_min_priority_key" translatable="false">MinPriority</string>
<string name="settings_notifications_channel_prefs_key" translatable="false">ChannelPrefs</string>
<string name="settings_notifications_auto_download_key" translatable="false">AutoDownload</string> <string name="settings_notifications_auto_download_key" translatable="false">AutoDownload</string>
<string name="settings_notifications_auto_delete_key" translatable="false">AutoDelete</string> <string name="settings_notifications_auto_delete_key" translatable="false">AutoDelete</string>
<string name="settings_general_default_base_url_key" translatable="false">DefaultBaseURL</string> <string name="settings_general_default_base_url_key" translatable="false">DefaultBaseURL</string>

View file

@ -25,6 +25,10 @@
app:entries="@array/settings_notifications_auto_delete_entries" app:entries="@array/settings_notifications_auto_delete_entries"
app:entryValues="@array/settings_notifications_auto_delete_values" app:entryValues="@array/settings_notifications_auto_delete_values"
app:defaultValue="2592000"/> app:defaultValue="2592000"/>
<Preference
app:key="@string/settings_notifications_channel_prefs_key"
app:title="@string/settings_notifications_channel_prefs_title"
app:summary="@string/settings_notifications_channel_prefs_summary"/>
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory app:title="@string/settings_general_header"> <PreferenceCategory app:title="@string/settings_general_header">
<EditTextPreference <EditTextPreference

View file

@ -1,10 +1,12 @@
Features: Features:
* Support for ntfy:// deep links (#20, thanks to @Copephobia for reporting) * Support for ntfy:// deep links (#20, thanks to @Copephobia for reporting)
* Fastlane metadata can now be translated too (#198, thanks to @StoyanDimitrov for reporting) * Fastlane metadata can now be translated too (#198, thanks to @StoyanDimitrov for reporting)
* Channel settings option to configure DND override, sounds, etc. (#91)
Bugs: Bugs:
* Validate URLs when changing default server and server in user management (#193, thanks to @StoyanDimitrov for reporting) * Validate URLs when changing default server and server in user management (#193, thanks to @StoyanDimitrov for reporting)
* Error in sending test notification in different languages (#209, thanks to @StoyanDimitrov for reporting) * Error in sending test notification in different languages (#209, thanks to @StoyanDimitrov for reporting)
* "[x] Instant delivery in doze mode" checkbox does not work properly (#211)
Additional translations: Additional translations:
* Japanese (thanks to @shak) * Japanese (thanks to @shak)