Merge branch 'locales-list' into 'master'

Improve locales list ordering of less common languages

See merge request fdroid/fdroidclient!1382
This commit is contained in:
Ray c 2024-04-16 02:03:54 +00:00
commit 71e982c18e
7 changed files with 13 additions and 22 deletions

View File

@ -34,7 +34,6 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
@ -50,7 +49,6 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.content.ContextCompat;
import androidx.core.os.ConfigurationCompat;
import androidx.core.os.LocaleListCompat;
import com.bumptech.glide.Glide;
@ -257,8 +255,7 @@ public class FDroidApp extends Application implements androidx.work.Configuratio
FDroidDatabase db = DBHelper.getDb(context);
Single.fromCallable(() -> {
long now = System.currentTimeMillis();
LocaleListCompat locales =
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());
LocaleListCompat locales = App.getLocales();
db.afterLocalesChanged(locales);
Log.d(TAG, "Updating DB locales took: " + (System.currentTimeMillis() - now) + "ms");
return true;

View File

@ -5,7 +5,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
@ -19,7 +18,6 @@ import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.pm.PackageInfoCompat;
import androidx.core.os.ConfigurationCompat;
import androidx.core.os.LocaleListCompat;
import com.bumptech.glide.Glide;
@ -75,7 +73,13 @@ public class App implements Comparable<App>, Parcelable {
public static LocaleListCompat getLocales() {
LocaleListCompat cached = systemLocaleList;
if (cached == null) {
cached = ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());
// Tries to get the device locales list set by the user in system settings.
// The official docs are less than apparent in this regard, but empirically,
// `ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration())`
// seems to push back languages marked "May not be available in some apps"
// in Settings UI while `LocaleListCompat.getDefault()` appears to preserve
// the user-preferred order so we prefer the latter here
cached = LocaleListCompat.getDefault();
systemLocaleList = cached;
}
return cached;

View File

@ -1,7 +1,5 @@
package org.fdroid.database
import android.content.res.Resources
import androidx.core.os.ConfigurationCompat.getLocales
import androidx.core.os.LocaleListCompat
import org.fdroid.CompatibilityChecker
import org.fdroid.index.IndexFormatVersion.ONE
@ -24,7 +22,7 @@ internal class DbV1StreamReceiver(
private val compatibilityChecker: CompatibilityChecker,
) : IndexV1StreamReceiver {
private val locales: LocaleListCompat = getLocales(Resources.getSystem().configuration)
private val locales: LocaleListCompat = LocaleListCompat.getDefault()
override fun receive(repo: RepoV2, version: Long, certificate: String?) {
db.getRepositoryDao().clear(repoId)

View File

@ -1,7 +1,5 @@
package org.fdroid.database
import android.content.res.Resources
import androidx.core.os.ConfigurationCompat.getLocales
import androidx.core.os.LocaleListCompat
import kotlinx.serialization.json.JsonObject
import org.fdroid.CompatibilityChecker
@ -13,7 +11,7 @@ internal class DbV2DiffStreamReceiver(
private val compatibilityChecker: CompatibilityChecker,
) : IndexV2DiffStreamReceiver {
private val locales: LocaleListCompat = getLocales(Resources.getSystem().configuration)
private val locales: LocaleListCompat = LocaleListCompat.getDefault()
override fun receiveRepoDiff(version: Long, repoJsonObject: JsonObject) {
db.getRepositoryDao().updateRepository(repoId, version, repoJsonObject)

View File

@ -1,7 +1,5 @@
package org.fdroid.database
import android.content.res.Resources
import androidx.core.os.ConfigurationCompat.getLocales
import androidx.core.os.LocaleListCompat
import kotlinx.serialization.SerializationException
import org.fdroid.CompatibilityChecker
@ -23,7 +21,7 @@ internal class DbV2StreamReceiver(
private val compatibilityChecker: CompatibilityChecker,
) : IndexV2StreamReceiver {
private val locales: LocaleListCompat = getLocales(Resources.getSystem().configuration)
private val locales: LocaleListCompat = LocaleListCompat.getDefault()
private var clearedRepoData = false
private val nonNullFileV2: (FileV2?) -> Unit = { fileV2 ->
if (fileV2 != null) {

View File

@ -1,8 +1,6 @@
package org.fdroid.repo
import android.content.res.Resources
import android.net.Uri
import androidx.core.os.ConfigurationCompat.getLocales
import androidx.core.os.LocaleListCompat
import kotlinx.serialization.SerializationException
import org.fdroid.database.Repository
@ -24,7 +22,7 @@ internal class RepoV1Fetcher(
private val repoUriBuilder: RepoUriBuilder,
) : RepoFetcher {
private val locales: LocaleListCompat = getLocales(Resources.getSystem().configuration)
private val locales: LocaleListCompat = LocaleListCompat.getDefault()
@Throws(SigningException::class, SerializationException::class)
override suspend fun fetchRepo(

View File

@ -1,7 +1,5 @@
package org.fdroid.repo
import android.content.res.Resources
import androidx.core.os.ConfigurationCompat.getLocales
import androidx.core.os.LocaleListCompat
import org.fdroid.LocaleChooser.getBestLocale
import org.fdroid.database.AppOverviewItem
@ -78,7 +76,7 @@ internal open class RepoV2StreamReceiver(
)
}
private val locales: LocaleListCompat = getLocales(Resources.getSystem().configuration)
private val locales: LocaleListCompat = LocaleListCompat.getDefault()
override fun receive(repo: RepoV2, version: Long, certificate: String) {
receiver.onRepoReceived(