mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 11:19:04 +01:00
Add material tap target prompt for social backup feature
This commit is contained in:
@@ -158,7 +158,8 @@ public class NavDrawerActivity extends BriarActivity implements
|
||||
@Override
|
||||
public void onDrawerOpened(View drawerView) {
|
||||
super.onDrawerOpened(drawerView);
|
||||
navDrawerViewModel.checkTransportsOnboarding();
|
||||
// navDrawerViewModel.checkTransportsOnboarding();
|
||||
navDrawerViewModel.checkSocialBackupOnboarding();
|
||||
}
|
||||
};
|
||||
drawerLayout.addDrawerListener(drawerToggle);
|
||||
@@ -167,9 +168,12 @@ public class NavDrawerActivity extends BriarActivity implements
|
||||
initializeTransports();
|
||||
transportsView.setAdapter(transportsAdapter);
|
||||
|
||||
observeOnce(navDrawerViewModel.showTransportsOnboarding(), this, show ->
|
||||
observeOnce(torIcon, this, imageView ->
|
||||
showTransportsOnboarding(show, imageView)));
|
||||
// observeOnce(navDrawerViewModel.showTransportsOnboarding(), this, show ->
|
||||
// observeOnce(torIcon, this, imageView ->
|
||||
// showTransportsOnboarding(show, imageView)));
|
||||
|
||||
observeOnce(navDrawerViewModel.showSocialBackupOnboarding(), this,
|
||||
this::showSocialBackupOnboarding);
|
||||
|
||||
lockManager.isLockable().observe(this, this::setLockVisible);
|
||||
|
||||
@@ -468,6 +472,22 @@ public class NavDrawerActivity extends BriarActivity implements
|
||||
}
|
||||
}
|
||||
|
||||
private void showSocialBackupOnboarding(boolean show) {
|
||||
if (show) {
|
||||
new MaterialTapTargetPrompt.Builder(NavDrawerActivity.this,
|
||||
R.style.OnboardingDialogTheme)
|
||||
.setTarget(R.id.nav_btn_settings)
|
||||
.setPrimaryText(R.string.social_backup_onboarding_title)
|
||||
.setSecondaryText(R.string.social_backup_onboarding_long)
|
||||
.setFocalRadius((float) 350)
|
||||
.setFocalPadding((float) 100)
|
||||
.setBackgroundColour(
|
||||
ContextCompat.getColor(this, R.color.briar_primary))
|
||||
.show();
|
||||
navDrawerViewModel.socialBackupOnboardingShown();
|
||||
}
|
||||
}
|
||||
|
||||
private static class Transport {
|
||||
|
||||
private final TransportId id;
|
||||
|
||||
@@ -39,6 +39,8 @@ public class NavDrawerViewModel extends DbViewModel {
|
||||
private static final String EXPIRY_DATE_WARNING = "expiryDateWarning";
|
||||
private static final String SHOW_TRANSPORTS_ONBOARDING =
|
||||
"showTransportsOnboarding";
|
||||
private static final String SHOW_SOCIAL_BACKUP_ONBOARDING =
|
||||
"showSocialBackupOnboarding";
|
||||
|
||||
private final SettingsManager settingsManager;
|
||||
|
||||
@@ -48,6 +50,8 @@ public class NavDrawerViewModel extends DbViewModel {
|
||||
new MutableLiveData<>();
|
||||
private final MutableLiveData<Boolean> showTransportsOnboarding =
|
||||
new MutableLiveData<>();
|
||||
private final MutableLiveData<Boolean> showSocialBackupOnboarding =
|
||||
new MutableLiveData<>();
|
||||
|
||||
@Inject
|
||||
NavDrawerViewModel(Application app,
|
||||
@@ -142,6 +146,11 @@ public class NavDrawerViewModel extends DbViewModel {
|
||||
return showTransportsOnboarding;
|
||||
}
|
||||
|
||||
@UiThread
|
||||
LiveData<Boolean> showSocialBackupOnboarding() {
|
||||
return showSocialBackupOnboarding;
|
||||
}
|
||||
|
||||
@UiThread
|
||||
void checkTransportsOnboarding() {
|
||||
if (showTransportsOnboarding.getValue() != null) return;
|
||||
@@ -171,4 +180,35 @@ public class NavDrawerViewModel extends DbViewModel {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@UiThread
|
||||
void checkSocialBackupOnboarding() {
|
||||
if (showSocialBackupOnboarding.getValue() != null) return;
|
||||
runOnDbThread(() -> {
|
||||
try {
|
||||
Settings settings =
|
||||
settingsManager.getSettings(SETTINGS_NAMESPACE);
|
||||
boolean show =
|
||||
settings.getBoolean(SHOW_SOCIAL_BACKUP_ONBOARDING,
|
||||
true);
|
||||
showSocialBackupOnboarding.postValue(show);
|
||||
} catch (DbException e) {
|
||||
logException(LOG, WARNING, e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@UiThread
|
||||
void socialBackupOnboardingShown() {
|
||||
showSocialBackupOnboarding.setValue(false);
|
||||
runOnDbThread(() -> {
|
||||
try {
|
||||
Settings settings = new Settings();
|
||||
settings.putBoolean(SHOW_SOCIAL_BACKUP_ONBOARDING, false);
|
||||
settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE);
|
||||
} catch (DbException e) {
|
||||
logException(LOG, WARNING, e);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.briarproject.briar.android.settings;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
@@ -12,6 +14,7 @@ import org.briarproject.bramble.api.FeatureFlags;
|
||||
import org.briarproject.briar.R;
|
||||
import org.briarproject.briar.android.activity.ActivityComponent;
|
||||
import org.briarproject.briar.android.activity.BriarActivity;
|
||||
import org.briarproject.briar.android.navdrawer.NavDrawerActivity;
|
||||
import org.briarproject.briar.android.util.UiUtils;
|
||||
import org.briarproject.briar.android.view.AuthorView;
|
||||
|
||||
@@ -19,11 +22,15 @@ import javax.inject.Inject;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
|
||||
import de.hdodenhof.circleimageview.CircleImageView;
|
||||
import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt;
|
||||
|
||||
import static android.widget.Toast.LENGTH_LONG;
|
||||
import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_AVATAR_IMAGE;
|
||||
import static org.briarproject.briar.android.util.UiUtils.resolveColorAttribute;
|
||||
|
||||
public class SettingsActivity extends BriarActivity {
|
||||
|
||||
|
||||
@@ -673,9 +673,11 @@
|
||||
|
||||
<string name="social_backup_setup_explainer_title">Backup your Briar identity and contacts list using trusted contacts</string>
|
||||
<string name="social_backup_setup_explainer_long">You can choose a set of trusted contacts to send backup pieces to.\n\nYou set how many of these contacts must help you recover your account.\n\nFor example, you can choose three trusted contacts and that any two of them are needed to recover.</string>
|
||||
|
||||
<string name="social_backup_setup_explainer_button">Choose trusted contacts</string>
|
||||
|
||||
<string name="social_backup_onboarding_title">Backup your Briar account</string>
|
||||
<string name="social_backup_onboarding_long">Social backup feature allows you to recover your account with the help of trusted contacts</string>
|
||||
|
||||
<!-- recovery from the secret owner's POV -->
|
||||
|
||||
<string name="recovery_explainer">You need to meet your trusted contacts in-person to receive pieces</string>
|
||||
|
||||
Reference in New Issue
Block a user