direct message bug fix

This commit is contained in:
NudeDude 2019-04-09 17:00:12 +02:00
parent 9533975d78
commit ffe038a464
2 changed files with 32 additions and 33 deletions

View File

@ -21,8 +21,9 @@ import twitter4j.TwitterException;
public class MessageLoader extends AsyncTask<Long, Void, Void> {
public enum Mode {
LOAD,
DELETE
GET,
LDR,
DEL
}
private final Mode mode;
private boolean failure = false;
@ -57,36 +58,31 @@ public class MessageLoader extends AsyncTask<Long, Void, Void> {
@Override
protected Void doInBackground(Long... param) {
long messageId = -1;
try {
switch(mode) {
case LOAD:
if (mAdapter.getItemCount() > 0) {
message = twitter.getMessages();
mData.storeMessage(message);
message = mData.getMessages();
} else {
message = mData.getMessages();
if (message.isEmpty()) {
message = twitter.getMessages();
mData.storeMessage(message);
}
}
case GET:
message = twitter.getMessages();
mData.storeMessage(message);
break;
case DELETE:
long messageId = param[0];
case DEL:
messageId = param[0];
twitter.deleteMessage(messageId);
mData.deleteDm(messageId);
message = mData.getMessages();
break;
}
} catch (TwitterException err) {
if (err.getErrorCode() == 34)
mData.deleteDm(messageId);
this.err = err;
failure = true;
} catch (Exception err) {
if(err.getMessage() != null)
Log.e("Direct Message", err.getMessage());
failure = true;
} finally {
message = mData.getMessages();
}
return null;
}
@ -99,11 +95,11 @@ public class MessageLoader extends AsyncTask<Long, Void, Void> {
SwipeRefreshLayout mRefresh = ui.get().findViewById(R.id.dm_reload);
mRefresh.setRefreshing(false);
if (!failure) {
mAdapter.setData(message);
mAdapter.notifyDataSetChanged();
} else {
if (err != null)
mAdapter.setData(message);
mAdapter.notifyDataSetChanged();
if (failure) {
if (err != null && err.getErrorCode() != 34)
ErrorHandler.printError(ui.get(), err);
}
}

View File

@ -22,8 +22,9 @@ import org.nuclearfog.twidda.backend.items.Message;
import org.nuclearfog.twidda.database.GlobalSettings;
import static android.os.AsyncTask.Status.RUNNING;
import static org.nuclearfog.twidda.backend.MessageLoader.Mode.DELETE;
import static org.nuclearfog.twidda.backend.MessageLoader.Mode.LOAD;
import static org.nuclearfog.twidda.backend.MessageLoader.Mode.DEL;
import static org.nuclearfog.twidda.backend.MessageLoader.Mode.GET;
import static org.nuclearfog.twidda.backend.MessageLoader.Mode.LDR;
/**
* Direct Message page
@ -70,7 +71,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
mAdapter.setColor(settings.getFontColor(), settings.getHighlightColor());
mAdapter.setImageLoad(settings.getImageLoad());
dmList.setAdapter(mAdapter);
mLoader = new MessageLoader(this, LOAD);
mLoader = new MessageLoader(this, LDR);
mLoader.execute();
}
}
@ -108,7 +109,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
@Override
public void onAnswer(int position) {
if (mAdapter != null && !messageRefresh.isRefreshing()) {
if (!messageRefresh.isRefreshing()) {
Message message = mAdapter.getData(position);
Intent sendDm = new Intent(this, MessagePopup.class);
sendDm.putExtra("username", message.getSender().getScreenname());
@ -119,7 +120,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
@Override
public void onDelete(int position) {
if (mAdapter != null && !messageRefresh.isRefreshing()) {
if (!messageRefresh.isRefreshing()) {
Message message = mAdapter.getData(position);
final long messageId = message.getId();
new Builder(this).setMessage(R.string.confirm_delete_dm)
@ -127,7 +128,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mLoader = new MessageLoader(DirectMessage.this, DELETE);
mLoader = new MessageLoader(DirectMessage.this, DEL);
mLoader.execute(messageId);
}
}).show();
@ -137,7 +138,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
@Override
public void onProfileClick(int index) {
if (mAdapter != null && !messageRefresh.isRefreshing()) {
if (!messageRefresh.isRefreshing()) {
Message message = mAdapter.getData(index);
long userId = message.getSender().getId();
String username = message.getSender().getScreenname();
@ -151,15 +152,17 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
@Override
public void onClick(String tag) {
Intent intent = new Intent(this, SearchPage.class);
intent.putExtra("search", tag);
startActivity(intent);
if (!messageRefresh.isRefreshing()) {
Intent intent = new Intent(this, SearchPage.class);
intent.putExtra("search", tag);
startActivity(intent);
}
}
@Override
public void onRefresh() {
mLoader = new MessageLoader(this, LOAD);
mLoader = new MessageLoader(this, GET);
mLoader.execute();
}
}