when notification permissions are rejected, dictionaries updates are immediately applied
This commit is contained in:
parent
24013c9207
commit
decebe1fbe
19 changed files with 14 additions and 90 deletions
|
|
@ -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();
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 7–8–9 en la primera fila, en lugar de 1–2–3.</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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue