database fix

This commit is contained in:
nuclearfog 2022-01-13 22:34:28 +01:00
parent 33260ae84e
commit 3fdbe9af6c
No known key found for this signature in database
GPG Key ID: AA0271FBE406DB98
9 changed files with 60 additions and 33 deletions

View File

@ -537,7 +537,6 @@ public class TweetActivity extends AppCompatActivity implements OnClickListener,
} else {
sensitive_media.setVisibility(GONE);
}
AppStyles.setDrawableColor(mediaButton, settings.getIconColor());
switch(tweetUpdate.getMediaType()) {
case Tweet.MIME_PHOTO:
mediaButton.setVisibility(VISIBLE);
@ -559,6 +558,7 @@ public class TweetActivity extends AppCompatActivity implements OnClickListener,
mediaButton.setImageResource(0);
break;
}
AppStyles.setDrawableColor(mediaButton, settings.getIconColor());
if (settings.imagesEnabled() && !author.getImageUrl().isEmpty()) {
String pbLink = author.getImageUrl();
if (!author.hasDefaultProfileImage())

View File

@ -64,6 +64,7 @@ public class MessageHolder extends ViewHolder {
button.setTypeface(settings.getTypeFace());
AppStyles.setButtonColor(button, settings.getFontColor());
}
AppStyles.setButtonColor(mediaButton, settings.getFontColor());
verifiedIcon.setColorFilter(settings.getIconColor(), SRC_IN);
lockedIcon.setColorFilter(settings.getIconColor(), SRC_IN);
mediaButton.setColorFilter(settings.getIconColor(), SRC_IN);

View File

@ -42,11 +42,11 @@ class UserV1 implements User {
UserV1(JSONObject json) {
String profileImage = json.optString("profile_image_url_https");
profileBannerUrl = json.optString("profile_banner_url");
description = json.optString("description");
username = json.optString("name");
screenName = '@' + json.optString("screen_name");
profileImageUrl = json.optString("profile_image_url_https");
location = json.optString("location");
userID = json.optLong("id");
isVerified = json.optBoolean("verified");
@ -78,6 +78,14 @@ class UserV1 implements User {
}
}
}
// set profile image url
int start = profileImage.lastIndexOf('_');
int end = profileImage.lastIndexOf('.');
if (!defaultImage && start > 0 && end > 0) {
profileImageUrl = profileImage.substring(0, start) + profileImage.substring(end);
} else {
profileImageUrl = profileImage;
}
}
@Override

View File

