mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 05:09:53 +01:00
Compare commits
4 Commits
beta-1.2.8
...
1764-fix-c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8a94a1708f | ||
|
|
9d96ce6db0 | ||
|
|
45fb5bb445 | ||
|
|
0756d92ca1 |
@@ -11,8 +11,8 @@ android {
|
|||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 10208
|
versionCode 10209
|
||||||
versionName "1.2.8"
|
versionName "1.2.9"
|
||||||
consumerProguardFiles 'proguard-rules.txt'
|
consumerProguardFiles 'proguard-rules.txt'
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ android {
|
|||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 10208
|
versionCode 10209
|
||||||
versionName "1.2.8"
|
versionName "1.2.9"
|
||||||
applicationId "org.briarproject.briar.android"
|
applicationId "org.briarproject.briar.android"
|
||||||
buildConfigField "String", "GitHash",
|
buildConfigField "String", "GitHash",
|
||||||
"\"${getStdout(['git', 'rev-parse', '--short=7', 'HEAD'], 'No commit hash')}\""
|
"\"${getStdout(['git', 'rev-parse', '--short=7', 'HEAD'], 'No commit hash')}\""
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import android.os.StrictMode;
|
|||||||
import android.os.StrictMode.ThreadPolicy;
|
import android.os.StrictMode.ThreadPolicy;
|
||||||
import android.os.StrictMode.VmPolicy;
|
import android.os.StrictMode.VmPolicy;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.vanniktech.emoji.EmojiManager;
|
import com.vanniktech.emoji.EmojiManager;
|
||||||
import com.vanniktech.emoji.google.GoogleEmojiProvider;
|
import com.vanniktech.emoji.google.GoogleEmojiProvider;
|
||||||
@@ -96,6 +97,7 @@ public class BriarApplicationImpl extends Application
|
|||||||
Localizer.initialize(prefs);
|
Localizer.initialize(prefs);
|
||||||
super.attachBaseContext(
|
super.attachBaseContext(
|
||||||
Localizer.getInstance().setLocale(base));
|
Localizer.getInstance().setLocale(base));
|
||||||
|
Localizer.getInstance().setLocale(this);
|
||||||
setTheme(base, prefs);
|
setTheme(base, prefs);
|
||||||
ACRA.init(this);
|
ACRA.init(this);
|
||||||
}
|
}
|
||||||
@@ -145,6 +147,7 @@ public class BriarApplicationImpl extends Application
|
|||||||
@Override
|
@Override
|
||||||
public void onConfigurationChanged(Configuration newConfig) {
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
super.onConfigurationChanged(newConfig);
|
super.onConfigurationChanged(newConfig);
|
||||||
|
Log.d("language", "BriarApplicationImpl#onConfigurationChanged()");
|
||||||
Localizer.getInstance().setLocale(this);
|
Localizer.getInstance().setLocale(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import android.content.IntentFilter;
|
|||||||
import android.content.ServiceConnection;
|
import android.content.ServiceConnection;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.account.AccountManager;
|
import org.briarproject.bramble.api.account.AccountManager;
|
||||||
import org.briarproject.bramble.api.crypto.SecretKey;
|
import org.briarproject.bramble.api.crypto.SecretKey;
|
||||||
@@ -160,7 +161,9 @@ public class BriarService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void attachBaseContext(Context base) {
|
protected void attachBaseContext(Context base) {
|
||||||
|
Log.d("language", "BriarService#attachBaseContext()");
|
||||||
super.attachBaseContext(Localizer.getInstance().setLocale(base));
|
super.attachBaseContext(Localizer.getInstance().setLocale(base));
|
||||||
|
Localizer.getInstance().setLocale(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showStartupFailureNotification(StartResult result) {
|
private void showStartupFailureNotification(StartResult result) {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import android.content.Context;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
|
||||||
@@ -26,22 +27,29 @@ public class Localizer {
|
|||||||
private Localizer(SharedPreferences sharedPreferences) {
|
private Localizer(SharedPreferences sharedPreferences) {
|
||||||
this(Locale.getDefault(), getLocaleFromTag(
|
this(Locale.getDefault(), getLocaleFromTag(
|
||||||
sharedPreferences.getString(LANGUAGE, "default")));
|
sharedPreferences.getString(LANGUAGE, "default")));
|
||||||
|
Log.d("language", "preference: " +
|
||||||
|
sharedPreferences.getString(LANGUAGE, "default"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Localizer(Locale systemLocale, @Nullable Locale userLocale) {
|
private Localizer(Locale systemLocale, @Nullable Locale userLocale) {
|
||||||
this.systemLocale = systemLocale;
|
this.systemLocale = systemLocale;
|
||||||
if (userLocale == null) locale = systemLocale;
|
if (userLocale == null) locale = systemLocale;
|
||||||
else locale = userLocale;
|
else locale = userLocale;
|
||||||
|
Log.d("language", "Localizer() system locale: " + systemLocale);
|
||||||
|
Log.d("language", "Localizer() current locale: " + locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Instantiate the Localizer.
|
// Instantiate the Localizer.
|
||||||
public static synchronized void initialize(SharedPreferences prefs) {
|
public static synchronized void initialize(SharedPreferences prefs) {
|
||||||
|
Log.d("language", "Localizer#initialize()");
|
||||||
|
Log.d("language", "sdk: " + SDK_INT);
|
||||||
if (INSTANCE == null)
|
if (INSTANCE == null)
|
||||||
INSTANCE = new Localizer(prefs);
|
INSTANCE = new Localizer(prefs);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reinstantiate the Localizer with the system locale
|
// Reinstantiate the Localizer with the system locale
|
||||||
public static synchronized void reinitialize() {
|
public static synchronized void reinitialize() {
|
||||||
|
Log.d("language", "Localizer#reinitialize()");
|
||||||
if (INSTANCE != null)
|
if (INSTANCE != null)
|
||||||
INSTANCE = new Localizer(INSTANCE.systemLocale, null);
|
INSTANCE = new Localizer(INSTANCE.systemLocale, null);
|
||||||
}
|
}
|
||||||
@@ -72,17 +80,20 @@ public class Localizer {
|
|||||||
public Context setLocale(Context context) {
|
public Context setLocale(Context context) {
|
||||||
Resources res = context.getResources();
|
Resources res = context.getResources();
|
||||||
Configuration conf = res.getConfiguration();
|
Configuration conf = res.getConfiguration();
|
||||||
|
|
||||||
Locale currentLocale;
|
Locale currentLocale;
|
||||||
if (SDK_INT >= 24) {
|
if (SDK_INT >= 24) {
|
||||||
currentLocale = conf.getLocales().get(0);
|
currentLocale = conf.getLocales().get(0);
|
||||||
} else
|
} else
|
||||||
currentLocale = conf.locale;
|
currentLocale = conf.locale;
|
||||||
|
Log.d("language", "current locale: " + currentLocale);
|
||||||
if (locale.equals(currentLocale))
|
if (locale.equals(currentLocale))
|
||||||
return context;
|
return context;
|
||||||
|
Log.d("language", "set locale: " + locale);
|
||||||
Locale.setDefault(locale);
|
Locale.setDefault(locale);
|
||||||
if (SDK_INT >= 17) {
|
if (SDK_INT >= 17) {
|
||||||
conf.setLocale(locale);
|
conf.setLocale(locale);
|
||||||
context.createConfigurationContext(conf);
|
context = context.createConfigurationContext(conf);
|
||||||
} else
|
} else
|
||||||
conf.locale = locale;
|
conf.locale = locale;
|
||||||
//noinspection deprecation
|
//noinspection deprecation
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.briarproject.briar.android.activity;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewGroup.LayoutParams;
|
import android.view.ViewGroup.LayoutParams;
|
||||||
@@ -36,6 +37,7 @@ import javax.inject.Inject;
|
|||||||
import androidx.annotation.LayoutRes;
|
import androidx.annotation.LayoutRes;
|
||||||
import androidx.annotation.UiThread;
|
import androidx.annotation.UiThread;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.appcompat.view.ContextThemeWrapper;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
@@ -106,12 +108,24 @@ public abstract class BaseActivity extends AppCompatActivity
|
|||||||
for (ActivityLifecycleController alc : lifecycleControllers) {
|
for (ActivityLifecycleController alc : lifecycleControllers) {
|
||||||
alc.onActivityCreate(this);
|
alc.onActivityCreate(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Log.d("language", "BaseActivity#onCreate()");
|
||||||
|
Context baseContext = getBaseContext();
|
||||||
|
Log.d("language", "Context: " + getBaseContext().toString());
|
||||||
|
if (baseContext instanceof ContextThemeWrapper) {
|
||||||
|
ContextThemeWrapper wrapper = (ContextThemeWrapper) baseContext;
|
||||||
|
Context wrapped = wrapper.getBaseContext();
|
||||||
|
Log.d("language", "Wrapped: " + wrapped.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void attachBaseContext(Context base) {
|
protected void attachBaseContext(Context base) {
|
||||||
|
Log.d("language", "BaseActivity#attachBaseContext()");
|
||||||
|
Log.d("language", "Context: " + base.toString());
|
||||||
super.attachBaseContext(
|
super.attachBaseContext(
|
||||||
Localizer.getInstance().setLocale(base));
|
Localizer.getInstance().setLocale(base));
|
||||||
|
Localizer.getInstance().setLocale(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActivityComponent getActivityComponent() {
|
public ActivityComponent getActivityComponent() {
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE;
|
|||||||
import static org.briarproject.bramble.api.plugin.Plugin.State.ENABLING;
|
import static org.briarproject.bramble.api.plugin.Plugin.State.ENABLING;
|
||||||
import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING;
|
import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING;
|
||||||
import static org.briarproject.briar.android.BriarService.EXTRA_STARTUP_FAILED;
|
import static org.briarproject.briar.android.BriarService.EXTRA_STARTUP_FAILED;
|
||||||
|
import static org.briarproject.briar.android.TestingConstants.IS_DEBUG_BUILD;
|
||||||
import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_PASSWORD;
|
import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_PASSWORD;
|
||||||
import static org.briarproject.briar.android.navdrawer.IntentRouter.handleExternalIntent;
|
import static org.briarproject.briar.android.navdrawer.IntentRouter.handleExternalIntent;
|
||||||
import static org.briarproject.briar.android.util.UiUtils.getDaysUntilExpiry;
|
import static org.briarproject.briar.android.util.UiUtils.getDaysUntilExpiry;
|
||||||
@@ -128,8 +129,10 @@ public class NavDrawerActivity extends BriarActivity implements
|
|||||||
navDrawerViewModel = provider.get(NavDrawerViewModel.class);
|
navDrawerViewModel = provider.get(NavDrawerViewModel.class);
|
||||||
pluginViewModel = provider.get(PluginViewModel.class);
|
pluginViewModel = provider.get(PluginViewModel.class);
|
||||||
|
|
||||||
navDrawerViewModel.showExpiryWarning()
|
if (IS_DEBUG_BUILD) {
|
||||||
.observe(this, this::showExpiryWarning);
|
navDrawerViewModel.showExpiryWarning()
|
||||||
|
.observe(this, this::showExpiryWarning);
|
||||||
|
}
|
||||||
navDrawerViewModel.shouldAskForDozeWhitelisting().observe(this, ask -> {
|
navDrawerViewModel.shouldAskForDozeWhitelisting().observe(this, ask -> {
|
||||||
if (ask) showDozeDialog(getString(R.string.setup_doze_intro));
|
if (ask) showDozeDialog(getString(R.string.setup_doze_intro));
|
||||||
});
|
});
|
||||||
@@ -171,7 +174,7 @@ public class NavDrawerActivity extends BriarActivity implements
|
|||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
lockManager.checkIfLockable();
|
lockManager.checkIfLockable();
|
||||||
navDrawerViewModel.checkExpiryWarning();
|
if (IS_DEBUG_BUILD) navDrawerViewModel.checkExpiryWarning();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -350,7 +353,7 @@ public class NavDrawerActivity extends BriarActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showExpiryWarning(boolean show) {
|
private void showExpiryWarning(boolean show) {
|
||||||
int daysUntilExpiry = getDaysUntilExpiry();
|
long daysUntilExpiry = getDaysUntilExpiry();
|
||||||
if (daysUntilExpiry < 0) {
|
if (daysUntilExpiry < 0) {
|
||||||
signOut();
|
signOut();
|
||||||
return;
|
return;
|
||||||
@@ -362,7 +365,8 @@ public class NavDrawerActivity extends BriarActivity implements
|
|||||||
TextView expiryWarningText =
|
TextView expiryWarningText =
|
||||||
expiryWarning.findViewById(R.id.expiryWarningText);
|
expiryWarning.findViewById(R.id.expiryWarningText);
|
||||||
String text = getResources().getQuantityString(
|
String text = getResources().getQuantityString(
|
||||||
R.plurals.expiry_warning, daysUntilExpiry, daysUntilExpiry);
|
R.plurals.expiry_warning, (int) daysUntilExpiry,
|
||||||
|
(int) daysUntilExpiry);
|
||||||
expiryWarningText.setText(text);
|
expiryWarningText.setText(text);
|
||||||
// make close button functional
|
// make close button functional
|
||||||
ImageView expiryWarningClose =
|
ImageView expiryWarningClose =
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import static java.util.logging.Level.WARNING;
|
|||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
import static org.briarproject.bramble.util.LogUtils.logException;
|
import static org.briarproject.bramble.util.LogUtils.logException;
|
||||||
import static org.briarproject.briar.android.TestingConstants.EXPIRY_DATE;
|
import static org.briarproject.briar.android.TestingConstants.EXPIRY_DATE;
|
||||||
import static org.briarproject.briar.android.TestingConstants.IS_DEBUG_BUILD;
|
|
||||||
import static org.briarproject.briar.android.controller.BriarControllerImpl.DOZE_ASK_AGAIN;
|
import static org.briarproject.briar.android.controller.BriarControllerImpl.DOZE_ASK_AGAIN;
|
||||||
import static org.briarproject.briar.android.settings.SettingsFragment.SETTINGS_NAMESPACE;
|
import static org.briarproject.briar.android.settings.SettingsFragment.SETTINGS_NAMESPACE;
|
||||||
import static org.briarproject.briar.android.util.UiUtils.needsDozeWhitelisting;
|
import static org.briarproject.briar.android.util.UiUtils.needsDozeWhitelisting;
|
||||||
@@ -59,10 +58,6 @@ public class NavDrawerViewModel extends AndroidViewModel {
|
|||||||
|
|
||||||
@UiThread
|
@UiThread
|
||||||
void checkExpiryWarning() {
|
void checkExpiryWarning() {
|
||||||
if (!IS_DEBUG_BUILD) {
|
|
||||||
showExpiryWarning.setValue(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dbExecutor.execute(() -> {
|
dbExecutor.execute(() -> {
|
||||||
try {
|
try {
|
||||||
Settings settings =
|
Settings settings =
|
||||||
|
|||||||
@@ -159,10 +159,9 @@ public class UiUtils {
|
|||||||
return DateUtils.formatDateTime(ctx, time, flags);
|
return DateUtils.formatDateTime(ctx, time, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getDaysUntilExpiry() {
|
public static long getDaysUntilExpiry() {
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
long daysBeforeExpiry = (EXPIRY_DATE - now) / DAYS.toMillis(1);
|
return (EXPIRY_DATE - now) / DAYS.toMillis(1);
|
||||||
return (int) daysBeforeExpiry;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SpannableStringBuilder getTeaser(Context ctx, Spanned text) {
|
public static SpannableStringBuilder getTeaser(Context ctx, Spanned text) {
|
||||||
|
|||||||
Reference in New Issue
Block a user