diff --git a/.tx/config b/.tx/config index 87b7a29db..7ed95ad03 100644 --- a/.tx/config +++ b/.tx/config @@ -12,3 +12,10 @@ file_filter = src/quicksy/res/values-/strings.xml source_file = src/quicksy/res/values/strings.xml source_lang = en type = ANDROID + +[conversations.conversations-strings] +file_filter = src/conversations/res/values-/strings.xml +source_file = src/conversations/res/values/strings.xml +source_lang = en +type = ANDROID + diff --git a/CHANGELOG.md b/CHANGELOG.md index e89ccc26c..dfc89dc90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +### Version 2.5.0 +* Added channel search via search.jabbercat.org +* Reworked onboarding screens +* Warn when trying to enter domain address or channel address in Add Contact dialog + ### Version 2.4.3 * Fixed display of private messages sent from another client * Fixed backup creation on long time installations diff --git a/build.gradle b/build.gradle index eb5ba2d07..51780e213 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.3.0' + classpath 'com.android.tools.build:gradle:3.4.0' } } @@ -64,6 +64,9 @@ dependencies { implementation 'org.conscrypt:conscrypt-android:1.3.0' implementation 'me.drakeet.support:toastcompat:1.1.0' implementation "com.leinardi.android:speed-dial:2.0.1" + implementation 'com.squareup.retrofit2:retrofit:2.5.0' + implementation 'com.squareup.retrofit2:converter-gson:2.5.0' + implementation 'com.google.guava:guava:27.1-android' quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.10.1' } @@ -78,8 +81,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 28 - versionCode 323 - versionName "2.4.3" + versionCode 326 + versionName "2.5.0" archivesBaseName += "-$versionName" applicationId "eu.sum7.conversations" resValue "string", "applicationId", applicationId diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0682df5e2..f0ff44317 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Wed Apr 24 10:50:09 CEST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2-all.zip diff --git a/proguard-rules.pro b/proguard-rules.pro index afd589c54..3c3593577 100644 --- a/proguard-rules.pro +++ b/proguard-rules.pro @@ -18,3 +18,5 @@ -dontwarn org.bouncycastle.cert.dane.** -dontwarn rocks.xmpp.addr.** -dontwarn com.google.firebase.analytics.connector.AnalyticsConnector +-dontwarn java.lang.** +-dontwarn javax.lang.** diff --git a/src/conversations/AndroidManifest.xml b/src/conversations/AndroidManifest.xml index 2c01f6d6c..0a01c6c0f 100644 --- a/src/conversations/AndroidManifest.xml +++ b/src/conversations/AndroidManifest.xml @@ -12,9 +12,13 @@ android:name=".ui.WelcomeActivity" android:label="@string/app_name" android:launchMode="singleTask"/> + { + final Intent intent = new Intent(this, MagicCreateActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + addInviteUri(intent); + startActivity(intent); + }); + binding.useOwnProvider.setOnClickListener(v -> { + List accounts = xmppConnectionService.getAccounts(); + Intent intent = new Intent(this, EditAccountActivity.class); + intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, true); + if (accounts.size() == 1) { + intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString()); + intent.putExtra("init", true); + } else if (accounts.size() >= 1) { + intent = new Intent(this, ManageAccountActivity.class); + } + addInviteUri(intent); + startActivity(intent); + }); + + } + + public void addInviteUri(Intent intent) { + StartConversationActivity.addInviteUri(intent, getIntent()); + } + + public static void launch(AppCompatActivity activity) { + Intent intent = new Intent(activity, PickServerActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + activity.startActivity(intent); + activity.overridePendingTransition(0, 0); + } + +} diff --git a/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java b/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java index eb466e37a..02613f368 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java @@ -2,18 +2,19 @@ package eu.siacs.conversations.ui; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; -import android.widget.Button; import android.widget.Toast; import java.util.List; import eu.siacs.conversations.R; +import eu.siacs.conversations.databinding.ActivityWelcomeBinding; import eu.siacs.conversations.entities.Account; import static eu.siacs.conversations.utils.PermissionUtils.allGranted; @@ -55,24 +56,18 @@ public class WelcomeActivity extends XmppActivity { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } super.onCreate(savedInstanceState); - setContentView(R.layout.welcome); - setSupportActionBar(findViewById(R.id.toolbar)); - final ActionBar ab = getSupportActionBar(); - if (ab != null) { - ab.setDisplayShowHomeEnabled(false); - ab.setDisplayHomeAsUpEnabled(false); - } - final Button createAccount = findViewById(R.id.create_account); - createAccount.setOnClickListener(v -> { - final Intent intent = new Intent(WelcomeActivity.this, MagicCreateActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + ActivityWelcomeBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_welcome); + setSupportActionBar((Toolbar) binding.toolbar); + configureActionBar(getSupportActionBar(), false); + binding.registerNewAccount.setOnClickListener(v -> { + final Intent intent = new Intent(this, PickServerActivity.class); addInviteUri(intent); startActivity(intent); }); - final Button useOwnProvider = findViewById(R.id.use_own_provider); - useOwnProvider.setOnClickListener(v -> { + binding.useExisting.setOnClickListener(v -> { List accounts = xmppConnectionService.getAccounts(); Intent intent = new Intent(WelcomeActivity.this, EditAccountActivity.class); + intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER,false); if (accounts.size() == 1) { intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString()); intent.putExtra("init", true); diff --git a/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java b/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java index ee5433cf4..6e8ed2eff 100644 --- a/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java +++ b/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java @@ -9,13 +9,23 @@ import eu.siacs.conversations.services.XmppConnectionService; import eu.siacs.conversations.ui.ConversationsActivity; import eu.siacs.conversations.ui.EditAccountActivity; import eu.siacs.conversations.ui.ManageAccountActivity; +import eu.siacs.conversations.ui.PickServerActivity; import eu.siacs.conversations.ui.StartConversationActivity; import eu.siacs.conversations.ui.WelcomeActivity; public class SignupUtils { public static Intent getSignUpIntent(final Activity activity) { - Intent intent = new Intent(activity, WelcomeActivity.class); + return getSignUpIntent(activity, false); + } + + public static Intent getSignUpIntent(final Activity activity, final boolean toServerChooser) { + Intent intent; + if (toServerChooser) { + intent = new Intent(activity, PickServerActivity.class); + } else { + intent = new Intent(activity, WelcomeActivity.class); + } StartConversationActivity.addInviteUri(intent, activity.getIntent()); return intent; } @@ -27,6 +37,9 @@ public class SignupUtils { if (pendingAccount != null) { intent = new Intent(activity, EditAccountActivity.class); intent.putExtra("jid", pendingAccount.getJid().asBareJid().toString()); + if (!pendingAccount.isOptionSet(Account.OPTION_MAGIC_CREATE)) { + intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, pendingAccount.isOptionSet(Account.OPTION_REGISTER)); + } } else { if (service.getAccounts().size() == 0) { if (Config.X509_VERIFICATION) { diff --git a/src/conversations/res/layout/activity_pick_server.xml b/src/conversations/res/layout/activity_pick_server.xml new file mode 100644 index 000000000..ffcfbc20d --- /dev/null +++ b/src/conversations/res/layout/activity_pick_server.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + +