// Path: app/src/main/java/com/zulip/android/networking/AsyncDevGetEmails.java
// public class AsyncDevGetEmails extends ZulipAsyncPushTask {
//     public final static String EMAIL_JSON = "emails_json";
//     private static final String DISABLED = "dev_disabled";
//     private Context context;
// 
//     public AsyncDevGetEmails(LoginActivity loginActivity) {
//         super((ZulipApp) loginActivity.getApplication());
//         context = loginActivity;
//     }
// 
//     public final void execute() {
//         execute("GET", "v1/dev_get_emails");
//     }
// 
//     @Override
//     protected void onPostExecute(String result) {
//         try {
//             JSONObject obj = new JSONObject(result);
//             if (obj.getString("result").equals("success")) {
//                 Intent intent = new Intent(context, DevAuthActivity.class);
//                 intent.putExtra(EMAIL_JSON, result);
//                 context.startActivity(intent);
//                 ((LoginActivity) context).finish();
//             }
//         } catch (JSONException e) {
//             ZLog.logException(e);
//         }
//     }
// 
//     @Override
//     protected void onCancelled(String result) {
//         super.onCancelled(result);
//         if (result == null) return;
//         String message = context.getString(R.string.network_error);
//         try {
//             JSONObject obj = new JSONObject(result);
//             message = obj.getString("msg");
//         } catch (JSONException e1) {
//             ZLog.logException(e1);
//         }
//         final String finalMessage = message;
//         ((LoginActivity) context).runOnUiThread(new Runnable() {
//             @Override
//             public void run() {
//                 Toast.makeText(context, finalMessage, Toast.LENGTH_LONG)
//                         .show();
//             }
//         });
//     }
// }
// 
// Path: app/src/main/java/com/zulip/android/networking/response/LoginResponse.java
// public class LoginResponse {
// 
//     @SerializedName("msg")
//     private String msg;
// 
//     @SerializedName("api_key")
//     private String apiKey;
// 
//     @SerializedName("result")
//     private String result;
// 
//     @SerializedName("email")
//     private String email;
// 
//     public String getMsg() {
//         return msg;
//     }
// 
//     public String getApiKey() {
//         return apiKey;
//     }
// 
//     public String getResult() {
//         return result;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// }
// 
// Path: app/src/main/java/com/zulip/android/networking/util/DefaultCallback.java
// public abstract class DefaultCallback<T> implements Callback<T> {
// 
//     @Override
//     @CallSuper
//     public void onResponse(Call<T> call, Response<T> response) {
//         if (response.isSuccessful()) {
//             onSuccess(call, response);
//         } else {
//             onError(call, response);
//         }
//     }
// 
//     public abstract void onSuccess(Call<T> call, Response<T> response);
// 
//     public abstract void onError(Call<T> call, Response<T> response);
// 
// 
//     @Override
//     public void onFailure(Call<T> call, Throwable t) {
//         //log error
//         ZLog.logException(t);
//     }
// }
// 
// Path: app/src/main/java/com/zulip/android/util/AuthClickListener.java
// public interface AuthClickListener {
//     void onItemClick(String email);
// }
// 
// Path: app/src/main/java/com/zulip/android/util/ZLog.java
// public class ZLog {
// 
//     private ZLog() {
//     }
// 
//     public static void logException(Throwable e) {
//         if (!BuildHelper.shouldLogToCrashlytics()) {
//             Log.e("Error", "oops", e);
//         } else {
//             Crashlytics.logException(e);
//         }
//     }
// 
//     public static void log(String message) {
//         if (!BuildHelper.shouldLogToCrashlytics()) {
//             Log.e("Error", message);
//         } else {
//             Crashlytics.log(message);
//         }
//     }
// }


