new direct message function
This commit is contained in:
NudeDude 2019-01-09 15:45:05 +01:00
parent 8738956106
commit ddb2f310dc
11 changed files with 80 additions and 34 deletions

View File

@ -248,6 +248,7 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
long homeId = settings.getUserId(); long homeId = settings.getUserId();
Intent user = new Intent(this, UserProfile.class); Intent user = new Intent(this, UserProfile.class);
user.putExtra("userID", homeId); user.putExtra("userID", homeId);
user.putExtra("username", "");
startActivity(user); startActivity(user);
break; break;

View File

@ -95,6 +95,14 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageH
mListener.onDelete(position); mListener.onDelete(position);
} }
}); });
view.findViewById(R.id.dm_profileImg).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RecyclerView rv = (RecyclerView) parent;
int position = rv.getChildLayoutPosition(view);
mListener.onProfileClick(position);
}
});
return new MessageHolder(view); return new MessageHolder(view);
} }
@ -151,6 +159,8 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageH
void onAnswer(int pos); void onAnswer(int pos);
void onDelete(int pos); void onDelete(int pos);
void onProfileClick(int pos);
} }

View File

@ -103,11 +103,8 @@ public class StatusLoader extends AsyncTask<Long, Void, Long> {
tweet = mTwitter.retweet(TWEETID); tweet = mTwitter.retweet(TWEETID);
publishProgress(); publishProgress();
if (!tweet.retweeted()) { if (!tweet.retweeted())
tweet = database.getStatus(TWEETID); database.removeRetweet(TWEETID);
if (tweet != null)
database.removeStatus(tweet.getMyRetweetId());
}
} else if (MODE == FAVORITE) { } else if (MODE == FAVORITE) {
tweet = mTwitter.favorite(TWEETID); tweet = mTwitter.favorite(TWEETID);

View File

@ -399,7 +399,7 @@ public class TwitterEngine {
*/ */
public Tweet getStatus(long id) throws TwitterException { public Tweet getStatus(long id) throws TwitterException {
Status tweet = twitter.showStatus(id); Status tweet = twitter.showStatus(id);
return new Tweet(tweet, false); return new Tweet(tweet);
} }
@ -438,10 +438,10 @@ public class TwitterEngine {
Status tweet = twitter.showStatus(tweetId); Status tweet = twitter.showStatus(tweetId);
if (tweet.isRetweeted()) { if (tweet.isRetweeted()) {
tweet = twitter.unRetweetStatus(tweet.getId()); tweet = twitter.unRetweetStatus(tweet.getId());
return new Tweet(tweet, true); return new Tweet(tweet).removeRetweet();
} else { } else {
tweet = twitter.retweetStatus(tweet.getId()).getRetweetedStatus(); tweet = twitter.retweetStatus(tweet.getId()).getRetweetedStatus();
return new Tweet(tweet, false); return new Tweet(tweet);
} }
} }
@ -459,7 +459,7 @@ public class TwitterEngine {
else else
tweet = twitter.createFavorite(tweet.getId()); tweet = twitter.createFavorite(tweet.getId());
return new Tweet(tweet, false); return new Tweet(tweet);
} }
@ -565,7 +565,7 @@ public class TwitterEngine {
private List<Tweet> convertStatusList(List<Status> statuses) { private List<Tweet> convertStatusList(List<Status> statuses) {
List<Tweet> result = new ArrayList<>(); List<Tweet> result = new ArrayList<>();
for (Status status : statuses) for (Status status : statuses)
result.add(new Tweet(status, false)); result.add(new Tweet(status));
return result; return result;
} }

View File

@ -23,13 +23,13 @@ public class Tweet {
private final int retweetCount; private final int retweetCount;
private final int favoriteCount; private final int favoriteCount;
private final boolean retweeted; private boolean retweeted;
private final boolean favored; private boolean favored;
private final long myRetweetId; private final long myRetweetId;
public Tweet(Status status, boolean removeRetweet) { public Tweet(Status status) {
tweetID = status.getId(); tweetID = status.getId();
user = new TwitterUser(status.getUser()); user = new TwitterUser(status.getUser());
retweetCount = status.getRetweetCount(); retweetCount = status.getRetweetCount();
@ -39,7 +39,7 @@ public class Tweet {
replyID = status.getInReplyToStatusId(); replyID = status.getInReplyToStatusId();
replyName = status.getInReplyToScreenName(); replyName = status.getInReplyToScreenName();
media = getMediaLinks(status); media = getMediaLinks(status);
retweeted = status.isRetweeted() && !removeRetweet; retweeted = status.isRetweeted();
favored = status.isFavorited(); favored = status.isFavorited();
myRetweetId = status.getCurrentUserRetweetId(); myRetweetId = status.getCurrentUserRetweetId();
replyUserId = status.getInReplyToUserId(); replyUserId = status.getInReplyToUserId();
@ -50,7 +50,7 @@ public class Tweet {
source = api; source = api;
if (status.getRetweetedStatus() != null) if (status.getRetweetedStatus() != null)
embedded = new Tweet(status.getRetweetedStatus(), false); embedded = new Tweet(status.getRetweetedStatus());
else else
embedded = null; embedded = null;
} }
@ -226,4 +226,14 @@ public class Tweet {
} }
return medialinks; return medialinks;
} }
/**
* set retweet false
*
* @return tweet
*/
public Tweet removeRetweet() {
retweeted = false;
return this;
}
} }

