diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
old mode 100644
new mode 100755
index 246fba8ee..6bc92b55d
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -181,6 +181,9 @@
+
{
+ LoginTask task = new LoginTask();
+ task.setCaller(playStoreTask);
+ task.setContext(this);
+ task.prepareDialog(R.string.dialog_message_logging_in_predefined, R.string.dialog_title_logging_in);
+ task.execute();
+ });
+ EditText editPassword = findViewById(R.id.passwordg);
+ Button login_google = findViewById(R.id.button_okg);
+ login_google.setOnClickListener(view -> {
+ Context c = view.getContext();
+ String email = editEmail.getText().toString();
+ String password = editPassword.getText().toString();
+ if (TextUtils.isEmpty(email) || TextUtils.isEmpty(password)) {
+ ContextUtil.toast(c.getApplicationContext(), R.string.error_credentials_empty);
+ return;
+ }
+ getUserCredentialsTask().execute(email, password);
+ });
+ ImageView toggle_password = findViewById(R.id.toggle_password_visibility);
+ toggle_password.setOnClickListener(v -> {
+ boolean passwordVisible = !TextUtils.isEmpty((String) v.getTag());
+ v.setTag(passwordVisible ? null : "tag");
+ ((ImageView) v).setImageResource(passwordVisible ? R.drawable.ic_visibility_on : R.drawable.ic_visibility_off);
+ editPassword.setInputType(passwordVisible ? InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD : InputType.TYPE_CLASS_TEXT);
+ });
+ }
+
+ private UserProvidedCredentialsTask getUserCredentialsTask() {
+ UserProvidedCredentialsTask task = new UserProvidedCredentialsTask();
+ task.setCaller(playStoreTask);
+ task.setContext(this);
+ task.prepareDialog(R.string.dialog_message_logging_in_provided_by_user, R.string.dialog_title_logging_in);
+ return task;
+ }
+
+ @SuppressLint("StaticFieldLeak")
+ private class UserProvidedCredentialsTask extends CredentialsDialogBuilder.CheckCredentialsTask {
+
+ private String previousEmail;
+ private String UNKNOWN = "Unknown user.";
+ private String PICASAWEB = "picasaweb";
+ private String Name, Url;
+
+ @Override
+ protected CredentialsDialogBuilder getDialogBuilder() {
+ return new UserProvidedAccountDialogBuilder(context).setPreviousEmail(previousEmail);
+ }
+
+ @Override
+ protected Void doInBackground(String[] params) {
+ if (params.length < 2
+ || params[0] == null
+ || params[1] == null
+ || TextUtils.isEmpty(params[0])
+ || TextUtils.isEmpty(params[1])
+ ) {
+ exception = new CredentialsEmptyException();
+ return null;
+ }
+ previousEmail = params[0];
+ try {
+ new PlayStoreApiAuthenticator(context).login(params[0], params[1]);
+ addUsedEmail(params[0]);
+ } catch (Throwable e) {
+ if (e instanceof AuthException && null != ((AuthException) e).getTwoFactorUrl()) {
+ addUsedEmail(params[0]);
+ }
+ exception = e;
+ }
+ return null;
+ }
+
+ private void addUsedEmail(String email) {
+ Set emailsSet = Util.getStringSet(context, "USED_EMAILS_SET");
+ emailsSet.add(email);
+ Util.putStringSet(context, "USED_EMAILS_SET", emailsSet);
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ super.onPostExecute(result);
+ if (success()) {
+ PreferenceManager.getDefaultSharedPreferences(LoginActivity.this).edit().putBoolean("LOGGED_IN", true).apply();
+ PreferenceManager.getDefaultSharedPreferences(LoginActivity.this).edit().putBoolean("GOOGLE_ACC", true).apply();
+ PreferenceManager.getDefaultSharedPreferences(LoginActivity.this).edit().putBoolean("DUMMY_ACC", false).apply();
+ setUser();
+ }
+ }
+
+ @SuppressLint("StaticFieldLeak")
+ private void setUser() {
+ Email = PreferenceFragment.getString(LoginActivity.this, PlayStoreApiAuthenticator.PREFERENCE_EMAIL);
+ new GoogleAccountInfo(Email) {
+ @Override
+ public void onPostExecute(String result) {
+ parseRAW(result);
+ }
+ }.execute();
+ }
+
+ private void parseRAW(String rawData) {
+ if (rawData.contains(PICASAWEB) && !rawData.contains(UNKNOWN)) {
+ Name = rawData.substring(rawData.indexOf("") + 6, rawData.indexOf(""));
+ Url = rawData.substring(rawData.indexOf("") + 18, rawData.lastIndexOf(""));
+ } else {
+ Name = Email;
+ Url = "I dont fucking care";
+ }
+
+ PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("GOOGLE_NAME", Name).commit();
+ PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("GOOGLE_URL", Url).commit();
+ if (!Url.isEmpty()) {
+ finish();
+ }
+ }
+ }
+
+ @SuppressLint("StaticFieldLeak")
+ private class LoginTask extends AccountTypeDialogBuilder.AppProvidedCredentialsTask {
+
+ @Override
+ protected void payload() throws IOException {
+ new PlayStoreApiAuthenticator(context).login();
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ super.onPostExecute(result);
+ PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean("LOGGED_IN", true).apply();
+ PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean("DUMMY_ACC", true).apply();
+ PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean("GOOGLE_ACC", false).apply();
+ LoginActivity.this.finish();
+ }
+ }
+
+ protected void setText(int viewId, String text) {
+ TextView textView = ViewUtils.findViewById(this, viewId);
+ if (null != textView)
+ textView.setText(text);
+ }
+
+ protected void setText(int viewId, int stringId, Object... text) {
+ setText(viewId, this.getString(stringId, text));
+ }
+
+ protected boolean isGoogle() {
+ return PreferenceFragment.getBoolean(this, "GOOGLE_ACC");
+ }
+
+ protected boolean isLoggedIn() {
+ return PreferenceFragment.getBoolean(this, "LOGGED_IN");
+ }
+
+ protected boolean isConnected() {
+ return PhoneUtils.isNetworkAvailable(this);
+ }
+}
diff --git a/app/src/main/java/in/dragons/galaxy/fragment/AccountsFragment.java b/app/src/main/java/in/dragons/galaxy/fragment/AccountsFragment.java
index 9d307ef4e..15e1270e5 100644
--- a/app/src/main/java/in/dragons/galaxy/fragment/AccountsFragment.java
+++ b/app/src/main/java/in/dragons/galaxy/fragment/AccountsFragment.java
@@ -1,6 +1,7 @@
package in.dragons.galaxy.fragment;
import android.app.AlertDialog;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.ColorStateList;
import android.os.Bundle;
@@ -21,6 +22,7 @@ import com.squareup.picasso.Picasso;
import in.dragons.galaxy.CircleTransform;
import in.dragons.galaxy.PlayStoreApiAuthenticator;
import in.dragons.galaxy.R;
+import in.dragons.galaxy.activities.LoginActivity;
public class AccountsFragment extends UtilFragment {
@@ -52,7 +54,6 @@ public class AccountsFragment extends UtilFragment {
drawGoogle();
} else if (isLoggedIn() && isDummy())
drawDummy();
-
setFab();
return v;
diff --git a/app/src/main/java/in/dragons/galaxy/fragment/CategoryListFragment.java b/app/src/main/java/in/dragons/galaxy/fragment/CategoryListFragment.java
index 57f90778d..d60ec343f 100644
--- a/app/src/main/java/in/dragons/galaxy/fragment/CategoryListFragment.java
+++ b/app/src/main/java/in/dragons/galaxy/fragment/CategoryListFragment.java
@@ -53,9 +53,7 @@ public class CategoryListFragment extends CategoryListTaskHelper {
setupAllCategories();
setupTopCategories();
}
- } else
- LoginFirst();
-
+ }
return v;
}
diff --git a/app/src/main/java/in/dragons/galaxy/fragment/UtilFragment.java b/app/src/main/java/in/dragons/galaxy/fragment/UtilFragment.java
old mode 100644
new mode 100755
index 8f380825a..d0aa9e4e7
--- a/app/src/main/java/in/dragons/galaxy/fragment/UtilFragment.java
+++ b/app/src/main/java/in/dragons/galaxy/fragment/UtilFragment.java
@@ -30,6 +30,7 @@ import in.dragons.galaxy.PlayStoreApiAuthenticator;
import in.dragons.galaxy.R;
import in.dragons.galaxy.Util;
import in.dragons.galaxy.activities.AccountsActivity;
+import in.dragons.galaxy.activities.LoginActivity;
import in.dragons.galaxy.builders.AccountTypeDialogBuilder;
import in.dragons.galaxy.builders.CredentialsDialogBuilder;
import in.dragons.galaxy.builders.UserProvidedAccountDialogBuilder;
@@ -108,9 +109,8 @@ public abstract class UtilFragment extends Fragment {
return new AlertDialog.Builder(getActivity())
.setTitle("Logged Out ?")
.setMessage(R.string.header_usr_noEmail)
- .setPositiveButton("Login", (dialogInterface, i) -> startActivity(new Intent(getActivity(), AccountsActivity.class)))
- .setNegativeButton("Dismiss", (dialogInterface, i) -> {
- })
+ .setPositiveButton("Login", (dialogInterface, i) -> startActivity(new Intent(getActivity(), LoginActivity.class)))
+ .setCancelable(false)
.show();
}
diff --git a/app/src/main/res/layout-land/activity_login.xml b/app/src/main/res/layout-land/activity_login.xml
new file mode 100644
index 000000000..2ff325e0c
--- /dev/null
+++ b/app/src/main/res/layout-land/activity_login.xml
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 000000000..e5972baa4
--- /dev/null
+++ b/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/app_updatable_inc.xml b/app/src/main/res/layout/app_updatable_inc.xml
old mode 100644
new mode 100755
index ee2758837..6a257b7ea
--- a/app/src/main/res/layout/app_updatable_inc.xml
+++ b/app/src/main/res/layout/app_updatable_inc.xml
@@ -12,6 +12,8 @@
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
old mode 100644
new mode 100755
index 4b9cf4c13..9864957a1
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -42,11 +42,11 @@
diff --git a/app/src/main/res/values-v23/style.xml b/app/src/main/res/values-v23/style.xml
old mode 100644
new mode 100755
index b9c6ed550..8bb9cf166
--- a/app/src/main/res/values-v23/style.xml
+++ b/app/src/main/res/values-v23/style.xml
@@ -14,4 +14,9 @@
- true
- @style/ThemeOverlay.AppCompat.Light
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
old mode 100644
new mode 100755
index 5b3719753..a9c0db56c
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -36,15 +36,19 @@
"Category: %1$s"
"Rating: %1$s"
"Downloads: %1$s"
- Welcome
+ Welcome,
+ Welcome to Aurora
"My apps"
Log out
- Log in
+ Login
+ OK
+ OR
+ Select an account to login
Use Dummy
Use Google
Anonymous
- Login using Dummy Account
- Login using Google Account
+ Login as Anonymous
+ Login with Google
Switch Dummy
Accounts
Search
diff --git a/app/src/main/res/values/style.xml b/app/src/main/res/values/style.xml
old mode 100644
new mode 100755
index 0b6555872..0dabfd64e
--- a/app/src/main/res/values/style.xml
+++ b/app/src/main/res/values/style.xml
@@ -14,6 +14,10 @@
- @style/ThemeOverlay.AppCompat.Light
+
+