import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;
import com.zulip.android.R;
import com.zulip.android.networking.AsyncDevGetEmails;
import com.zulip.android.networking.response.LoginResponse;
import com.zulip.android.networking.util.DefaultCallback;
import com.zulip.android.util.AuthClickListener;
import com.zulip.android.util.CommonProgressDialog;
import com.zulip.android.util.ZLog;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Response;
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dev_auth);
        String json = getIntent().getStringExtra(AsyncDevGetEmails.EMAIL_JSON);
        recyclerView = (RecyclerView) findViewById(R.id.devAuthRecyclerView);
        List<String> emails = new ArrayList<>();
        int directAdminSize = 1;
        commonProgressDialog = new CommonProgressDialog(this);

        try {
            JSONObject jsonObject = new JSONObject(json);
            JSONArray jsonArray = jsonObject.getJSONArray("direct_admins");
            for (int i = 0; i < jsonArray.length(); i++) {
                emails.add(jsonArray.get(i).toString());
            }
            directAdminSize = jsonArray.length();
            jsonArray = jsonObject.getJSONArray("direct_users");
            for (int i = 0; i < jsonArray.length(); i++) {
                emails.add(jsonArray.get(i).toString());
            }
        } catch (JSONException e) {
            ZLog.logException(e);
        }
        AuthEmailAdapter authEmailAdapter = new AuthEmailAdapter(emails, directAdminSize, DevAuthActivity.this);
        recyclerView.setAdapter(authEmailAdapter);
        authEmailAdapter.setOnItemClickListener(new AuthClickListener() {
            @Override
            public void onItemClick(String email) {
                commonProgressDialog.showWithMessage(getString(R.string.signing_in));
                getServices()
                        .loginDEV(email)
// Path: app/src/main/java/com/zulip/android/networking/AsyncDevGetEmails.java
// public class AsyncDevGetEmails extends ZulipAsyncPushTask {
//     public final static String EMAIL_JSON = "emails_json";
//     private static final String DISABLED = "dev_disabled";
//     private Context context;
// 
//     public AsyncDevGetEmails(LoginActivity loginActivity) {
//         super((ZulipApp) loginActivity.getApplication());
//         context = loginActivity;
//     }
// 
//     public final void execute() {
//         execute("GET", "v1/dev_get_emails");
//     }
// 
//     @Override
//     protected void onPostExecute(String result) {
//         try {
//             JSONObject obj = new JSONObject(result);
//             if (obj.getString("result").equals("success")) {
//                 Intent intent = new Intent(context, DevAuthActivity.class);
//                 intent.putExtra(EMAIL_JSON, result);
//                 context.startActivity(intent);
//                 ((LoginActivity) context).finish();
//             }
//         } catch (JSONException e) {
//             ZLog.logException(e);
//         }
//     }
// 
//     @Override
//     protected void onCancelled(String result) {
//         super.onCancelled(result);
//         if (result == null) return;
//         String message = context.getString(R.string.network_error);
//         try {
//             JSONObject obj = new JSONObject(result);
//             message = obj.getString("msg");
//         } catch (JSONException e1) {
//             ZLog.logException(e1);
//         }
//         final String finalMessage = message;
//         ((LoginActivity) context).runOnUiThread(new Runnable() {
//             @Override
//             public void run() {
//                 Toast.makeText(context, finalMessage, Toast.LENGTH_LONG)
//                         .show();
//             }
//         });
//     }
// }
// 
// Path: app/src/main/java/com/zulip/android/networking/response/LoginResponse.java
// public class LoginResponse {
// 
//     @SerializedName("msg")
//     private String msg;
// 
//     @SerializedName("api_key")
//     private String apiKey;
// 
//     @SerializedName("result")
//     private String result;
// 
//     @SerializedName("email")
//     private String email;
// 
//     public String getMsg() {
//         return msg;
//     }
// 
//     public String getApiKey() {
//         return apiKey;
//     }
// 
//     public String getResult() {
//         return result;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// }
// 
// Path: app/src/main/java/com/zulip/android/networking/util/DefaultCallback.java
// public abstract class DefaultCallback<T> implements Callback<T> {
// 
//     @Override
//     @CallSuper
//     public void onResponse(Call<T> call, Response<T> response) {
//         if (response.isSuccessful()) {
//             onSuccess(call, response);
//         } else {
//             onError(call, response);
//         }
//     }
// 
//     public abstract void onSuccess(Call<T> call, Response<T> response);
// 
//     public abstract void onError(Call<T> call, Response<T> response);
// 
// 
//     @Override
//     public void onFailure(Call<T> call, Throwable t) {
//         //log error
//         ZLog.logException(t);
//     }
// }
// 
// Path: app/src/main/java/com/zulip/android/util/AuthClickListener.java
// public interface AuthClickListener {
//     void onItemClick(String email);
// }
// 
// Path: app/src/main/java/com/zulip/android/util/ZLog.java
// public class ZLog {
// 
//     private ZLog() {
//     }
// 
//     public static void logException(Throwable e) {
//         if (!BuildHelper.shouldLogToCrashlytics()) {
//             Log.e("Error", "oops", e);
//         } else {
//             Crashlytics.logException(e);
//         }
//     }
// 
//     public static void log(String message) {
//         if (!BuildHelper.shouldLogToCrashlytics()) {
//             Log.e("Error", message);
//         } else {
//             Crashlytics.log(message);
//         }
//     }
// }


// Path: app/src/main/java/com/zulip/android/activities/DevAuthActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.Toast;
import com.zulip.android.R;
import com.zulip.android.networking.AsyncDevGetEmails;
import com.zulip.android.networking.response.LoginResponse;
import com.zulip.android.networking.util.DefaultCallback;
import com.zulip.android.util.AuthClickListener;
import com.zulip.android.util.CommonProgressDialog;
import com.zulip.android.util.ZLog;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Response;

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dev_auth);
        String json = getIntent().getStringExtra(AsyncDevGetEmails.EMAIL_JSON);
        recyclerView = (RecyclerView) findViewById(R.id.devAuthRecyclerView);
        List<String> emails = new ArrayList<>();
        int directAdminSize = 1;
        commonProgressDialog = new CommonProgressDialog(this);

        try {
            JSONObject jsonObject = new JSONObject(json);
            JSONArray jsonArray = jsonObject.getJSONArray("direct_admins");
            for (int i = 0; i < jsonArray.length(); i++) {
                emails.add(jsonArray.get(i).toString());
            }
            directAdminSize = jsonArray.length();
            jsonArray = jsonObject.getJSONArray("direct_users");
            for (int i = 0; i < jsonArray.length(); i++) {
                emails.add(jsonArray.get(i).toString());
            }
        } catch (JSONException e) {
            ZLog.logException(e);
        }
        AuthEmailAdapter authEmailAdapter = new AuthEmailAdapter(emails, directAdminSize, DevAuthActivity.this);
        recyclerView.setAdapter(authEmailAdapter);
        authEmailAdapter.setOnItemClickListener(new AuthClickListener() {
            @Override
            public void onItemClick(String email) {
                commonProgressDialog.showWithMessage(getString(R.string.signing_in));
                getServices()
                        .loginDEV(email)
                        .enqueue(new DefaultCallback<LoginResponse>() {