database improvement

bug fix
This commit is contained in:
NudeDude 2018-11-20 20:15:49 +01:00
parent 8bcd26955f
commit c152c94c93
12 changed files with 152 additions and 119 deletions

View File

@ -6,7 +6,7 @@ android {
defaultConfig {
applicationId "org.nuclearfog.twidda"
minSdkVersion 14
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName '1.2.2'

View File

@ -34,6 +34,8 @@ import org.nuclearfog.twidda.window.TweetPopup;
import org.nuclearfog.twidda.window.UserProfile;
import static android.os.AsyncTask.Status.RUNNING;
import static org.nuclearfog.twidda.window.TweetDetail.CHANGED;
import static org.nuclearfog.twidda.window.TweetPopup.UPLOADED;
/**
* Main Activity
@ -109,8 +111,8 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
@Override
protected void onStart() {
super.onStart();
protected void onResume() {
super.onResume();
if (!settings.getLogin()) {
Intent i = new Intent(this, LoginPage.class);
startActivityForResult(i, LOGIN);
@ -137,11 +139,11 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
@Override
protected void onStop() {
protected void onPause() {
if (home != null && home.getStatus() == RUNNING) {
home.cancel(true);
}
super.onStop();
super.onPause();
}
@ -151,12 +153,15 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
if (reqCode == LOGIN && returnCode == RESULT_CANCELED) {
overridePendingTransition(0, 0);
finish();
} else if (reqCode == SETTING) {
home = null;
} else if (reqCode == TWEET && returnCode == TweetDetail.CHANGED) {
} else if (reqCode == TWEET) {
if (returnCode == CHANGED) {
home = null;
} else if (returnCode == UPLOADED) {
home = null;
}
}
}
@ -233,7 +238,7 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
case R.id.action_tweet:
Intent tweet = new Intent(this, TweetPopup.class);
startActivity(tweet);
startActivityForResult(tweet, TWEET);
break;
case R.id.action_settings:

View File

@ -79,7 +79,7 @@ public class MainPage extends AsyncTask<Integer, Integer, Integer> {
} else if (MODE == TRND) {
trends = mTwitter.getTrends(woeId);
publishProgress(TRND);
tweetDb.store(trends, woeId);
tweetDb.storeTrends(trends, woeId);
} else if (MODE == MENT) {
if (mentionAdapter.getItemCount() != 0)
sinceId = mentionAdapter.getItemId(0);

View File

@ -13,16 +13,21 @@ import android.view.Window;
import android.widget.Toast;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.items.Tweet;
import org.nuclearfog.twidda.database.DatabaseAdapter;
import org.nuclearfog.twidda.window.TweetPopup;
import java.lang.ref.WeakReference;
import twitter4j.TwitterException;
import static org.nuclearfog.twidda.window.TweetPopup.UPLOADED;
public class StatusUpload extends AsyncTask<String, Void, Boolean> {
private WeakReference<TweetPopup> ui;
private DatabaseAdapter database;
private TwitterEngine mTwitter;
private LayoutInflater inflater;
private Dialog popup;
@ -34,6 +39,7 @@ public class StatusUpload extends AsyncTask<String, Void, Boolean> {
ui = new WeakReference<>(context);
mTwitter = TwitterEngine.getInstance(context);
inflater = LayoutInflater.from(context);
database = new DatabaseAdapter(context);
popup = new Dialog(context);
this.tweet = tweet;
this.replyId = replyId;
@ -73,10 +79,13 @@ public class StatusUpload extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... path) {
try {
if (path.length == 0)
mTwitter.sendStatus(tweet, replyId);
else
mTwitter.sendStatus(tweet, replyId, path);
Tweet sendTweet;
if (path.length == 0) {
sendTweet = mTwitter.sendStatus(tweet, replyId, null);
} else {
sendTweet = mTwitter.sendStatus(tweet, replyId, path);
}
database.storeTweet(sendTweet);
} catch (TwitterException err) {
return false;
@ -96,6 +105,7 @@ public class StatusUpload extends AsyncTask<String, Void, Boolean> {
popup.dismiss();
if (success) {
Toast.makeText(ui.get(), R.string.tweet_sent, Toast.LENGTH_LONG).show();
ui.get().setResult(UPLOADED);
ui.get().finish();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(ui.get());

View File

@ -1,7 +1,6 @@
package org.nuclearfog.twidda.backend;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.nuclearfog.twidda.backend.items.Message;
@ -363,41 +362,29 @@ public class TwitterEngine {
*
* @param text Tweet Text
* @param reply In reply to tweet ID
* @param path Path to the Media File
* @return uploaded Status
* @throws TwitterException if Access is unavailable
*/
public void sendStatus(String text, long reply) throws TwitterException {
public Tweet sendStatus(String text, long reply, @Nullable String[] path) throws TwitterException {
StatusUpdate mStatus = new StatusUpdate(text);
if (reply > 0)
mStatus.setInReplyToStatusId(reply);
twitter.tweets().updateStatus(mStatus);
}
/**
* Send Tweet
*
* @param text Tweet Text
* @param reply In reply to tweet ID
* @param path Path to the Media File
* @throws TwitterException if Access is unavailable
* @throws NullPointerException if file path is wrong
*/
public void sendStatus(String text, long reply, @NonNull String[] path) throws TwitterException, NullPointerException {
UploadedMedia media;
if (path != null) {
int count = path.length;
long[] mIDs = new long[count];
StatusUpdate mStatus = new StatusUpdate(text);
if (reply > 0) {
mStatus.setInReplyToStatusId(reply);
}
for (int i = 0; i < count; i++) {
String current = path[i];
media = twitter.uploadMedia(new File(current));
UploadedMedia media = twitter.uploadMedia(new File(current));
mIDs[i] = media.getMediaId();
}
mStatus.setMediaIds(mIDs);
twitter.tweets().updateStatus(mStatus);
}
Status currentStat = twitter.tweets().updateStatus(mStatus);
return getTweet(currentStat, null);
}
@ -410,9 +397,9 @@ public class TwitterEngine {
*/
public Tweet getStatus(long id) throws TwitterException {
Status status = twitter.showStatus(id);
Status retweet = status.getRetweetedStatus(); // Bug getretweetedstatus does not have a currentUserRetweetId
Status retweet = status.getRetweetedStatus();
if (retweet != null) {
retweet = twitter.showStatus(retweet.getId()); // reload full retweet
retweet = twitter.showStatus(retweet.getId());
Tweet embedded = getTweet(retweet, null);
return getTweet(status, embedded);
} else {

View File

@ -107,6 +107,8 @@ public class TwitterSearch extends AsyncTask<String, Integer, Boolean> {
case 420:
Toast.makeText(ui.get(), R.string.rate_limit_exceeded, Toast.LENGTH_LONG).show();
break;
case -1:
break;
default:
Toast.makeText(ui.get(), errMsg, Toast.LENGTH_LONG).show();
}

View File

@ -19,15 +19,18 @@ import static android.database.sqlite.SQLiteDatabase.CONFLICT_REPLACE;
public class DatabaseAdapter {
private final int favoritedMask = 1;
private final int retweetedMask = 1 << 1;
private final int homeMask = 1 << 2;
private final int mentionMask = 1 << 3;
private final int userTweetMask = 1 << 4;
private final int replyMask = 1 << 5;
public static final int LIMIT = 200; // DATABASE ENTRY LIMIT
private final int FAV_MASK = 1; // FAVORITE MASK
private final int RTW_MASK = 1 << 1; // RETWEET MASK
private final int HOM_MASK = 1 << 2; // HOME TWEET MASK
private final int MEN_MASK = 1 << 3; // MENTION MASK
private final int UTW_MASK = 1 << 4; // USER TWEETS
private final int RPL_MASK = 1 << 5; // TWEET ANSWERS
private final int VER_MASK = 1; // USER VERIFIED MASK
private final int LCK_MASK = 1 << 1; // USER LOCKED MASK
private final int verifiedMask = 1;
private final int lockedMask = 1 << 1;
private AppDatabase dataHelper;
private long homeId;
@ -45,7 +48,6 @@ public class DatabaseAdapter {
*/
public void storeUser(TwitterUser user) {
SQLiteDatabase db = getDbWrite();
db.beginTransaction();
storeUser(user, db, CONFLICT_REPLACE);
commit(db);
}
@ -57,9 +59,8 @@ public class DatabaseAdapter {
*/
public void storeHomeTimeline(List<Tweet> home) {
SQLiteDatabase db = getDbWrite();
db.beginTransaction();
for (Tweet tweet : home) {
storeStatus(tweet, homeMask, db);
storeStatus(tweet, HOM_MASK, db);
}
commit(db);
}
@ -71,9 +72,8 @@ public class DatabaseAdapter {
*/
public void storeMentions(List<Tweet> mentions) {
SQLiteDatabase db = getDbWrite();
db.beginTransaction();
for (Tweet tweet : mentions) {
storeStatus(tweet, mentionMask, db);
storeStatus(tweet, MEN_MASK, db);
}
commit(db);
}
@ -85,9 +85,8 @@ public class DatabaseAdapter {
*/
public void storeUserTweets(List<Tweet> stats) {
SQLiteDatabase db = getDbWrite();
db.beginTransaction();
for (Tweet tweet : stats) {
storeStatus(tweet, userTweetMask, db);
storeStatus(tweet, UTW_MASK, db);
}
commit(db);
}
@ -100,7 +99,6 @@ public class DatabaseAdapter {
*/
public void storeUserFavs(List<Tweet> fav, long ownerId) {
SQLiteDatabase db = getDbWrite();
db.beginTransaction();
for (Tweet tweet : fav) {
storeStatus(tweet, 0, db);
ContentValues favTable = new ContentValues();
@ -118,9 +116,8 @@ public class DatabaseAdapter {
*/
public void storeReplies(final List<Tweet> replies) {
SQLiteDatabase db = getDbWrite();
db.beginTransaction();
for (Tweet tweet : replies) {
storeStatus(tweet, replyMask, db);
storeStatus(tweet, RPL_MASK, db);
}
commit(db);
}
@ -131,10 +128,9 @@ public class DatabaseAdapter {
* @param trends List of Trends
* @param woeId Yahoo World ID
*/
public void store(final List<Trend> trends, int woeId) {
public void storeTrends(final List<Trend> trends, int woeId) {
SQLiteDatabase db = getDbWrite();
String query = "DELETE FROM trend WHERE woeID=" + woeId;
db.beginTransaction();
db.execSQL(query);
for (Trend trend : trends) {
storeTrends(trend, woeId, db);
@ -154,18 +150,31 @@ public class DatabaseAdapter {
ContentValues status = new ContentValues();
int register = getStatRegister(db, tweetID);
register |= favoritedMask;
register |= FAV_MASK;
favTable.put("tweetID", tweetID);
favTable.put("ownerID", homeId);
status.put("statusregister", register);
db.beginTransaction();
db.insertWithOnConflict("favorit", null, favTable, CONFLICT_IGNORE);
db.update("tweet", status, "tweet.tweetID=" + tweetID, null);
commit(db);
}
/**
* Store currently sent tweet
*
* @param tweet new created tweet
*/
public void storeTweet(Tweet tweet) {
SQLiteDatabase db = getDbWrite();
int mask = UTW_MASK | HOM_MASK;
if (tweet.getReplyId() > 0)
mask |= RPL_MASK;
storeStatus(tweet, mask, db);
commit(db);
}
/**
* speicher direktnachrichten
*
@ -173,7 +182,6 @@ public class DatabaseAdapter {
*/
public void storeMessage(List<Message> messages) {
SQLiteDatabase db = getDbWrite();
db.beginTransaction();
for (Message message : messages) {
storeMessage(message, db);
}
@ -204,8 +212,8 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new ArrayList<>();
String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID=user.userID " +
"WHERE statusregister&" + homeMask + ">0 " +
"ORDER BY tweetID DESC";
"WHERE statusregister&" + HOM_MASK + ">0 " +
"ORDER BY tweetID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME, null);
if (cursor.moveToFirst()) {
do {
@ -227,8 +235,8 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new ArrayList<>();
String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID=user.userID " +
"WHERE statusregister&" + mentionMask + ">0 " +
"ORDER BY tweetID DESC";
"WHERE statusregister&" + MEN_MASK + ">0 " +
"ORDER BY tweetID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME, null);
if (cursor.moveToFirst()) {
do {
@ -251,8 +259,9 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new ArrayList<>();
String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID = user.userID " +
"WHERE statusregister&" + userTweetMask + ">0 " +
"AND user.userID =" + userID + " ORDER BY tweetID DESC";
"WHERE statusregister&" + UTW_MASK + ">0 " +
"AND user.userID =" + userID +
" ORDER BY tweetID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME, null);
@ -278,7 +287,8 @@ public class DatabaseAdapter {
String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN favorit on tweet.tweetID = favorit.tweetID " +
"INNER JOIN user ON tweet.userID = user.userID " +
"WHERE favorit.ownerID =" + ownerID + " ORDER BY tweetID DESC";
"WHERE favorit.ownerID =" + ownerID +
" ORDER BY tweetID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME, null);
if (cursor.moveToFirst()) {
do {
@ -321,8 +331,8 @@ public class DatabaseAdapter {
List<Tweet> tweetList = new ArrayList<>();
String SQL_GET_HOME = "SELECT * FROM tweet " +
"INNER JOIN user ON tweet.userID = user.userID " +
"WHERE tweet.replyID=" + tweetId + " AND statusregister&" + replyMask + ">0 " +
"ORDER BY tweetID DESC";
"WHERE tweet.replyID=" + tweetId + " AND statusregister&" + RPL_MASK + ">0 " +
"ORDER BY tweetID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(SQL_GET_HOME, null);
if (cursor.moveToFirst()) {
do {
@ -344,19 +354,17 @@ public class DatabaseAdapter {
ContentValues status = new ContentValues();
int register = getStatRegister(db, tweet.getId());
if (tweet.retweeted())
register |= retweetedMask;
register |= RTW_MASK;
else
register &= ~retweetedMask;
register &= ~RTW_MASK;
if (tweet.favorized())
register |= favoritedMask;
register |= FAV_MASK;
else
register &= ~favoritedMask;
register &= ~FAV_MASK;
status.put("retweet", tweet.getRetweetCount());
status.put("favorite", tweet.getFavorCount());
status.put("statusregister", register);
db.beginTransaction();
db.update("tweet", status, "tweet.tweetID=" + tweet.getId(), null);
commit(db);
}
@ -368,7 +376,6 @@ public class DatabaseAdapter {
*/
public void removeStatus(long id) {
SQLiteDatabase db = getDbWrite();
db.beginTransaction();
db.delete("tweet", "tweetID=" + id, null);
db.delete("favorit", "tweetID=" + id + " AND ownerID=" + homeId, null);
commit(db);
@ -382,11 +389,9 @@ public class DatabaseAdapter {
public void removeFavorite(long tweetId) {
SQLiteDatabase db = getDbWrite();
int register = getStatRegister(db, tweetId);
register &= ~favoritedMask;
register &= ~FAV_MASK;
ContentValues status = new ContentValues();
status.put("statusregister", register);
db.beginTransaction();
db.delete("favorit", "tweetID=" + tweetId + " AND ownerID=" + homeId, null);
db.update("tweet", status, "tweet.tweetID=" + tweetId, null);
commit(db);
@ -399,7 +404,6 @@ public class DatabaseAdapter {
*/
public void deleteDm(long id) {
SQLiteDatabase db = getDbWrite();
db.beginTransaction();
db.delete("message", "messageID=" + id, null);
commit(db);
}
@ -438,7 +442,7 @@ public class DatabaseAdapter {
public List<Message> getMessages() {
List<Message> result = new ArrayList<>();
SQLiteDatabase db = dataHelper.getReadableDatabase();
String query = "SELECT * FROM message ORDER BY messageID DESC";
String query = "SELECT * FROM message ORDER BY messageID DESC LIMIT " + LIMIT;
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()) {
do {
@ -510,8 +514,8 @@ public class DatabaseAdapter {
long replyUserId = cursor.getLong(index);
index = cursor.getColumnIndex("statusregister");
int statusregister = cursor.getInt(index);
boolean favorited = (statusregister & favoritedMask) > 0;
boolean retweeted = (statusregister & retweetedMask) > 0;
boolean favorited = (statusregister & FAV_MASK) > 0;
boolean retweeted = (statusregister & RTW_MASK) > 0;
String[] medias = parseMedia(medialinks);
@ -523,6 +527,7 @@ public class DatabaseAdapter {
source, replyStatusId, embeddedTweet, retweeterId, retweeted, favorited);
}
private TwitterUser getUser(long userId, SQLiteDatabase db) {
TwitterUser user = null;
String query = "SELECT * FROM user WHERE userID=" + userId + " LIMIT 1";
@ -533,6 +538,7 @@ public class DatabaseAdapter {
return user;
}
private TwitterUser getUser(Cursor cursor) {
int index = cursor.getColumnIndex("userID");
long userId = cursor.getLong(index);
@ -559,8 +565,8 @@ public class DatabaseAdapter {
index = cursor.getColumnIndex("follower");
int follower = cursor.getInt(index);
boolean isVerified = (userRegister & verifiedMask) > 0;
boolean isLocked = (userRegister & lockedMask) > 0;
boolean isVerified = (userRegister & VER_MASK) > 0;
boolean isLocked = (userRegister & LCK_MASK) > 0;
return new TwitterUser(userId, username, screenname, profileImg, bio,
location, isVerified, isLocked, link, banner, createdAt, following, follower);
}
@ -570,9 +576,9 @@ public class DatabaseAdapter {
ContentValues userColumn = new ContentValues();
int userRegister = 0;
if (user.isVerified())
userRegister |= verifiedMask;
userRegister |= VER_MASK;
if (user.isLocked())
userRegister |= lockedMask;
userRegister |= LCK_MASK;
userColumn.put("userID", user.getId());
userColumn.put("username", user.getUsername());
userColumn.put("scrname", user.getScreenname());
@ -602,14 +608,14 @@ public class DatabaseAdapter {
statusRegister |= getStatRegister(db, tweet.getId());
if (tweet.favorized()) {
statusRegister |= favoritedMask;
statusRegister |= FAV_MASK;
} else {
statusRegister &= ~favoritedMask;
statusRegister &= ~FAV_MASK;
}
if (tweet.retweeted()) {
statusRegister |= retweetedMask;
statusRegister |= RTW_MASK;
} else {
statusRegister &= ~retweetedMask;
statusRegister &= ~RTW_MASK;
}
StringBuilder media = new StringBuilder();
@ -672,7 +678,9 @@ public class DatabaseAdapter {
private synchronized SQLiteDatabase getDbWrite() {
return dataHelper.getWritableDatabase();
SQLiteDatabase db = dataHelper.getWritableDatabase();
db.beginTransaction();
return db;
}

View File

@ -29,6 +29,7 @@ import org.nuclearfog.twidda.backend.items.Tweet;
import org.nuclearfog.twidda.database.GlobalSettings;
import static android.os.AsyncTask.Status.RUNNING;
import static org.nuclearfog.twidda.window.TweetPopup.UPLOADED;
/**
* Detailed Tweet Activity
@ -97,8 +98,8 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
}
protected void onStart() {
super.onStart();
protected void onResume() {
super.onResume();
if (mStat == null) {
TimelineAdapter answerAdapter = new TimelineAdapter(this);
answerAdapter.toggleImage(settings.loadImages());
@ -113,17 +114,21 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
@Override
protected void onStop() {
protected void onPause() {
if (mStat != null && mStat.getStatus() == RUNNING)
mStat.cancel(true);
super.onStop();
super.onPause();
}
@Override
protected void onActivityResult(int reqCode, int returnCode, Intent i) {
if (reqCode == TWEET && returnCode == CHANGED) {
if (reqCode == TWEET) {
if (returnCode == CHANGED) {
mStat = null;
} else if (returnCode == UPLOADED) {
mStat = null;
}
}
}
@ -178,11 +183,13 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
case R.id.rt_button_detail:
mStat = new StatusLoader(this);
mStat.execute(tweetID, StatusLoader.RETWEET);
Toast.makeText(this, R.string.tweet_loading, Toast.LENGTH_SHORT).show();
break;
case R.id.fav_button_detail:
mStat = new StatusLoader(this);
mStat.execute(tweetID, StatusLoader.FAVORITE);
Toast.makeText(this, R.string.tweet_loading, Toast.LENGTH_SHORT).show();
break;
case R.id.no_rt_detail:
@ -210,9 +217,11 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
Intent tweet = new Intent(this, TweetPopup.class);
tweet.putExtra("TweetID", tweetID);
tweet.putExtra("Addition", username);
startActivity(tweet);
startActivityForResult(tweet, TWEET);
break;
}
} else {
Toast.makeText(this, R.string.tweet_processing, Toast.LENGTH_SHORT).show();
}
}

View File

@ -35,6 +35,8 @@ import static android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
*/
public class TweetPopup extends AppCompatActivity implements OnClickListener {
public static final int UPLOADED = 2;
private StatusUpload sendTweet;
private View imageButton, previewBtn;
private List<String> mediaPath;
@ -186,14 +188,14 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int check = checkSelfPermission(READ_EXTERNAL_STORAGE);
if (check == PERMISSION_GRANTED) {
Intent i = new Intent(ACTION_PICK, EXTERNAL_CONTENT_URI);
startActivityForResult(i, 0);
Intent mediaIntent = new Intent(ACTION_PICK, EXTERNAL_CONTENT_URI);
startActivityForResult(mediaIntent, 0);
} else {
requestPermissions(new String[]{READ_EXTERNAL_STORAGE}, 1);
}
} else {
Intent i = new Intent(Intent.ACTION_PICK, EXTERNAL_CONTENT_URI);
startActivityForResult(i, 0);
Intent mediaIntent = new Intent(Intent.ACTION_PICK, EXTERNAL_CONTENT_URI);
startActivityForResult(mediaIntent, 0);
}
}
}

View File

@ -29,6 +29,8 @@ import org.nuclearfog.twidda.backend.items.Tweet;
import org.nuclearfog.twidda.database.GlobalSettings;
import static android.os.AsyncTask.Status.RUNNING;
import static org.nuclearfog.twidda.window.TweetDetail.CHANGED;
import static org.nuclearfog.twidda.window.TweetPopup.UPLOADED;
/**
* User Profile Activity
@ -102,8 +104,8 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
@Override
protected void onStart() {
super.onStart();
protected void onResume() {
super.onResume();
if (mProfile == null) {
TimelineAdapter homeTl = new TimelineAdapter(this);
homeTl.setColor(settings.getHighlightColor(), settings.getFontColor());
@ -124,17 +126,21 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
@Override
protected void onStop() {
protected void onPause() {
if (mProfile != null && mProfile.getStatus() == RUNNING)
mProfile.cancel(true);
super.onStop();
super.onPause();
}
@Override
protected void onActivityResult(int reqCode, int returnCode, Intent i) {
if (reqCode == TWEET && returnCode == TweetDetail.CHANGED) {
if (reqCode == TWEET) {
if (returnCode == CHANGED) {
mProfile = null;
} else if (returnCode == UPLOADED) {
mProfile = null;
}
}
}
@ -194,7 +200,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
Intent tweet = new Intent(this, TweetPopup.class);
if (!home)
tweet.putExtra("Addition", username);
startActivity(tweet);
startActivityForResult(tweet, TWEET);
break;
case R.id.profile_follow:

View File

@ -75,4 +75,6 @@
<string name="dm_not_found">Nachricht nicht gefunden!</string>
<string name="image_folder_created">Ordner erstellt unter Pictures</string>
<string name="image_saved">Bild gespeichert!</string>
<string name="tweet_processing">in bearbeitung...</string>
<string name="tweet_loading">lädt...</string>
</resources>

View File

@ -83,4 +83,6 @@
<string name="dm_not_found">message not found!</string>
<string name="image_folder_created">folder created under Pictures!</string>
<string name="image_saved">image saved!</string>
<string name="tweet_processing">processing...</string>
<string name="tweet_loading">loading...</string>
</resources>