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();
Intent user = new Intent(this, UserProfile.class);
user.putExtra("userID", homeId);
user.putExtra("username", "");
startActivity(user);
break;

View File

@ -95,6 +95,14 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageH
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);
}
@ -151,6 +159,8 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageH
void onAnswer(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);
publishProgress();
if (!tweet.retweeted()) {
tweet = database.getStatus(TWEETID);
if (tweet != null)
database.removeStatus(tweet.getMyRetweetId());
}
if (!tweet.retweeted())
database.removeRetweet(TWEETID);
} else if (MODE == FAVORITE) {
tweet = mTwitter.favorite(TWEETID);

View File

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

View File

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

View File

@ -381,6 +381,21 @@ public class DatabaseAdapter {
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
*

View File

@ -118,7 +118,6 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
@Override
public void onDelete(int index) {
if (mLoader != null && mLoader.getStatus() != RUNNING) {
if (mAdapter != null && !refresh.isRefreshing()) {
Message message = mAdapter.getData().get(index);
final long messageId = message.getId();
@ -133,6 +132,19 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
}).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 = new StatusLoader(this);
mStat.execute(tweetID, StatusLoader.RETWEET);
Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show();
break;
case R.id.fav_button_detail:
@ -200,6 +201,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
mStat.cancel(true);
mStat = new StatusLoader(this);
mStat.execute(tweetID, StatusLoader.FAVORITE);
Toast.makeText(this, R.string.loading, Toast.LENGTH_SHORT).show();
break;
case R.id.no_rt_detail:

View File

@ -66,10 +66,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
b = getIntent().getExtras();
if (b != null) {
userId = b.getLong("userID");
if (b.containsKey("username"))
username = b.getString("username");
else
username = "";
}
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="authentication_failed">Authentifikation fehlgeschlagen!</string>
<string name="follow_requested">warten auf Bestätigung</string>
<string name="loading">lädt..</string>
</resources>

View File

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