View File

@ -94,7 +94,7 @@ public class DatabaseAdapter {
/** /**
* store user favors * store user favors
* *
* @param fav tweet favored by user * @param fav tweet favored by user
* @param ownerId user ID * @param ownerId user ID
*/ */
public void storeUserFavs(List<Tweet> fav, long ownerId) { public void storeUserFavs(List<Tweet> fav, long ownerId) {
@ -381,6 +381,21 @@ public class DatabaseAdapter {
commit(db); commit(db);
} }
/**
* remove status containing a retweet
*
* @param tweetId tweet ID of retweet
*/
public void removeRetweet(long tweetId) {
Tweet tweet = getStatus(tweetId);
if (tweet != null) {
SQLiteDatabase db = getDbWrite();
long retweetedId = tweet.getMyRetweetId();
db.delete("tweet", "retweeterID=" + retweetedId, null);
commit(db);
}
}
/** /**
* remove status from favorites * remove status from favorites
* *

View File

@ -118,20 +118,32 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
@Override @Override
public void onDelete(int index) { public void onDelete(int index) {
if (mLoader != null && mLoader.getStatus() != RUNNING) { if (mAdapter != null && !refresh.isRefreshing()) {
if (mAdapter != null && !refresh.isRefreshing()) { Message message = mAdapter.getData().get(index);
Message message = mAdapter.getData().get(index); final long messageId = message.getId();
final long messageId = message.getId(); new Builder(this).setMessage(R.string.confirm_delete_dm)
new Builder(this).setMessage(R.string.confirm_delete_dm) .setNegativeButton(R.string.no_confirm, null)
.setNegativeButton(R.string.no_confirm, null) .setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() { @Override
@Override public void onClick(DialogInterface dialog, int which) {
public void onClick(DialogInterface dialog, int which) { mLoader = new MessageLoader(DirectMessage.this);
mLoader = new MessageLoader(DirectMessage.this); mLoader.execute(MessageLoader.DELETE, messageId);
mLoader.execute(MessageLoader.DELETE, messageId); }
} }).show();
}).show(); }
} }
@Override
public void onProfileClick(int index) {
if (mAdapter != null && !refresh.isRefreshing()) {
Message message = mAdapter.getData().get(index);
long userId = message.getSender().getId();
String username = message.getSender().getScreenname();
Intent user = new Intent(this, UserProfile.class);
user.putExtra("userID", userId);
user.putExtra("username", username);
startActivity(user);
} }
} }

View File

@ -193,6 +193,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
mStat.cancel(true); mStat.cancel(true);
mStat = new StatusLoader(this); mStat = new StatusLoader(this);
mStat.execute(tweetID, StatusLoader.RETWEET); mStat.execute(tweetID, StatusLoader.RETWEET);
Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show();
break; break;
case R.id.fav_button_detail: case R.id.fav_button_detail:
@ -200,6 +201,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
mStat.cancel(true); mStat.cancel(true);
mStat = new StatusLoader(this); mStat = new StatusLoader(this);
mStat.execute(tweetID, StatusLoader.FAVORITE); mStat.execute(tweetID, StatusLoader.FAVORITE);
Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show();
break; break;
case R.id.no_rt_detail: case R.id.no_rt_detail:

View File

@ -66,10 +66,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
b = getIntent().getExtras(); b = getIntent().getExtras();
if (b != null) { if (b != null) {
userId = b.getLong("userID"); userId = b.getLong("userID");
if (b.containsKey("username")) username = b.getString("username");
username = b.getString("username");
else
username = "";
} }
Toolbar tool = findViewById(R.id.profile_toolbar); Toolbar tool = findViewById(R.id.profile_toolbar);

View File

@ -99,4 +99,5 @@
<string name="directmessage_too_long">Direktnachricht länge überschritten!</string> <string name="directmessage_too_long">Direktnachricht länge überschritten!</string>
<string name="authentication_failed">Authentifikation fehlgeschlagen!</string> <string name="authentication_failed">Authentifikation fehlgeschlagen!</string>
<string name="follow_requested">warten auf Bestätigung</string> <string name="follow_requested">warten auf Bestätigung</string>
<string name="loading">lädt..</string>
</resources> </resources>

View File

@ -107,4 +107,5 @@
<string name="directmessage_too_long">direct message text is over the limit!</string> <string name="directmessage_too_long">direct message text is over the limit!</string>
<string name="authentication_failed">failed to authenticate!</string> <string name="authentication_failed">failed to authenticate!</string>
<string name="follow_requested">follow requested</string> <string name="follow_requested">follow requested</string>
<string name="loading">loading..</string>
</resources> </resources>