@ -13,8 +13,8 @@ import java.net.SocketAddress;
*/
public class UserProxy extends Proxy {
private UserProxy(Type type, SocketAddress sa) {
super(type, sa);
private UserProxy(SocketAddress sa) {
super(Type.HTTP, sa);
}
/**
@ -27,7 +27,7 @@ public class UserProxy extends Proxy {
String proxyHost = settings.getProxyHost();
int proxyPort = settings.getProxyPortNumber();
InetSocketAddress addr = new InetSocketAddress(proxyHost, proxyPort);
return new UserProxy(Type.HTTP, addr);
return new UserProxy(addr);
}
return Proxy.NO_PROXY;
}

View File

@ -24,8 +24,6 @@ import javax.crypto.spec.SecretKeySpec;
*/
public final class StringTools {
public static final String MIME_ALL = "*/*";
private static final SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
private static final long DEFAULT_TIME = 0x61D99F64;

View File

@ -538,18 +538,17 @@ public class AppDatabase {
* @param tweet Tweet to remove from the favorites
*/
public void removeFavorite(Tweet tweet) {
long tweetId = tweet.getId();
String[] delArgs = {Long.toString(tweetId), Long.toString(homeId)};
String[] delArgs = {Long.toString(tweet.getId()), Long.toString(homeId)};
if (tweet.getEmbeddedTweet() != null) {
tweetId = tweet.getEmbeddedTweet().getId();
tweet = tweet.getEmbeddedTweet();
}
SQLiteDatabase db = getDbWrite();
// get tweet register
int register = getTweetRegister(db, tweetId);
int register = getTweetRegister(db, tweet.getId());
register &= ~FAV_MASK; // unset favorite flag
// update database
setTweetRegister(db, tweetId, register);
setTweetRegister(db, tweet, register);
db.delete(FavoriteTable.NAME, FAVORITE_SELECT, delArgs);
commit(db);
}
@ -764,7 +763,6 @@ public class AppDatabase {
status.put(TweetTable.REPLYTWEET, tweet.getReplyId());
status.put(TweetTable.RETWEET, tweet.getRetweetCount());
status.put(TweetTable.FAVORITE, tweet.getFavoriteCount());
status.put(TweetTable.RETWEETUSER, tweet.getMyRetweetId());
status.put(TweetTable.REPLYUSER, tweet.getReplyUserId());
status.put(TweetTable.PLACE, tweet.getLocationName());
status.put(TweetTable.COORDINATE, tweet.getLocationCoordinates());
@ -774,7 +772,7 @@ public class AppDatabase {
db.insertWithOnConflict(TweetTable.NAME, null, status, CONFLICT_REPLACE);
storeUser(user, db, CONFLICT_IGNORE);
setTweetRegister(db, tweet.getId(), statusRegister);
setTweetRegister(db, tweet, statusRegister);
}
/**
@ -802,7 +800,6 @@ public class AppDatabase {
tweetColumn.put(TweetTable.TWEET, tweet.getText());
tweetColumn.put(TweetTable.RETWEET, tweet.getRetweetCount());
tweetColumn.put(TweetTable.FAVORITE, tweet.getFavoriteCount());
tweetColumn.put(TweetTable.RETWEETUSER, tweet.getMyRetweetId());
tweetColumn.put(TweetTable.REPLYNAME, tweet.getReplyName());
tweetColumn.put(TweetTable.MEDIA, getMediaLinks(tweet));
@ -819,7 +816,7 @@ public class AppDatabase {
db.update(TweetTable.NAME, tweetColumn, TWEET_SELECT, tweetIdArg);
db.update(UserTable.NAME, userColumn, USER_SELECT, userIdArg);
setTweetRegister(db, tweet.getId(), register);
setTweetRegister(db, tweet, register);
}
/**
@ -861,6 +858,7 @@ public class AppDatabase {
messageColumn.put(MessageTable.FROM, message.getSender().getId());
messageColumn.put(MessageTable.TO, message.getReceiver().getId());
messageColumn.put(MessageTable.MESSAGE, message.getText());
messageColumn.put(MessageTable.MEDIA, message.getMedia());
db.insertWithOnConflict(MessageTable.NAME, null, messageColumn, CONFLICT_IGNORE);
// store user information
storeUser(message.getSender(), db, CONFLICT_IGNORE);
@ -889,16 +887,17 @@ public class AppDatabase {
* set status register of a tweet. if an entry exists, update it
*
* @param db database instance
* @param id Tweet ID
* @param tweet Tweet
* @param register tweet register
*/
public void setTweetRegister(SQLiteDatabase db, long id, int register) {
String[] args = {Long.toString(id), Long.toString(homeId)};
public void setTweetRegister(SQLiteDatabase db, Tweet tweet, int register) {
String[] args = {Long.toString(tweet.getId()), Long.toString(homeId)};
ContentValues values = new ContentValues(3);
values.put(TweetRegisterTable.ID, id);
values.put(TweetRegisterTable.ID, tweet.getId());
values.put(TweetRegisterTable.OWNER, homeId);
values.put(TweetRegisterTable.REGISTER, register);
values.put(TweetRegisterTable.RETWEETUSER, tweet.getMyRetweetId());
int cnt = db.update(TweetRegisterTable.NAME, values, TWEET_REG_SELECT, args);
if (cnt == 0) {

View File

@ -19,7 +19,7 @@ public class DatabaseAdapter {
/**
* database version number
*/
private static final int DB_VERSION = 4;
private static final int DB_VERSION = 5;
/**
* database file name
@ -54,7 +54,6 @@ public class DatabaseAdapter {
+ TweetTable.USER + " INTEGER,"
+ TweetTable.EMBEDDED + " INTEGER,"
+ TweetTable.REPLYTWEET + " INTEGER,"
+ TweetTable.RETWEETUSER + " INTEGER,"
+ TweetTable.REPLYNAME + " TEXT,"
+ TweetTable.REPLYUSER + " INTEGER,"
+ TweetTable.SINCE + " INTEGER,"
@ -183,6 +182,15 @@ public class DatabaseAdapter {
private static final String TABLE_TREND_ADD_VOL = "ALTER TABLE " + TrendTable.NAME
+ " ADD COLUMN " + TrendTable.VOL + " INTEGER";
/**
* update for the directmessage table to add a media link
*/
private static final String TABLE_MESSAGE_ADD_MEDIA = "ALTER TABLE " + MessageTable.NAME
+ " ADD COLUMN " + MessageTable.MEDIA + " TEXT";
private static final String TABLE_TWEETREGISTER_ADD_RETWEETER_ID = "ALTER TABLE " + TweetRegisterTable.NAME
+ " ADD COLUMN " + TweetRegisterTable.RETWEETUSER + " INTEGER";
/**
* singleton instance
*/
@ -269,6 +277,11 @@ public class DatabaseAdapter {
db.execSQL(TABLE_USER_REGISTER);
db.setVersion(4);
}
if (db.getVersion() < 5) {
db.execSQL(TABLE_MESSAGE_ADD_MEDIA);
db.execSQL(TABLE_TWEETREGISTER_ADD_RETWEETER_ID);
db.setVersion(5);
}
}
/**
@ -460,11 +473,6 @@ public class DatabaseAdapter {
* ID of the embedded (retweeted) status
*/
String EMBEDDED = "retweetID";
/**
* ID of the
*/
String RETWEETUSER = "retweeterID";
}
/**
@ -549,6 +557,11 @@ public class DatabaseAdapter {
* message text
*/
String MESSAGE = "message";
/**
* media links
*/
String MEDIA = "media";
}
/**
@ -611,6 +624,11 @@ public class DatabaseAdapter {
* Register with status bits
*/
String REGISTER = "tweetRegister";
/**
*
*/
String RETWEETUSER = "retweeterID";
}
/**

View File

@ -2,6 +2,8 @@ package org.nuclearfog.twidda.database;
import android.database.Cursor;
import org.nuclearfog.twidda.database.DatabaseAdapter.MessageTable;
import org.nuclearfog.twidda.database.DatabaseAdapter.UserTable;
import org.nuclearfog.twidda.model.DirectMessage;
import org.nuclearfog.twidda.model.User;
@ -21,11 +23,12 @@ class DirectMessageImpl implements DirectMessage {
DirectMessageImpl(Cursor cursor, long currentId) {
text = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.MessageTable.MESSAGE));
time = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.MessageTable.SINCE));
id = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.MessageTable.ID));
sender = new UserImpl(cursor, DatabaseAdapter.UserTable.ALIAS_1 + ".", currentId);
receiver = new UserImpl(cursor, DatabaseAdapter.UserTable.ALIAS_2 + ".", currentId);
text = cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.MESSAGE));
time = cursor.getLong(cursor.getColumnIndexOrThrow(MessageTable.SINCE));
id = cursor.getLong(cursor.getColumnIndexOrThrow(MessageTable.ID));
media = cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.MEDIA));
sender = new UserImpl(cursor, UserTable.ALIAS_1 + ".", currentId);
receiver = new UserImpl(cursor, UserTable.ALIAS_2 + ".", currentId);
}
@Override

View File

@ -55,13 +55,13 @@ class TweetImpl implements Tweet {
tweetId = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.ID));
replyName = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.REPLYNAME));
replyID = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.REPLYTWEET));
myRetweetId = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.RETWEETUSER));
source = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.SOURCE));
String links = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.MEDIA));
locationName = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.PLACE));
locationCoordinates = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.COORDINATE));
replyUserId = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.REPLYUSER));
embeddedId = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetTable.EMBEDDED));
myRetweetId = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetRegisterTable.RETWEETUSER));
int tweetRegister = cursor.getInt(cursor.getColumnIndexOrThrow(DatabaseAdapter.TweetRegisterTable.REGISTER));
favorited = (tweetRegister & FAV_MASK) != 0;
retweeted = (tweetRegister & RTW_MASK) != 0;