package com.openfarmanager.android.dialogs;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.Window;
import android.widget.EditText;
import android.widget.TextView;
import com.openfarmanager.android.App;
import com.openfarmanager.android.R;
import com.openfarmanager.android.controllers.FileSystemController;
import com.openfarmanager.android.core.network.mediafire.MediaFireApi;
import com.openfarmanager.android.utils.Extensions;
import static com.openfarmanager.android.utils.Extensions.isNullOrEmpty;
/**
* author: Vlad Namashko
*/
public class MediaFireAuthDialog extends Dialog {
private Handler mHandler;
private View mDialogView;
private TextView mError;
private EditText mUserName;
private EditText mPassword;
public MediaFireAuthDialog(Context context, Handler handler) {
super(context, R.style.Action_Dialog);
mHandler = handler;
}
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
mDialogView = View.inflate(App.sInstance.getApplicationContext(), R.layout.dialog_mediafire_authentication, null);
mUserName = (EditText) mDialogView.findViewById(R.id.mediafire_username);
mPassword = (EditText) mDialogView.findViewById(R.id.mediafire_password);
mError = (TextView) mDialogView.findViewById(R.id.error);
mDialogView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
mDialogView.findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clearError();
if (!validate()) {
return;
}
connect();
}
});
setContentView(mDialogView);
}
private boolean validate() {
if (isNullOrEmpty(mUserName.getText().toString())) {
setErrorMessage(App.sInstance.getString(R.string.error_yandex_account_empty));
return false;
}
return true;
}
private void clearError() {
updateErrorState("", View.GONE);
}
private void setErrorMessage(final String errorMessage) {
updateErrorState(errorMessage, View.VISIBLE);
}
private void setLoading(final boolean isLoading) {
Message.obtain(mHandler, new Runnable() {
@Override
public void run() {
mDialogView.findViewById(R.id.auth_form).setVisibility(isLoading ? View.GONE : View.VISIBLE);
mDialogView.findViewById(R.id.progress_form).setVisibility(isLoading ? View.VISIBLE : View.GONE);
}
}).sendToTarget();
}
private void updateErrorState(final String errorMessage, final int visibility) {
Message.obtain(mHandler, new Runnable() {
@Override
public void run() {
mError.setVisibility(visibility);
mError.setText(errorMessage);
}
}).sendToTarget();
}
private void connect() {
setLoading(true);
Extensions.runAsync(mConnectRunnable);
}
private Runnable mConnectRunnable = new Runnable() {
@Override
public void run() {
try {
MediaFireApi api = App.sInstance.getMediaFireApi();
api.startNewSession(mUserName.getText().toString(), mPassword.getText().toString());
// MediaFire mf = new MediaFire(MediaFireApi.APP_ID, MediaFireApi.APP_KEY);
// mf.startSessionWithEmail("VNamashko@gmail.com", "tubooR1r", null);
// mf.startSessionWithEmail(mUserName.getText().toString(), mPassword.getText().toString(), null);
// LinkedHashMap<String, Object> requestParams = new LinkedHashMap<String, Object>();
// requestParams.put("response_format", "json");
// requestParams.put("content_type", "files");
// requestParams.put("chunk_size", 150);
// FolderGetContentsResponse response = FolderApi.getContent(mf, requestParams, "1.3", FolderGetContentsResponse.class);
} catch (Exception e) {
setLoading(false);
setErrorMessage(App.sInstance.getString(R.string.error_smb_wrong_credentials));
return;
}
dismiss();
mHandler.sendEmptyMessage(FileSystemController.MEDIA_FIRE_CONNECTED);
}
};
}