diff --git a/app/src/main/java/io/github/sspanak/tt9/db/words/DictionaryLoader.java b/app/src/main/java/io/github/sspanak/tt9/db/words/DictionaryLoader.java index cf634c7b..f1a2c4a6 100644 --- a/app/src/main/java/io/github/sspanak/tt9/db/words/DictionaryLoader.java +++ b/app/src/main/java/io/github/sspanak/tt9/db/words/DictionaryLoader.java @@ -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(); } }, diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java b/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java index 47e9be8f..ca8a68f9 100644 --- a/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java +++ b/app/src/main/java/io/github/sspanak/tt9/ime/TraditionalT9.java @@ -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); } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/ItemDictionaryNotifications.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/ItemDictionaryNotifications.java deleted file mode 100644 index 41cce7e9..00000000 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/ItemDictionaryNotifications.java +++ /dev/null @@ -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(); - } -} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/LanguagesScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/LanguagesScreen.java index 6b1e2af7..718ff0c6 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/LanguagesScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/languages/LanguagesScreen.java @@ -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, diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java index 62f679ae..1f968779 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java @@ -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) { diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index e157db6f..da6bc6e4 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -81,8 +81,6 @@ Редактиране на текст Добавянето на думи не е възможно на този език. Триене на текст - Речникови известия - Получавайте известия за обновления на речника и за прогреса при зареждане. Задай нов Добавяне на дума Списък с команди diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index cc0ad587..54e8a26f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -138,8 +138,6 @@ CSV wird exportiert… CSV wird exportiert (%1$s)… Layout auf dem Bildschirm - Wörterbuchbenachrichtigungen - Benachrichtigen über Wörterbuchaktualisierungen und den Ladevorgang. Schriftgröße der Tasten Höhe Breite der Buchstabentasten diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 981f8d5b..0176d539 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -88,8 +88,6 @@ Orden de teclas inverso Habilite la configuración si hay 7–8–9 en la primera fila, en lugar de 1–2–3. Configuración inicial - Notificaciones del diccionario - Recibir notificaciones sobre actualizaciones del diccionario y sobre el progreso de la carga. Lista de comandos Limpiar el filtro Editar texto diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 6d6090dd..f48fbde0 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -76,8 +76,6 @@ Espace L\'ajout de mots n\'est pas possible dans cette langue. Retour arrière - Notifications du dictionnaire - Recevoir des notifications sur les mises à jour du dictionnaire et sur la progression du chargement. Liste des commandes Supprimer le filtre Modifier le texte diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index d5a288d1..26fd7954 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -139,8 +139,6 @@ CSV in corso… CSV in corso (%1$s)… Layout sullo schermo - Notifiche del dizionario - Ricevere notifiche sugli aggiornamenti del dizionario e sul progresso del caricamento. Dimensione carattere dei tasti Altezza Larghezza dei tasti lettera diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 342d4b5a..84a70f4b 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -153,8 +153,6 @@ מייצא CSV… מייצא CSV (%1$s)… תצורת המקלדת על המסך - התראות מילון - לקבל התראות על עדכוני המילון ועל התקדמות הטעינה. גודל גופן המקשים גובה רוחב מקשי האותיות diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 4d021a67..53c2c286 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -89,8 +89,6 @@ Žodžių pridėjimas šia kalba nėra galimas. Trinti - Žodyno pranešimai - Gaukite pranešimus apie žodynų atnaujinimus ir įkėlimo progresą. Rodyti komandų sąrašą Panaikinti filtrą Redaguoti tekstą diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 7ed67b02..c3e14736 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -139,8 +139,6 @@ CSV exporteren… CSV exporteren (%1$s)… Indeling op het scherm - Woordenboekmeldingen - Ontvang meldingen over woordenboekupdates en de voortgang van het laden. Lettergrootte van toetsen Hoogte Breedte van lettertoetsen diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 1863347d..0e20ff91 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -154,8 +154,6 @@ Exportando CSV… Exportando CSV (%1$s)… Layout na tela - Notificações do dicionário - Receber notificações sobre atualizações do dicionário e sobre o progresso do carregamento. Tamanho da fonte das teclas Altura Largura das teclas de letras diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index f6db8d48..e8a6dc8a 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -77,8 +77,6 @@ Не удалось загрузить словарь. Проблема в слове в строке %1$d для языка «%2$s». Добавление слов невозможно на этом языке. Стереть - Уведомления словаря - Получать уведомления о обновлениях словаря и о процессе загрузки. Список команд Удалить фильтр Редактировать текста diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 3cf59a19..53f302cc 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -133,8 +133,6 @@ CSV dışa aktarılıyor… CSV dışa aktarılıyor (%1$s)… Ekran Düzeni - Sözlük Bildirimleri - Sözlük güncelleme ve yüklemeleri hakkında bildirimde bulunun. Tuş yazı tipi boyutu Yükseklik Harf tuşlarının genişliği diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 5f7c4d1f..813bf250 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -121,8 +121,6 @@ Додавання слів неможливе цією мовою. Стерти - Сповіщення словника - Отримувати повідомлення про оновлення словника та процес завантаження. Список команд Очистити фільтр Редагувати тексту diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c76f79ce..b310e0d3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -121,8 +121,6 @@ Loading / %1$s… %2$d Load Selected Loading failed. Dictionary for \"%1$s\" not found. - Dictionary Notifications - Get notified about dictionary updates and see the loading progress. Delete All Delete Unselected Dictionary deleted successfully. diff --git a/app/src/main/res/xml/prefs_screen_languages.xml b/app/src/main/res/xml/prefs_screen_languages.xml index 738fde71..2ff91f7b 100644 --- a/app/src/main/res/xml/prefs_screen_languages.xml +++ b/app/src/main/res/xml/prefs_screen_languages.xml @@ -6,12 +6,6 @@ app:key="pref_languages" app:title="@string/pref_choose_languages" /> - -