Fix potential crashes when replying

This commit is contained in:
tom79 2019-07-23 11:15:35 +02:00
parent 99169e1b2f
commit dc9a9ce44e
2 changed files with 26 additions and 15 deletions

View File

@ -118,6 +118,6 @@ dependencies {
implementation "ch.acra:acra-mail:$acraVersion" implementation "ch.acra:acra-mail:$acraVersion"
implementation "ch.acra:acra-limiter:$acraVersion" implementation "ch.acra:acra-limiter:$acraVersion"
implementation "ch.acra:acra-notification:$acraVersion" implementation "ch.acra:acra-notification:$acraVersion"
implementation 'com.github.stom79:Android-WYSIWYG-Editor:3.2' implementation 'com.github.stom79:Android-WYSIWYG-Editor:3.2.1'
implementation 'com.github.duanhong169:colorpicker:1.1.6' implementation 'com.github.duanhong169:colorpicker:1.1.6'
} }

View File

@ -335,8 +335,10 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
if( !storeToot ) { if( !storeToot ) {
if (toot_content.getText().toString().trim().length() == 0 && (attachments == null || attachments.size() < 1) && toot_cw_content.getText().toString().trim().length() == 0){ if (toot_content.getText().toString().trim().length() == 0 && (attachments == null || attachments.size() < 1) && toot_cw_content.getText().toString().trim().length() == 0){
finish(); finish();
}else if (initialContent.trim().equals(toot_content.getText().toString().trim())){ }else if (!displayWYSIWYG() && initialContent.trim().equals(toot_content.getText().toString().trim())){
finish(); finish();
}else if (displayWYSIWYG() && initialContent.trim().equals(wysiwyg.getContentAsHTML().trim())){
finish();
}else { }else {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(TootActivity.this, style); AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(TootActivity.this, style);
dialogBuilder.setMessage(R.string.save_draft); dialogBuilder.setMessage(R.string.save_draft);
@ -682,7 +684,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
} }
initialContent = displayWYSIWYG()?wysiwyg.getContent().toString():toot_content.getText().toString(); initialContent = displayWYSIWYG()?wysiwyg.getContentAsHTML():toot_content.getText().toString();
String url = account.getAvatar(); String url = account.getAvatar();
@ -3144,7 +3146,16 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
if( !displayWYSIWYG()) { if( !displayWYSIWYG()) {
toot_content.setText(content); toot_content.setText(content);
}else{ }else{
if( content != null){
content =content.replaceAll("<p[^>]*><\\/p>","");
}
wysiwyg.render(content); wysiwyg.render(content);
try {
}catch (Exception e){
e.printStackTrace();
Toasty.error(getApplicationContext(), getString(R.string.toast_error), Toast.LENGTH_SHORT).show();
}
} }
toot_space_left.setText(String.valueOf(countLength(toot_content, toot_cw_content))); toot_space_left.setText(String.valueOf(countLength(toot_content, toot_cw_content)));
if( !displayWYSIWYG()) { if( !displayWYSIWYG()) {
@ -3195,7 +3206,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
} }
} }
invalidateOptionsMenu(); invalidateOptionsMenu();
initialContent = displayWYSIWYG()?wysiwyg.getContent().toString():toot_content.getText().toString(); initialContent = displayWYSIWYG()?wysiwyg.getContentAsHTML():toot_content.getText().toString();
if( !displayWYSIWYG()) { if( !displayWYSIWYG()) {
toot_space_left.setText(String.valueOf(countLength(toot_content, toot_cw_content))); toot_space_left.setText(String.valueOf(countLength(toot_content, toot_cw_content)));
}else{ }else{
@ -3341,7 +3352,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
setTitle(R.string.toot_title); setTitle(R.string.toot_title);
} }
invalidateOptionsMenu(); invalidateOptionsMenu();
initialContent = displayWYSIWYG()?wysiwyg.getContent().toString():toot_content.getText().toString(); initialContent = displayWYSIWYG()?wysiwyg.getContentAsHTML():toot_content.getText().toString();
toot_space_left.setText(String.valueOf(countLength(toot_content, toot_cw_content))); toot_space_left.setText(String.valueOf(countLength(toot_content, toot_cw_content)));
} }
@ -3455,7 +3466,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
} }
} }
initialContent = displayWYSIWYG()?wysiwyg.getContent().toString():toot_content.getText().toString(); initialContent = displayWYSIWYG()?wysiwyg.getContentAsHTML():toot_content.getText().toString();
} }
@ -3735,12 +3746,16 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
private void storeToot(boolean message, boolean forced){ private void storeToot(boolean message, boolean forced){
//Nothing to store here.... //Nothing to store here....
String currentContent;
if( displayWYSIWYG()){
currentContent = wysiwyg.getContentAsHTML().trim();
}else{
currentContent = toot_content.getText().toString().trim();
}
if( !forced) { if( !forced) {
if (toot_content.getText().toString().trim().length() == 0 && wysiwyg.getContentAsHTML().length() == 0 && (attachments == null || attachments.size() < 1) && toot_cw_content.getText().toString().trim().length() == 0) if (currentContent.length() == 0 && (attachments == null || attachments.size() < 1) && toot_cw_content.getText().toString().trim().length() == 0)
return; return;
if (!displayWYSIWYG() && initialContent.trim().equals(toot_content.getText().toString().trim())) if (initialContent.trim().equals(currentContent))
return;
if (displayWYSIWYG() && wysiwyg.getContentAsHTML().toString().trim().equals(toot_content.getText().toString().trim()))
return; return;
} }
Status toot = new Status(); Status toot = new Status();
@ -3749,11 +3764,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
if( toot_cw_content.getText().toString().trim().length() > 0) if( toot_cw_content.getText().toString().trim().length() > 0)
toot.setSpoiler_text(toot_cw_content.getText().toString().trim()); toot.setSpoiler_text(toot_cw_content.getText().toString().trim());
toot.setVisibility(visibility); toot.setVisibility(visibility);
if( !displayWYSIWYG()) { toot.setContent(currentContent);
toot.setContent(toot_content.getText().toString().trim());
}else{
toot.setContent(wysiwyg.getContentAsHTML());
}
if( poll != null) if( poll != null)
toot.setPoll(poll); toot.setPoll(poll);