Enable pro for demo accounts

master
M66B 2 weeks ago
parent 775f4b02ec
commit 378f71d586

@ -425,7 +425,7 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback<TupleMe
} }
EntityAccount account = db.account().getAccount(browsable.account); EntityAccount account = db.account().getAccount(browsable.account);
if (account == null || account.protocol != EntityAccount.TYPE_IMAP || account.isTestAccount()) if (account == null || account.protocol != EntityAccount.TYPE_IMAP || account.isTestAccount(context))
return 0; return 0;
if (criteria == null) { if (criteria == null) {

@ -27,6 +27,7 @@ import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
@ -565,12 +566,27 @@ public class EntityAccount extends EntityOrder implements Serializable {
}; };
} }
boolean isTestAccount() { boolean isTestAccount(Context context) {
return isTestUser(this.user); return isTestUser(context, this.user);
} }
static boolean isTestUser(String user) { private static final String DEMO_DOMAIN_SHA256 = "6aa5aef252c27578aa36a14b06d3ba612fe39d054705a7282c77ee78ce276fc4";
return (user != null && user.endsWith("@demo.faircode.eu"));
static boolean isTestUser(Context context, String user) {
String domain = UriHelper.getEmailDomain(user);
if (TextUtils.isEmpty(domain))
return false;
try {
boolean demo = DEMO_DOMAIN_SHA256.equals(Helper.sha256(domain));
if (demo && context != null) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putBoolean("pro", true).apply();
}
return demo;
} catch (Throwable ex) {
Log.e(ex);
return false;
}
} }
static EntityAccount getTestAccount(String user) { static EntityAccount getTestAccount(String user) {

@ -458,8 +458,8 @@ public class EntityIdentity {
return (display == null ? name : display); return (display == null ? name : display);
} }
boolean isTestIdentity() { boolean isTestIdentity(Context context) {
return EntityAccount.isTestUser(this.user); return EntityAccount.isTestUser(context, this.user);
} }
static EntityIdentity getTestIdentity(Long account, String user) { static EntityIdentity getTestIdentity(Long account, String user) {

@ -117,7 +117,7 @@ public class EntityOperation {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
EntityAccount account = db.account().getAccount(message.account); EntityAccount account = db.account().getAccount(message.account);
if (account != null && account.isTestAccount()) { if (account != null && account.isTestAccount(context)) {
if (DELETE.equals(name) || SEND.equals(name)) if (DELETE.equals(name) || SEND.equals(name))
db.message().deleteMessage(message.id); db.message().deleteMessage(message.id);
return; return;

@ -792,7 +792,7 @@ public class FragmentAccount extends FragmentBase {
} }
private void onCheck() { private void onCheck() {
if (EntityAccount.isTestUser(etUser.getText().toString())) { if (EntityAccount.isTestUser(getContext(), etUser.getText().toString())) {
EntityAccount.createTestAccount(this, etUser.getText().toString(), new Runnable() { EntityAccount.createTestAccount(this, etUser.getText().toString(), new Runnable() {
@Override @Override
public void run() { public void run() {

@ -785,7 +785,7 @@ public class FragmentIdentity extends FragmentBase {
private void onSave(boolean should) { private void onSave(boolean should) {
EntityAccount account = (EntityAccount) spAccount.getSelectedItem(); EntityAccount account = (EntityAccount) spAccount.getSelectedItem();
if (account != null && EntityAccount.isTestUser(etUser.getText().toString())) { if (account != null && EntityAccount.isTestUser(getContext(), etUser.getText().toString())) {
EntityIdentity.createTestIdentity(this, account.id, etUser.getText().toString(), new Runnable() { EntityIdentity.createTestIdentity(this, account.id, etUser.getText().toString(), new Runnable() {
@Override @Override
public void run() { public void run() {

@ -379,7 +379,7 @@ public class FragmentOAuth extends FragmentBase {
String name = etName.getText().toString().trim(); String name = etName.getText().toString().trim();
String email = etEmail.getText().toString().trim(); String email = etEmail.getText().toString().trim();
if (EntityAccount.isTestUser(email)) { if (EntityAccount.isTestUser(getContext(), email)) {
EntityAccount.createTestAccount(this, email, new Runnable() { EntityAccount.createTestAccount(this, email, new Runnable() {
@Override @Override
public void run() { public void run() {

@ -473,7 +473,7 @@ public class FragmentPop extends FragmentBase {
} }
private void onSave(boolean should) { private void onSave(boolean should) {
if (EntityAccount.isTestUser(etUser.getText().toString())) { if (EntityAccount.isTestUser(getContext(), etUser.getText().toString())) {
EntityAccount.createTestAccount(this, etUser.getText().toString(), new Runnable() { EntityAccount.createTestAccount(this, etUser.getText().toString(), new Runnable() {
@Override @Override
public void run() { public void run() {

@ -1631,7 +1631,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
final PowerManager.WakeLock wlMessage = pm.newWakeLock( final PowerManager.WakeLock wlMessage = pm.newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK, BuildConfig.APPLICATION_ID + ":account." + account.id + ".message"); PowerManager.PARTIAL_WAKE_LOCK, BuildConfig.APPLICATION_ID + ":account." + account.id + ".message");
if (account != null && account.isTestAccount()) if (account != null && account.isTestAccount(this))
return; return;
long start = new Date().getTime(); long start = new Date().getTime();

Loading…
Cancel
Save