Browse Source

Uploads bug fixes

pull/44/head
Apostolos Fanakis 6 years ago
parent
commit
56a255e4e3
  1. 298
      app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java
  2. 58
      app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java

298
app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java

@ -2,7 +2,6 @@ package gr.thmmy.mthmmy.activities.upload;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.database.Cursor; import android.database.Cursor;
@ -18,6 +17,7 @@ import android.support.v7.app.AlertDialog;
import android.support.v7.content.res.AppCompatResources; import android.support.v7.content.res.AppCompatResources;
import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceManager;
import android.support.v7.widget.AppCompatButton; import android.support.v7.widget.AppCompatButton;
import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
@ -134,46 +134,62 @@ public class UploadActivity extends BaseActivity {
rootCategorySpinner.setOnItemSelectedListener(new CustomOnItemSelectedListener(uploadRootCategories)); rootCategorySpinner.setOnItemSelectedListener(new CustomOnItemSelectedListener(uploadRootCategories));
titleDescriptionBuilderButton = findViewById(R.id.upload_title_description_builder); titleDescriptionBuilderButton = findViewById(R.id.upload_title_description_builder);
titleDescriptionBuilderButton.setOnClickListener(new View.OnClickListener() { titleDescriptionBuilderButton.setOnClickListener(view -> {
@Override if (categorySelected.equals("-1")) {
public void onClick(View view) { Toast.makeText(view.getContext(), "Please choose category first", Toast.LENGTH_SHORT).show();
if (categorySelected.equals("-1")) { return;
Toast.makeText(view.getContext(), "Please choose category first", Toast.LENGTH_SHORT).show(); }
return;
} int numberOfSpinners = categoriesSpinners.getChildCount();
if (numberOfSpinners < 3) {
Toast.makeText(view.getContext(), "Please choose a course category", Toast.LENGTH_SHORT).show();
return;
}
int numberOfSpinners = categoriesSpinners.getChildCount(); String maybeSemester = "", maybeCourse = "";
if (numberOfSpinners < 3) { if (numberOfSpinners == 5) {
if (((AppCompatSpinnerWithoutDefault) categoriesSpinners.getChildAt(numberOfSpinners - 1)).
getSelectedItemPosition() == -1) {
maybeSemester = (String) ((AppCompatSpinnerWithoutDefault)
categoriesSpinners.getChildAt(numberOfSpinners - 4)).getSelectedItem();
maybeCourse = (String) ((AppCompatSpinnerWithoutDefault)
categoriesSpinners.getChildAt(numberOfSpinners - 2)).getSelectedItem();
} else {
Toast.makeText(view.getContext(), "Please choose a course category", Toast.LENGTH_SHORT).show(); Toast.makeText(view.getContext(), "Please choose a course category", Toast.LENGTH_SHORT).show();
return;
} }
} else if (numberOfSpinners == 4) {
String maybeSemester = (String) ((AppCompatSpinnerWithoutDefault) maybeSemester = (String) ((AppCompatSpinnerWithoutDefault)
categoriesSpinners.getChildAt(numberOfSpinners - 3)).getSelectedItem();
maybeCourse = (String) ((AppCompatSpinnerWithoutDefault)
categoriesSpinners.getChildAt(numberOfSpinners - 1)).getSelectedItem();
} else {
maybeSemester = (String) ((AppCompatSpinnerWithoutDefault)
categoriesSpinners.getChildAt(numberOfSpinners - 2)).getSelectedItem(); categoriesSpinners.getChildAt(numberOfSpinners - 2)).getSelectedItem();
String maybeCourse = (String) ((AppCompatSpinnerWithoutDefault) maybeCourse = (String) ((AppCompatSpinnerWithoutDefault)
categoriesSpinners.getChildAt(numberOfSpinners - 1)).getSelectedItem(); categoriesSpinners.getChildAt(numberOfSpinners - 1)).getSelectedItem();
}
if (!maybeSemester.contains("εξάμηνο") && !maybeSemester.contains("Εξάμηνο")) { if (!maybeSemester.contains("εξάμηνο") && !maybeSemester.contains("Εξάμηνο")) {
Toast.makeText(view.getContext(), "Please choose a course category", Toast.LENGTH_SHORT).show(); Toast.makeText(view.getContext(), "Please choose a course category", Toast.LENGTH_SHORT).show();
return; return;
} }
if (maybeCourse == null) { if (maybeCourse == null) {
Toast.makeText(view.getContext(), "Please choose a course", Toast.LENGTH_SHORT).show(); Toast.makeText(view.getContext(), "Please choose a course", Toast.LENGTH_SHORT).show();
return; return;
} }
//Fixes course and semester //Fixes course and semester
maybeCourse = maybeCourse.replaceAll("-", "").replace("(ΝΠΣ)", "").trim(); maybeCourse = maybeCourse.replaceAll("-", "").replace("(ΝΠΣ)", "").trim();
maybeSemester = maybeSemester.replaceAll("-", "").trim().substring(0, 1); maybeSemester = maybeSemester.replaceAll("-", "").trim().substring(0, 1);
Intent intent = new Intent(UploadActivity.this, UploadFieldsBuilderActivity.class); Intent intent = new Intent(UploadActivity.this, UploadFieldsBuilderActivity.class);
Bundle extras = new Bundle(); Bundle builderExtras = new Bundle();
extras.putString(BUNDLE_UPLOAD_FIELD_BUILDER_COURSE, maybeCourse); builderExtras.putString(BUNDLE_UPLOAD_FIELD_BUILDER_COURSE, maybeCourse);
extras.putString(BUNDLE_UPLOAD_FIELD_BUILDER_SEMESTER, maybeSemester); builderExtras.putString(BUNDLE_UPLOAD_FIELD_BUILDER_SEMESTER, maybeSemester);
intent.putExtras(extras); intent.putExtras(builderExtras);
startActivityForResult(intent, REQUEST_CODE_FIELDS_BUILDER); startActivityForResult(intent, REQUEST_CODE_FIELDS_BUILDER);
}
}); });
titleDescriptionBuilderButton.setEnabled(false); titleDescriptionBuilderButton.setEnabled(false);
@ -183,128 +199,119 @@ public class UploadActivity extends BaseActivity {
selectFileButton = findViewById(R.id.upload_select_file_button); selectFileButton = findViewById(R.id.upload_select_file_button);
Drawable selectStartDrawable = AppCompatResources.getDrawable(this, R.drawable.ic_insert_drive_file_white_24dp); Drawable selectStartDrawable = AppCompatResources.getDrawable(this, R.drawable.ic_insert_drive_file_white_24dp);
selectFileButton.setCompoundDrawablesRelativeWithIntrinsicBounds(selectStartDrawable, null, null, null); selectFileButton.setCompoundDrawablesRelativeWithIntrinsicBounds(selectStartDrawable, null, null, null);
selectFileButton.setOnClickListener(new View.OnClickListener() { selectFileButton.setOnClickListener(v -> {
@Override final CharSequence[] options = {"Take photo", "Choose file",
public void onClick(View v) { "Cancel"};
final CharSequence[] options = {"Take photo", "Choose file", AlertDialog.Builder builder = new AlertDialog.Builder(UploadActivity.this);
"Cancel"}; builder.setTitle("Upload file");
AlertDialog.Builder builder = new AlertDialog.Builder(UploadActivity.this); builder.setItems(options, (dialog, item) -> {
builder.setTitle("Upload file"); if (options[item].equals("Take photo")) {
builder.setItems(options, new DialogInterface.OnClickListener() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
@Override startActivityForResult(intent, REQUEST_CODE_CAMERA);
public void onClick(DialogInterface dialog, int item) { } else if (options[item].equals("Choose file")) {
if (options[item].equals("Take photo")) { String[] mimeTypes = {"image/jpeg", "text/html", "image/png", "image/jpg", "image/gif",
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); "application/pdf", "application/rar", "application/x-tar", "application/zip",
startActivityForResult(intent, REQUEST_CODE_CAMERA); "application/msword", "image/vnd.djvu", "application/gz", "application/tar.gz"};
} else if (options[item].equals("Choose file")) {
String[] mimeTypes = {"image/jpeg", "text/html", "image/png", "image/jpg", "image/gif", Intent intent = new Intent(Intent.ACTION_GET_CONTENT)
"application/pdf", "application/rar", "application/x-tar", "application/zip", //.setType("*/*")
"application/msword", "image/vnd.djvu", "application/gz", "application/tar.gz"}; .setType("image/jpeg")
.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
Intent intent = new Intent(Intent.ACTION_GET_CONTENT)
//.setType("*/*") startActivityForResult(intent, REQUEST_CODE_CHOOSE_FILE);
.setType("image/jpeg") } else if (options[item].equals("Cancel")) {
.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); dialog.dismiss();
}
startActivityForResult(intent, REQUEST_CODE_CHOOSE_FILE); });
} else if (options[item].equals("Cancel")) { builder.show();
dialog.dismiss();
}
}
});
builder.show();
}
}); });
findViewById(R.id.upload_upload_button).setOnClickListener(new View.OnClickListener() { findViewById(R.id.upload_upload_button).setOnClickListener(view -> {
@Override String uploadTitleText = uploadTitle.getText().toString();
public void onClick(View view) { String uploadDescriptionText = uploadDescription.getText().toString();
String uploadTitleText = uploadTitle.getText().toString();
String uploadDescriptionText = uploadDescription.getText().toString();
if (uploadTitleText.equals("")) { if (uploadTitleText.equals("")) {
uploadTitle.setError("Required"); uploadTitle.setError("Required");
} }
if (fileUri == null) { if (fileUri == null) {
selectFileButton.setError("Required"); selectFileButton.setError("Required");
} }
if (categorySelected.equals("-1")) { if (categorySelected.equals("-1")) {
Toast.makeText(view.getContext(), "Please choose category first", Toast.LENGTH_SHORT).show(); Toast.makeText(view.getContext(), "Please choose category first", Toast.LENGTH_SHORT).show();
} }
if (categorySelected.equals("-1") || uploadTitleText.equals("") || fileUri == null) { if (categorySelected.equals("-1") || uploadTitleText.equals("") || fileUri == null) {
return; return;
} }
String tmpDescriptionText = uploadDescriptionText; String tmpDescriptionText = uploadDescriptionText;
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(view.getContext()); SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(view.getContext());
if (sharedPrefs.getBoolean(UPLOADING_APP_SIGNATURE_ENABLE_KEY, true)) { if (sharedPrefs.getBoolean(UPLOADING_APP_SIGNATURE_ENABLE_KEY, true)) {
tmpDescriptionText += uploadedFrommThmmyPromptHtml; tmpDescriptionText += uploadedFrommThmmyPromptHtml;
} }
String tempFilePath = null; String tempFilePath = null;
if (uploadFilename != null) { if (uploadFilename != null) {
tempFilePath = createTempFile(uploadFilename); tempFilePath = createTempFile(uploadFilename);
if (tempFilePath == null) { if (tempFilePath == null) {
//Something went wrong, abort //Something went wrong, abort
return; return;
}
} }
}
try { try {
final String finalTempFilePath = tempFilePath; final String finalTempFilePath = tempFilePath;
new MultipartUploadRequest(view.getContext(), uploadIndexUrl) new MultipartUploadRequest(view.getContext(), uploadIndexUrl)
.setUtf8Charset() .setUtf8Charset()
.addParameter("tp-dluploadtitle", uploadTitleText) .addParameter("tp-dluploadtitle", uploadTitleText)
.addParameter("tp-dluploadcat", categorySelected) .addParameter("tp-dluploadcat", categorySelected)
.addParameter("tp-dluploadtext", tmpDescriptionText) .addParameter("tp-dluploadtext", tmpDescriptionText)
.addFileToUpload(tempFilePath == null .addFileToUpload(tempFilePath == null
? fileUri.toString() ? fileUri.toString()
: tempFilePath : tempFilePath
, "tp-dluploadfile") , "tp-dluploadfile")
.addParameter("tp_dluploadicon", fileIcon) .addParameter("tp_dluploadicon", fileIcon)
.addParameter("tp-uploaduser", uploaderProfileIndex) .addParameter("tp-uploaduser", uploaderProfileIndex)
.setNotificationConfig(new UploadNotificationConfig()) .setNotificationConfig(new UploadNotificationConfig())
.setMaxRetries(2) .setMaxRetries(2)
.setDelegate(new UploadStatusDelegate() { .setDelegate(new UploadStatusDelegate() {
@Override @Override
public void onProgress(Context context, UploadInfo uploadInfo) { public void onProgress(Context context, UploadInfo uploadInfo) {
} }
@Override @Override
public void onError(Context context, UploadInfo uploadInfo, ServerResponse serverResponse, public void onError(Context context, UploadInfo uploadInfo, ServerResponse serverResponse,
Exception exception) { Exception exception) {
Toast.makeText(context, "Upload failed", Toast.LENGTH_SHORT).show(); Toast.makeText(context, "Upload failed", Toast.LENGTH_SHORT).show();
if (finalTempFilePath != null) { if (finalTempFilePath != null) {
if (!deleteTempFile(finalTempFilePath)) { if (!deleteTempFile(finalTempFilePath)) {
Toast.makeText(context, "Failed to delete temp file", Toast.LENGTH_SHORT).show(); Toast.makeText(context, "Failed to delete temp file", Toast.LENGTH_SHORT).show();
}
} }
} }
}
@Override @Override
public void onCompleted(Context context, UploadInfo uploadInfo, ServerResponse serverResponse) { public void onCompleted(Context context, UploadInfo uploadInfo, ServerResponse serverResponse) {
if (finalTempFilePath != null) { if (finalTempFilePath != null) {
if (!deleteTempFile(finalTempFilePath)) { if (!deleteTempFile(finalTempFilePath)) {
Toast.makeText(context, "Failed to delete temp file", Toast.LENGTH_SHORT).show(); Toast.makeText(context, "Failed to delete temp file", Toast.LENGTH_SHORT).show();
}
} }
} }
}
@Override @Override
public void onCancelled(Context context, UploadInfo uploadInfo) { public void onCancelled(Context context, UploadInfo uploadInfo) {
if (finalTempFilePath != null) { if (finalTempFilePath != null) {
if (!deleteTempFile(finalTempFilePath)) { if (!deleteTempFile(finalTempFilePath)) {
Toast.makeText(context, "Failed to delete temp file", Toast.LENGTH_SHORT).show(); Toast.makeText(context, "Failed to delete temp file", Toast.LENGTH_SHORT).show();
}
} }
} }
}) }
.startUpload(); })
} catch (Exception exception) { .startUpload();
Timber.e(exception, "AndroidUploadService: %s", exception.getMessage()); } catch (Exception exception) {
} Timber.e(exception, "AndroidUploadService: %s", exception.getMessage());
} }
}); });
@ -326,7 +333,7 @@ public class UploadActivity extends BaseActivity {
if (bundleCategory != null) { if (bundleCategory != null) {
int bundleSelectionIndex = -1, currentIndex = 0; int bundleSelectionIndex = -1, currentIndex = 0;
for (UploadCategory category : uploadRootCategories) { for (UploadCategory category : uploadRootCategories) {
if (category.getCategoryTitle().contains(bundleCategory.get(0))) { //TODO fix .contains, always false if (bundleCategory.get(0).contains(category.getCategoryTitle())) {
bundleSelectionIndex = currentIndex; bundleSelectionIndex = currentIndex;
break; break;
} }
@ -335,6 +342,7 @@ public class UploadActivity extends BaseActivity {
if (bundleSelectionIndex != -1) { if (bundleSelectionIndex != -1) {
rootCategorySpinner.setSelection(bundleSelectionIndex, true); rootCategorySpinner.setSelection(bundleSelectionIndex, true);
bundleCategory.remove(0);
} }
} }
@ -435,6 +443,7 @@ public class UploadActivity extends BaseActivity {
return filename; return filename;
} }
@SuppressWarnings("ResultOfMethodCallIgnored")
@Nullable @Nullable
private String createTempFile(String newFilename) { private String createTempFile(String newFilename) {
String oldFilename = filenameFromUri(fileUri); String oldFilename = filenameFromUri(fileUri);
@ -534,10 +543,12 @@ public class UploadActivity extends BaseActivity {
categoriesSpinners.addView(subSpinner); categoriesSpinners.addView(subSpinner);
//Sets bundle selection //Sets bundle selection
if (bundleCategory != null && viewIndex < bundleCategory.size()) { if (bundleCategory != null && !bundleCategory.isEmpty()) {
int bundleSelectionIndex = -1, currentIndex = 0; int bundleSelectionIndex = -1, currentIndex = 0;
for (UploadCategory category : parentCategories) {
if (category.getCategoryTitle().contains(bundleCategory.get(viewIndex))) { for (UploadCategory category : childCategories) {
if (bundleCategory.get(0).contains(category.getCategoryTitle()
.replace("-", "").trim())) {
bundleSelectionIndex = currentIndex; bundleSelectionIndex = currentIndex;
break; break;
} }
@ -546,6 +557,7 @@ public class UploadActivity extends BaseActivity {
if (bundleSelectionIndex != -1) { if (bundleSelectionIndex != -1) {
subSpinner.setSelection(bundleSelectionIndex, true); subSpinner.setSelection(bundleSelectionIndex, true);
bundleCategory.remove(0);
} }
} }
} }
@ -627,8 +639,9 @@ public class UploadActivity extends BaseActivity {
//Sets bundle selection //Sets bundle selection
if (bundleCategory != null) { if (bundleCategory != null) {
int bundleSelectionIndex = -1, currentIndex = 0; int bundleSelectionIndex = -1, currentIndex = 0;
for (UploadCategory category : uploadRootCategories) { for (UploadCategory category : uploadRootCategories) {
if (category.getCategoryTitle().contains(bundleCategory.get(0))) { //TODO fix .contains, always false if (bundleCategory.get(0).contains(category.getCategoryTitle())) {
bundleSelectionIndex = currentIndex; bundleSelectionIndex = currentIndex;
break; break;
} }
@ -637,6 +650,7 @@ public class UploadActivity extends BaseActivity {
if (bundleSelectionIndex != -1) { if (bundleSelectionIndex != -1) {
rootCategorySpinner.setSelection(bundleSelectionIndex, true); rootCategorySpinner.setSelection(bundleSelectionIndex, true);
bundleCategory.remove(0);
} }
} }

58
app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java

@ -96,44 +96,42 @@ public class UploadFieldsBuilderActivity extends AppCompatActivity {
semesterChooserLinear = findViewById(R.id.upload_fields_builder_choose_semester); semesterChooserLinear = findViewById(R.id.upload_fields_builder_choose_semester);
semesterRadio = findViewById(R.id.upload_fields_builder_semester_radio_group); semesterRadio = findViewById(R.id.upload_fields_builder_semester_radio_group);
semesterRadio.check(Integer.parseInt(semester) % 2 == 0
? R.id.upload_fields_builder_radio_button_jun
: R.id.upload_fields_builder_radio_button_feb);
year = findViewById(R.id.upload_fields_builder_year); year = findViewById(R.id.upload_fields_builder_year);
year.addTextChangedListener(customYearWatcher); year.addTextChangedListener(customYearWatcher);
typeRadio = findViewById(R.id.upload_fields_builder_type_radio_group); typeRadio = findViewById(R.id.upload_fields_builder_type_radio_group);
typeRadio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { typeRadio.setOnCheckedChangeListener((group, checkedId) -> {
@Override if (checkedId == R.id.upload_fields_builder_radio_button_notes) {
public void onCheckedChanged(RadioGroup group, int checkedId) { semesterChooserLinear.setVisibility(View.GONE);
if (checkedId == R.id.upload_fields_builder_radio_button_notes) { } else {
semesterChooserLinear.setVisibility(View.GONE); semesterChooserLinear.setVisibility(View.VISIBLE);
} else {
semesterChooserLinear.setVisibility(View.VISIBLE);
}
} }
}); });
findViewById(R.id.upload_fields_builder_submit).setOnClickListener(new View.OnClickListener() { findViewById(R.id.upload_fields_builder_submit).setOnClickListener(view -> {
@Override int typeId = typeRadio.getCheckedRadioButtonId(),
public void onClick(View view) { semesterId = semesterRadio.getCheckedRadioButtonId();
int typeId = typeRadio.getCheckedRadioButtonId(), if (typeId == -1) {
semesterId = semesterRadio.getCheckedRadioButtonId(); Toast.makeText(view.getContext(), "Please choose a type for the upload", Toast.LENGTH_SHORT).show();
if (typeId == -1) { return;
Toast.makeText(view.getContext(), "Please choose a type for the upload", Toast.LENGTH_SHORT).show(); } else if (semesterChooserLinear.getVisibility() == View.VISIBLE && semesterId == -1) {
return; Toast.makeText(view.getContext(), "Please choose a semester for the upload", Toast.LENGTH_SHORT).show();
} else if (semesterChooserLinear.getVisibility() == View.VISIBLE && semesterId == -1) { return;
Toast.makeText(view.getContext(), "Please choose a semester for the upload", Toast.LENGTH_SHORT).show(); } else if (year.getText().toString().isEmpty()) {
return; Toast.makeText(view.getContext(), "Please choose a year for the upload", Toast.LENGTH_SHORT).show();
} else if (year.getText().toString().isEmpty()) { return;
Toast.makeText(view.getContext(), "Please choose a year for the upload", Toast.LENGTH_SHORT).show();
return;
}
Intent returnIntent = new Intent();
returnIntent.putExtra(RESULT_FILENAME, buildFilename());
returnIntent.putExtra(RESULT_TITLE, buildTitle());
returnIntent.putExtra(RESULT_DESCRIPTION, buildDescription());
setResult(Activity.RESULT_OK, returnIntent);
finish();
} }
Intent returnIntent = new Intent();
returnIntent.putExtra(RESULT_FILENAME, buildFilename());
returnIntent.putExtra(RESULT_TITLE, buildTitle());
returnIntent.putExtra(RESULT_DESCRIPTION, buildDescription());
setResult(Activity.RESULT_OK, returnIntent);
finish();
}); });
} }

Loading…
Cancel
Save