From 8c29c85696012f7e6f3ed3da0b94424195917f64 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 10 Oct 2017 15:11:24 -0300 Subject: [PATCH 1/3] Extend expiry and show a green snackbar about it once --- .../briar/android/BriarApplication.java | 4 +-- .../android/navdrawer/NavDrawerActivity.java | 26 ++++++++++++----- .../navdrawer/NavDrawerController.java | 4 ++- .../navdrawer/NavDrawerControllerImpl.java | 28 +++++++++++-------- briar-android/src/main/res/values/strings.xml | 1 + 5 files changed, 42 insertions(+), 21 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplication.java b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplication.java index c97189917..c2e2595f3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplication.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplication.java @@ -6,8 +6,8 @@ package org.briarproject.briar.android; */ public interface BriarApplication { - // This build expires on 21 October 2017 - long EXPIRY_DATE = 1508544000 * 1000L; + // This build expires on 31 December 2017 + long EXPIRY_DATE = 1514761200 * 1000L; AndroidComponent getApplicationComponent(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java index 61ef5bfdc..7337dec05 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java @@ -34,6 +34,7 @@ import org.briarproject.briar.android.forum.ForumListFragment; import org.briarproject.briar.android.fragment.BaseFragment; import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener; import org.briarproject.briar.android.fragment.SignOutFragment; +import org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning; import org.briarproject.briar.android.privategroup.list.GroupListFragment; import org.briarproject.briar.android.settings.SettingsActivity; @@ -48,6 +49,8 @@ import static android.support.v4.view.GravityCompat.START; import static android.support.v4.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED; import static android.view.View.GONE; import static android.view.View.VISIBLE; +import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.NO; +import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.UPDATE; import static org.briarproject.briar.android.util.UiUtils.getDaysUntilExpiry; public class NavDrawerActivity extends BriarActivity implements @@ -132,10 +135,10 @@ public class NavDrawerActivity extends BriarActivity implements public void onStart() { super.onStart(); updateTransports(); - controller.showExpiryWarning(new UiResultHandler(this) { + controller.showExpiryWarning(new UiResultHandler(this) { @Override - public void onResultUi(Boolean showWarning) { - if (showWarning) showExpiryWarning(); + public void onResultUi(ExpiryWarning expiry) { + if (expiry != NO) showExpiryWarning(expiry); } }); } @@ -265,7 +268,7 @@ public class NavDrawerActivity extends BriarActivity implements } @SuppressWarnings("ConstantConditions") - private void showExpiryWarning() { + private void showExpiryWarning(ExpiryWarning expiry) { int daysUntilExpiry = getDaysUntilExpiry(); if (daysUntilExpiry < 0) signOut(); @@ -274,9 +277,18 @@ public class NavDrawerActivity extends BriarActivity implements expiryWarning = (ViewGroup) findViewById(R.id.expiryWarning); TextView expiryWarningText = (TextView) expiryWarning.findViewById(R.id.expiryWarningText); - expiryWarningText.setText(getResources() - .getQuantityString(R.plurals.expiry_warning, daysUntilExpiry, - daysUntilExpiry)); + + // show a different snackbar in green if this is an update + if (expiry == UPDATE) { + expiryWarning.setBackgroundColor( + ContextCompat.getColor(this, R.color.briar_green_light)); + expiryWarningText.setText( + getString(R.string.expiry_update, daysUntilExpiry)); + } else { + expiryWarningText.setText(getResources() + .getQuantityString(R.plurals.expiry_warning, daysUntilExpiry, + daysUntilExpiry)); + } // make close button functional ImageView expiryWarningClose = diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerController.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerController.java index 19f08bcd8..79691695b 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerController.java @@ -8,9 +8,11 @@ import org.briarproject.briar.android.controller.handler.ResultHandler; @NotNullByDefault public interface NavDrawerController extends ActivityLifecycleController { + enum ExpiryWarning { SHOW, NO, UPDATE }; + boolean isTransportRunning(TransportId transportId); - void showExpiryWarning(final ResultHandler handler); + void showExpiryWarning(final ResultHandler handler); void expiryWarningDismissed(); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java index 8c4e578b8..543bb9a97 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java @@ -27,7 +27,11 @@ import javax.inject.Inject; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; +import static org.briarproject.briar.BuildConfig.VERSION_CODE; import static org.briarproject.briar.android.BriarApplication.EXPIRY_DATE; +import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.NO; +import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.SHOW; +import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.UPDATE; import static org.briarproject.briar.android.settings.SettingsFragment.SETTINGS_NAMESPACE; @MethodsNotNullByDefault @@ -38,6 +42,7 @@ public class NavDrawerControllerImpl extends DbControllerImpl private static final Logger LOG = Logger.getLogger(NavDrawerControllerImpl.class.getName()); private static final String EXPIRY_DATE_WARNING = "expiryDateWarning"; + private static final String EXPIRY_DATE_VERSION = "expiryDateVersion"; private final PluginManager pluginManager; private final SettingsManager settingsManager; @@ -103,7 +108,7 @@ public class NavDrawerControllerImpl extends DbControllerImpl } @Override - public void showExpiryWarning(final ResultHandler handler) { + public void showExpiryWarning(final ResultHandler handler) { runOnDbThread(new Runnable() { @Override public void run() { @@ -111,10 +116,11 @@ public class NavDrawerControllerImpl extends DbControllerImpl Settings settings = settingsManager.getSettings(SETTINGS_NAMESPACE); int warningInt = settings.getInt(EXPIRY_DATE_WARNING, 0); + int versionCode = settings.getInt(EXPIRY_DATE_VERSION, 0); if (warningInt == 0) { // we have not warned before - handler.onResult(true); + handler.onResult(SHOW); } else { long warningLong = warningInt * 1000L; long now = System.currentTimeMillis(); @@ -123,15 +129,14 @@ public class NavDrawerControllerImpl extends DbControllerImpl long daysBeforeExpiry = (EXPIRY_DATE - now) / 1000 / 60 / 60 / 24; - if (daysSinceLastWarning >= 30) { - handler.onResult(true); - return; - } - if (daysBeforeExpiry <= 3 && daysSinceLastWarning > 0) { - handler.onResult(true); - return; - } - handler.onResult(false); + if (versionCode < 1611) { + handler.onResult(UPDATE); + } else if (daysSinceLastWarning >= 30) { + handler.onResult(SHOW); + } else if (daysBeforeExpiry <= 3 && + daysSinceLastWarning > 0) { + handler.onResult(SHOW); + } else handler.onResult(NO); } } catch (DbException e) { if (LOG.isLoggable(WARNING)) @@ -150,6 +155,7 @@ public class NavDrawerControllerImpl extends DbControllerImpl Settings settings = new Settings(); int date = (int) (System.currentTimeMillis() / 1000L); settings.putInt(EXPIRY_DATE_WARNING, date); + settings.putInt(EXPIRY_DATE_VERSION, VERSION_CODE); settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE); } catch (DbException e) { if (LOG.isLoggable(WARNING)) diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 25ef8b471..dd04625cc 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -28,6 +28,7 @@ This is a beta version of Briar. Your account will expire in %d day and cannot be renewed. This is a beta version of Briar. Your account will expire in %d days and cannot be renewed. + The beta expiry date has been extended. Your account will now expire in %d days. This software has expired.\nThank you for testing! From b67abadbac3e37f0ef3423f5dbadc014b53f3990 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Wed, 11 Oct 2017 13:45:02 +0100 Subject: [PATCH 2/3] Use a setting to record whether update notice has been shown --- .../android/navdrawer/NavDrawerControllerImpl.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java index 543bb9a97..a47b158cc 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerControllerImpl.java @@ -27,7 +27,6 @@ import javax.inject.Inject; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; -import static org.briarproject.briar.BuildConfig.VERSION_CODE; import static org.briarproject.briar.android.BriarApplication.EXPIRY_DATE; import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.NO; import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.SHOW; @@ -42,7 +41,7 @@ public class NavDrawerControllerImpl extends DbControllerImpl private static final Logger LOG = Logger.getLogger(NavDrawerControllerImpl.class.getName()); private static final String EXPIRY_DATE_WARNING = "expiryDateWarning"; - private static final String EXPIRY_DATE_VERSION = "expiryDateVersion"; + private static final String EXPIRY_SHOW_UPDATE = "expiryShowUpdate"; private final PluginManager pluginManager; private final SettingsManager settingsManager; @@ -116,7 +115,8 @@ public class NavDrawerControllerImpl extends DbControllerImpl Settings settings = settingsManager.getSettings(SETTINGS_NAMESPACE); int warningInt = settings.getInt(EXPIRY_DATE_WARNING, 0); - int versionCode = settings.getInt(EXPIRY_DATE_VERSION, 0); + boolean showUpdate = + settings.getBoolean(EXPIRY_SHOW_UPDATE, true); if (warningInt == 0) { // we have not warned before @@ -129,14 +129,16 @@ public class NavDrawerControllerImpl extends DbControllerImpl long daysBeforeExpiry = (EXPIRY_DATE - now) / 1000 / 60 / 60 / 24; - if (versionCode < 1611) { + if (showUpdate) { handler.onResult(UPDATE); } else if (daysSinceLastWarning >= 30) { handler.onResult(SHOW); } else if (daysBeforeExpiry <= 3 && daysSinceLastWarning > 0) { handler.onResult(SHOW); - } else handler.onResult(NO); + } else { + handler.onResult(NO); + } } } catch (DbException e) { if (LOG.isLoggable(WARNING)) @@ -155,7 +157,7 @@ public class NavDrawerControllerImpl extends DbControllerImpl Settings settings = new Settings(); int date = (int) (System.currentTimeMillis() / 1000L); settings.putInt(EXPIRY_DATE_WARNING, date); - settings.putInt(EXPIRY_DATE_VERSION, VERSION_CODE); + settings.putBoolean(EXPIRY_SHOW_UPDATE, false); settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE); } catch (DbException e) { if (LOG.isLoggable(WARNING)) From a1f989c43c00e4bd0dcdd4b397a34d20c3fcee84 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Thu, 12 Oct 2017 17:48:57 +0100 Subject: [PATCH 3/3] Use black text for the expiry extension notice. --- .../android/navdrawer/NavDrawerActivity.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java index 7337dec05..058d55b55 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java @@ -86,7 +86,8 @@ public class NavDrawerActivity extends BriarActivity implements } else if (intent.getBooleanExtra(INTENT_FORUMS, false)) { startFragment(ForumListFragment.newInstance(), R.id.nav_btn_forums); } else if (intent.getBooleanExtra(INTENT_CONTACTS, false)) { - startFragment(ContactListFragment.newInstance(), R.id.nav_btn_contacts); + startFragment(ContactListFragment.newInstance(), + R.id.nav_btn_contacts); } else if (intent.getBooleanExtra(INTENT_BLOGS, false)) { startFragment(FeedFragment.newInstance(), R.id.nav_btn_blogs); } @@ -124,7 +125,8 @@ public class NavDrawerActivity extends BriarActivity implements transportsView.setAdapter(transportsAdapter); if (state == null) { - startFragment(ContactListFragment.newInstance(), R.id.nav_btn_contacts); + startFragment(ContactListFragment.newInstance(), + R.id.nav_btn_contacts); } if (getIntent() != null) { onNewIntent(getIntent()); @@ -181,7 +183,7 @@ public class NavDrawerActivity extends BriarActivity implements clearBackStack(); loadFragment(item.getItemId()); //Don't display the Settings Item as checked - if (item.getItemId() == R.id.nav_btn_settings){ + if (item.getItemId() == R.id.nav_btn_settings) { return false; } return true; @@ -207,7 +209,8 @@ public class NavDrawerActivity extends BriarActivity implements * exiting. This models the typical Google navigation behaviour such * as in Gmail/Inbox. */ - startFragment(ContactListFragment.newInstance(), R.id.nav_btn_contacts); + startFragment(ContactListFragment.newInstance(), + R.id.nav_btn_contacts); } else { super.onBackPressed(); } @@ -231,7 +234,7 @@ public class NavDrawerActivity extends BriarActivity implements signOut(false); } - private void startFragment(BaseFragment fragment, int itemId){ + private void startFragment(BaseFragment fragment, int itemId) { navigation.setCheckedItem(itemId); startFragment(fragment); } @@ -277,6 +280,9 @@ public class NavDrawerActivity extends BriarActivity implements expiryWarning = (ViewGroup) findViewById(R.id.expiryWarning); TextView expiryWarningText = (TextView) expiryWarning.findViewById(R.id.expiryWarningText); + // make close button functional + ImageView expiryWarningClose = + (ImageView) expiryWarning.findViewById(R.id.expiryWarningClose); // show a different snackbar in green if this is an update if (expiry == UPDATE) { @@ -284,15 +290,16 @@ public class NavDrawerActivity extends BriarActivity implements ContextCompat.getColor(this, R.color.briar_green_light)); expiryWarningText.setText( getString(R.string.expiry_update, daysUntilExpiry)); + expiryWarningText.setTextColor( + ContextCompat.getColor(this, android.R.color.black)); + expiryWarningClose.setColorFilter( + ContextCompat.getColor(this, android.R.color.black)); } else { expiryWarningText.setText(getResources() - .getQuantityString(R.plurals.expiry_warning, daysUntilExpiry, - daysUntilExpiry)); + .getQuantityString(R.plurals.expiry_warning, + daysUntilExpiry, daysUntilExpiry)); } - // make close button functional - ImageView expiryWarningClose = - (ImageView) expiryWarning.findViewById(R.id.expiryWarningClose); expiryWarningClose.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {