1
0
Fork 0

when notification permissions are rejected, dictionaries updates are immediately applied

This commit is contained in:
sspanak 2025-06-30 13:37:03 +03:00 committed by Dimo Karaivanov
parent 24013c9207
commit decebe1fbe
19 changed files with 14 additions and 90 deletions

View file

@ -117,8 +117,8 @@ public class DictionaryLoader {
return false;
}
Long lastUpdateTime = self.lastAutoLoadAttemptTime.get(language.getId());
boolean isItTooSoon = lastUpdateTime != null && System.currentTimeMillis() - lastUpdateTime < SettingsStore.DICTIONARY_AUTO_LOAD_COOLDOWN_TIME;
final Long lastUpdateTime = self.lastAutoLoadAttemptTime.get(language.getId());
final boolean isItTooSoon = lastUpdateTime != null && System.currentTimeMillis() - lastUpdateTime < SettingsStore.DICTIONARY_AUTO_LOAD_COOLDOWN_TIME;
if (isItTooSoon) {
return false;
}
@ -127,12 +127,13 @@ public class DictionaryLoader {
(hash) -> {
getInstance(context).lastAutoLoadAttemptTime.put(language.getId(), System.currentTimeMillis());
// no words at all, load without confirmation
if (hash.isEmpty()) {
final boolean noDictionary = hash == null || hash.isEmpty();
final boolean isDictionaryOutdated = noDictionary || !hash.equals(new WordFile(context, language, self.assets).getHash());
final boolean noNotifications = !(new SettingsStore(context).getNotificationsApproved());
if (noDictionary || (isDictionaryOutdated && noNotifications)) {
load(context, language);
}
// or if the database is outdated, compared to the dictionary file, ask for confirmation and load
else if (!hash.equals(new WordFile(context, language, self.assets).getHash())) {
} else if (isDictionaryOutdated) {
new DictionaryUpdateNotification(context, language).show();
}
},

View file

@ -207,7 +207,7 @@ public class TraditionalT9 extends MainViewHandler {
private void askForNotifications() {
if (DeviceInfo.AT_LEAST_ANDROID_13 && !InputModeKind.isPassthrough(mInputMode) && settings.shouldAskForNotifications() && !inputType.isUs()) {
if (!InputModeKind.isPassthrough(mInputMode) && settings.shouldAskForNotifications() && !inputType.isUs()) {
settings.setNotificationsApproved(false);
RequestPermissionDialog.show(this, Manifest.permission.POST_NOTIFICATIONS);
}

View file

@ -1,45 +0,0 @@
package io.github.sspanak.tt9.preferences.screens.languages;
import androidx.preference.Preference;
import androidx.preference.SwitchPreferenceCompat;
import io.github.sspanak.tt9.preferences.PreferencesActivity;
import io.github.sspanak.tt9.preferences.items.ItemSwitch;
import io.github.sspanak.tt9.util.sys.Permissions;
public class ItemDictionaryNotifications extends ItemSwitch {
public static final String NAME = "dictionary_notifications";
private final SwitchPreferenceCompat item;
private final Permissions permissions;
public ItemDictionaryNotifications(SwitchPreferenceCompat preference, PreferencesActivity activity) {
super(preference);
this.item = preference;
this.permissions = new Permissions(activity);
}
@Override
public ItemDictionaryNotifications populate() {
super.populate();
if (item != null) {
item.setVisible(!item.isChecked());
}
return this;
}
@Override
protected boolean getDefaultValue() {
return !permissions.noPostNotifications();
}
protected boolean onClick(Preference p, Object value) {
if (value == Boolean.TRUE || permissions.noPostNotifications()) {
permissions.requestPostNotifications();
}
// Switch off the component on user refusal. Android will not allow permission request again.
item.setEnabled(false);
return !permissions.noPostNotifications();
}
}

View file

@ -41,10 +41,6 @@ public class LanguagesScreen extends BaseScreenFragment {
protected void onCreate() {
new ItemSelectLanguage(activity, findPreference(ItemSelectLanguage.NAME)).populate();
new ItemDictionaryNotifications(findPreference(ItemDictionaryNotifications.NAME), activity)
.populate()
.enableClickHandler();
loadItem = new ItemLoadDictionary(
findPreference(ItemLoadDictionary.NAME),
activity,

View file

@ -43,8 +43,12 @@ public class SettingsUI extends SettingsTyping {
return prefs.getBoolean("add_word_no_confirmation", false);
}
public boolean getNotificationsApproved() {
return !DeviceInfo.AT_LEAST_ANDROID_13 || getStringifiedInt("pref_asked_for_notifications_version", 0) == Integer.MAX_VALUE;
}
public boolean shouldAskForNotifications() {
return getStringifiedInt("pref_asked_for_notifications_version", 0) < BuildConfig.VERSION_CODE;
return DeviceInfo.AT_LEAST_ANDROID_13 && getStringifiedInt("pref_asked_for_notifications_version", 0) < BuildConfig.VERSION_CODE;
}
public void setNotificationsApproved(boolean yes) {

View file

@ -81,8 +81,6 @@
<string name="function_edit_text">Редактиране на текст</string>
<string name="function_add_word_not_available">Добавянето на думи не е възможно на този език.</string>
<string name="function_backspace">Триене на текст</string>
<string name="dictionary_no_notifications">Речникови известия</string>
<string name="dictionary_no_notifications_summary">Получавайте известия за обновления на речника и за прогреса при зареждане.</string>
<string name="function_reassign">Задай нов</string>
<string name="function_add_word">Добавяне на дума</string>
<string name="function_show_command_palette">Списък с команди</string>

View file

@ -138,8 +138,6 @@
<string name="dictionary_export_generating_csv">CSV wird exportiert…</string>
<string name="dictionary_export_generating_csv_for_language">CSV wird exportiert (%1$s)…</string>
<string name="pref_layout">Layout auf dem Bildschirm</string>
<string name="dictionary_no_notifications">Wörterbuchbenachrichtigungen</string>
<string name="dictionary_no_notifications_summary">Benachrichtigen über Wörterbuchaktualisierungen und den Ladevorgang.</string>
<string name="pref_numpad_key_font_size">Schriftgröße der Tasten</string>
<string name="pref_numpad_key_height">Höhe</string>
<string name="pref_numpad_fn_key_width">Breite der Buchstabentasten</string>

View file

@ -88,8 +88,6 @@
<string name="pref_upside_down_keys">Orden de teclas inverso</string>
<string name="pref_upside_down_keys_summary">Habilite la configuración si hay 789 en la primera fila, en lugar de 123.</string>
<string name="pref_category_setup">Configuración inicial</string>
<string name="dictionary_no_notifications">Notificaciones del diccionario</string>
<string name="dictionary_no_notifications_summary">Recibir notificaciones sobre actualizaciones del diccionario y sobre el progreso de la carga.</string>
<string name="function_show_command_palette">Lista de comandos</string>
<string name="function_filter_clear">Limpiar el filtro</string>
<string name="function_edit_text">Editar texto</string>

View file

@ -76,8 +76,6 @@
<string name="char_space">Espace</string>
<string name="function_add_word_not_available">L\'ajout de mots n\'est pas possible dans cette langue.</string>
<string name="function_backspace">Retour arrière</string>
<string name="dictionary_no_notifications">Notifications du dictionnaire</string>
<string name="dictionary_no_notifications_summary">Recevoir des notifications sur les mises à jour du dictionnaire et sur la progression du chargement.</string>
<string name="function_show_command_palette">Liste des commandes</string>
<string name="function_filter_clear">Supprimer le filtre</string>
<string name="function_edit_text">Modifier le texte</string>

View file

@ -139,8 +139,6 @@
<string name="dictionary_export_generating_csv">CSV in corso…</string>
<string name="dictionary_export_generating_csv_for_language">CSV in corso (%1$s)…</string>
<string name="pref_layout">Layout sullo schermo</string>
<string name="dictionary_no_notifications">Notifiche del dizionario</string>
<string name="dictionary_no_notifications_summary">Ricevere notifiche sugli aggiornamenti del dizionario e sul progresso del caricamento.</string>
<string name="pref_numpad_key_font_size">Dimensione carattere dei tasti</string>
<string name="pref_numpad_key_height">Altezza</string>
<string name="pref_numpad_fn_key_width">Larghezza dei tasti lettera</string>

View file

@ -153,8 +153,6 @@
<string name="dictionary_export_generating_csv">מייצא CSV…</string>
<string name="dictionary_export_generating_csv_for_language">מייצא CSV (%1$s)…</string>
<string name="pref_layout">תצורת המקלדת על המסך</string>
<string name="dictionary_no_notifications">התראות מילון</string>
<string name="dictionary_no_notifications_summary">לקבל התראות על עדכוני המילון ועל התקדמות הטעינה.</string>
<string name="pref_numpad_key_font_size">גודל גופן המקשים</string>
<string name="pref_numpad_key_height">גובה</string>
<string name="pref_numpad_fn_key_width">רוחב מקשי האותיות</string>

View file

@ -89,8 +89,6 @@
<string name="function_add_word_not_available">Žodžių pridėjimas šia kalba nėra galimas.</string>
<string name="function_backspace">Trinti</string>
<string name="dictionary_no_notifications">Žodyno pranešimai</string>
<string name="dictionary_no_notifications_summary">Gaukite pranešimus apie žodynų atnaujinimus ir įkėlimo progresą.</string>
<string name="function_show_command_palette">Rodyti komandų sąrašą</string>
<string name="function_filter_clear">Panaikinti filtrą</string>
<string name="function_edit_text">Redaguoti tekstą</string>

View file

@ -139,8 +139,6 @@
<string name="dictionary_export_generating_csv">CSV exporteren…</string>
<string name="dictionary_export_generating_csv_for_language">CSV exporteren (%1$s)…</string>
<string name="pref_layout">Indeling op het scherm</string>
<string name="dictionary_no_notifications">Woordenboekmeldingen</string>
<string name="dictionary_no_notifications_summary">Ontvang meldingen over woordenboekupdates en de voortgang van het laden.</string>
<string name="pref_numpad_key_font_size">Lettergrootte van toetsen</string>
<string name="pref_numpad_key_height">Hoogte</string>
<string name="pref_numpad_fn_key_width">Breedte van lettertoetsen</string>

View file

@ -154,8 +154,6 @@
<string name="dictionary_export_generating_csv">Exportando CSV…</string>
<string name="dictionary_export_generating_csv_for_language">Exportando CSV (%1$s)…</string>
<string name="pref_layout">Layout na tela</string>
<string name="dictionary_no_notifications">Notificações do dicionário</string>
<string name="dictionary_no_notifications_summary">Receber notificações sobre atualizações do dicionário e sobre o progresso do carregamento.</string>
<string name="pref_numpad_key_font_size">Tamanho da fonte das teclas</string>
<string name="pref_numpad_key_height">Altura</string>
<string name="pref_numpad_fn_key_width">Largura das teclas de letras</string>

View file

@ -77,8 +77,6 @@
<string name="dictionary_load_bad_char">Не удалось загрузить словарь. Проблема в слове в строке %1$d для языка «%2$s».</string>
<string name="function_add_word_not_available">Добавление слов невозможно на этом языке.</string>
<string name="function_backspace">Стереть</string>
<string name="dictionary_no_notifications">Уведомления словаря</string>
<string name="dictionary_no_notifications_summary">Получать уведомления о обновлениях словаря и о процессе загрузки.</string>
<string name="function_show_command_palette">Список команд</string>
<string name="function_filter_clear">Удалить фильтр</string>
<string name="function_edit_text">Редактировать текста</string>

View file

@ -133,8 +133,6 @@
<string name="dictionary_export_generating_csv">CSV dışa aktarılıyor…</string>
<string name="dictionary_export_generating_csv_for_language">CSV dışa aktarılıyor (%1$s)…</string>
<string name="pref_layout">Ekran Düzeni</string>
<string name="dictionary_no_notifications">Sözlük Bildirimleri</string>
<string name="dictionary_no_notifications_summary">Sözlük güncelleme ve yüklemeleri hakkında bildirimde bulunun.</string>
<string name="pref_numpad_key_font_size">Tuş yazı tipi boyutu</string>
<string name="pref_numpad_key_height">Yükseklik</string>
<string name="pref_numpad_fn_key_width">Harf tuşlarının genişliği</string>

View file

@ -121,8 +121,6 @@
<string name="function_add_word_not_available">Додавання слів неможливе цією мовою.</string>
<string name="function_backspace">Стерти</string>
<string name="dictionary_no_notifications">Сповіщення словника</string>
<string name="dictionary_no_notifications_summary">Отримувати повідомлення про оновлення словника та процес завантаження.</string>
<string name="function_show_command_palette">Список команд</string>
<string name="function_filter_clear">Очистити фільтр</string>
<string name="function_edit_text">Редагувати тексту</string>

View file

@ -121,8 +121,6 @@
<string name="dictionary_loading_short">Loading / %1$s… %2$d</string>
<string name="dictionary_load_title">Load Selected</string>
<string name="dictionary_not_found">Loading failed. Dictionary for \"%1$s\" not found.</string>
<string name="dictionary_no_notifications">Dictionary Notifications</string>
<string name="dictionary_no_notifications_summary">Get notified about dictionary updates and see the loading progress.</string>
<string name="dictionary_truncate_title">Delete All</string>
<string name="dictionary_truncate_unselected">Delete Unselected</string>
<string name="dictionary_truncated">Dictionary deleted successfully.</string>

View file

@ -6,12 +6,6 @@
app:key="pref_languages"
app:title="@string/pref_choose_languages" />
<SwitchPreferenceCompat
app:isPreferenceVisible="false"
app:key="dictionary_notifications"
app:title="@string/dictionary_no_notifications"
app:summary="@string/dictionary_no_notifications_summary"/>
<Preference
app:key="dictionary_load"
app:title="@string/dictionary_load_title" />