removed shortened twitter links!

This commit is contained in:
NudeDude 2019-01-13 21:16:22 +01:00
parent a6a7f92480
commit 6da4178a5a
9 changed files with 79 additions and 13 deletions

View File

@ -103,7 +103,7 @@ public class TimelineAdapter extends Adapter<TimelineAdapter.ItemHolder> {
} else {
vh.retweeter.setText("");
}
Spanned text = Tagger.makeText(tweet.getText(), highlight);
Spanned text = Tagger.makeText(tweet.getTweet(), highlight);
vh.username.setText(tweet.getUser().getUsername());
vh.screenname.setText(tweet.getUser().getScreenname());
vh.tweet.setText(text);

View File

@ -148,7 +148,7 @@ public class StatusLoader extends AsyncTask<Long, Void, Long> {
View mediaButton = ui.get().findViewById(R.id.image_attach);
View tweet_verify = ui.get().findViewById(R.id.tweet_verify);
Spannable sTweet = Tagger.makeText(tweet.getText(), highlight, ui.get());
Spannable sTweet = Tagger.makeText(tweet.getTweet(), highlight, ui.get());
tweetText.setMovementMethod(LinkMovementMethod.getInstance());
tweetText.setText(sTweet);
tweetText.setTextColor(font_color);

View File

@ -1,28 +1,25 @@
package org.nuclearfog.twidda.backend.items;
import twitter4j.DirectMessage;
import twitter4j.URLEntity;
import twitter4j.User;
public class Message {
private final long messageId;
private final long time;
private final TwitterUser sender;
private final TwitterUser receiver;
private final String message;
public Message(DirectMessage dm, User sender, User receiver) {
this.sender = new TwitterUser(sender);
this.receiver = new TwitterUser(receiver);
messageId = dm.getId();
time = dm.getCreatedAt().getTime();
message = dm.getText();
message = getText(dm);
}
public Message(long messageId, TwitterUser sender, TwitterUser receiver, long time, String message) {
this.messageId = messageId;
this.sender = sender;
@ -76,4 +73,20 @@ public class Message {
return time;
}
/**
* Resolve shortened tweet links
*
* @param message Tweet
* @return Tweet string with resolved URL entities
*/
private String getText(DirectMessage message) {
URLEntity entities[] = message.getURLEntities();
StringBuilder text = new StringBuilder(message.getText());
for (int i = entities.length - 1; i >= 0; i--) {
URLEntity entity = entities[i];
text.replace(entity.getStart(), entity.getEnd(), entity.getExpandedURL());
}
return text.toString();
}
}

View File

@ -4,6 +4,7 @@ import android.support.annotation.Nullable;
import twitter4j.MediaEntity;
import twitter4j.Status;
import twitter4j.URLEntity;
public class Tweet {
@ -32,7 +33,7 @@ public class Tweet {
user = new TwitterUser(status.getUser());
retweetCount = status.getRetweetCount();
favoriteCount = status.getFavoriteCount();
tweet = status.getText();
tweet = getText(status);
time = status.getCreatedAt().getTime();
replyID = status.getInReplyToStatusId();
replyName = status.getInReplyToScreenName();
@ -88,7 +89,7 @@ public class Tweet {
*
* @return tweet text
*/
public String getText() {
public String getTweet() {
return tweet;
}
@ -210,7 +211,6 @@ public class Tweet {
return favored;
}
/**
* @param status Twitter4J status
* @return Array of Medialinks
@ -234,4 +234,21 @@ public class Tweet {
retweeted = false;
return this;
}
/**
* Resolve shortened tweet links
*
* @param status Tweet
* @return Tweet string with resolved URL entities
*/
private String getText(Status status) {
URLEntity entities[] = status.getURLEntities();
StringBuilder tweet = new StringBuilder(status.getText());
for (int i = entities.length - 1; i >= 0; i--) {
URLEntity entity = entities[i];
tweet.replace(entity.getStart(), entity.getEnd(), entity.getExpandedURL());
}
return tweet.toString();
}
}

View File

@ -1,5 +1,6 @@
package org.nuclearfog.twidda.backend.items;
import twitter4j.URLEntity;
import twitter4j.User;
public class TwitterUser {
@ -31,8 +32,8 @@ public class TwitterUser {
username = user.getName();
screenname = '@' + user.getScreenName();
profileImg = user.getOriginalProfileImageURL();
bio = user.getDescription().replace('\n', ' ');
link = user.getURL();
bio = getBio(user);
link = user.getURLEntity().getExpandedURL();
location = user.getLocation();
bannerImg = user.getProfileBannerURL();
isVerified = user.isVerified();
@ -211,4 +212,20 @@ public class TwitterUser {
return favorCount;
}
/**
* Resolve shortened links from user description
*
* @param user Twitter user
* @return Description String
*/
private String getBio(User user) {
URLEntity entities[] = user.getDescriptionURLEntities();
StringBuilder bio = new StringBuilder(user.getDescription());
for (int i = entities.length - 1; i >= 0; i--) {
URLEntity entity = entities[i];
bio.replace(entity.getStart(), entity.getEnd(), entity.getExpandedURL());
}
return bio.toString().replace('\n', ' ');
}
}

View File

@ -653,7 +653,7 @@ public class DatabaseAdapter {
status.put("tweetID", tweet.getId());
status.put("userID", user.getId());
status.put("time", tweet.getTime());
status.put("tweet", tweet.getText());
status.put("tweet", tweet.getTweet());
status.put("retweetID", rtId);
status.put("source", tweet.getSource());
status.put("replyID", tweet.getReplyId());

View File

@ -1,6 +1,7 @@
package org.nuclearfog.twidda.window;
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
@ -9,6 +10,7 @@ import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
@ -71,6 +73,21 @@ public class ProfileEdit extends AppCompatActivity implements View.OnClickListen
}
@Override
public void onBackPressed() {
AlertDialog.Builder closeDialog = new AlertDialog.Builder(this);
closeDialog.setMessage(R.string.exit_confirm);
closeDialog.setNegativeButton(R.string.no_confirm, null);
closeDialog.setPositiveButton(R.string.yes_confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
closeDialog.show();
}
@Override
public boolean onCreateOptionsMenu(Menu m) {
getMenuInflater().inflate(R.menu.edit, m);

View File

@ -107,4 +107,5 @@
<string name="profile_updated">Profile aktualisiert!</string>
<string name="edit_empty_name">Name leer!</string>
<string name="upload_button">hochladen</string>
<string name="exit_confirm">Änderungen verwerfen?</string>
</resources>

View File

@ -115,4 +115,5 @@
<string name="profile_updated">Profile updated!</string>
<string name="edit_empty_name">Empty user name!</string>
<string name="upload_button">upload</string>
<string name="exit_confirm">discard changes?</string>
</resources>