mirror of
https://github.com/nuclearfog/Shitter.git
synced 2025-02-07 06:23:48 +01:00
version upgrade, database bugfix
This commit is contained in:
parent
ad68c16c10
commit
b6917bea26
@ -12,8 +12,8 @@ android {
|
||||
applicationId 'org.nuclearfog.twidda'
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 31
|
||||
versionCode 53
|
||||
versionName '2.0'
|
||||
versionCode 54
|
||||
versionName '2.0.1'
|
||||
// limiting language support for smaller APK size
|
||||
resConfigs 'en', 'de-rDE', 'zh-rCN'
|
||||
vectorDrawables.useSupportLibrary true
|
||||
|
@ -66,8 +66,8 @@ public class PicassoBuilder implements GlobalSettings.SettingsListener {
|
||||
TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
||||
factory.init((KeyStore) null);
|
||||
X509TrustManager manager = (X509TrustManager) factory.getTrustManagers()[0];
|
||||
builder.sslSocketFactory(new TLSSocketFactory(), manager);
|
||||
downloader = new OkHttp3Downloader(builder.build());
|
||||
TLSSocketFactory socket = new TLSSocketFactory();
|
||||
builder.sslSocketFactory(socket, manager);
|
||||
} catch (Exception e) {
|
||||
// ignore, try without TLS 1.2 support
|
||||
}
|
||||
|
@ -26,6 +26,8 @@ import org.nuclearfog.twidda.model.User;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
/**
|
||||
* SQLite database class to store and load tweets, messages, trends and user information
|
||||
@ -136,15 +138,10 @@ public class AppDatabase {
|
||||
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.REGISTER + "&" + EXCL_USR + " IS 0"
|
||||
+ " ORDER BY " + TweetTable.ID + " DESC LIMIT ?";
|
||||
|
||||
/**
|
||||
* SQL query to get current user's messages
|
||||
*/
|
||||
static final String MESSAGE_QUERY = "SELECT * FROM " + MessageTable.NAME
|
||||
+ " LEFT JOIN " + UserTable.NAME + " " + UserTable.ALIAS_1
|
||||
+ " ON " + UserTable.ALIAS_1 + "." + UserTable.ID + "=" + MessageTable.NAME + "." + MessageTable.FROM
|
||||
+ " LEFT JOIN " + UserTable.NAME + " " + UserTable.ALIAS_2
|
||||
+ " ON " + UserTable.ALIAS_2 + "." + UserTable.ID + "=" + MessageTable.NAME + "." + MessageTable.TO
|
||||
+ " LEFT JOIN " + UserRegisterTable.NAME + " " + UserRegisterTable.ALIAS_1
|
||||
+ " ON " + UserRegisterTable.ALIAS_1 + "." + UserRegisterTable.ID + "=" + MessageTable.NAME + "." + MessageTable.FROM
|
||||
+ " LEFT JOIN " + UserRegisterTable.NAME + " " + UserRegisterTable.ALIAS_2
|
||||
+ " ON " + UserRegisterTable.ALIAS_2 + "." + UserRegisterTable.ID + "=" + MessageTable.NAME + "." + MessageTable.TO
|
||||
+ " WHERE " + MessageTable.FROM + "=? OR " + MessageTable.TO + "=?"
|
||||
+ " ORDER BY " + MessageTable.SINCE + " DESC LIMIT ?";
|
||||
|
||||
@ -593,13 +590,33 @@ public class AppDatabase {
|
||||
* @return list of direct messages
|
||||
*/
|
||||
public Directmessages getMessages() {
|
||||
String[] args = {Long.toString(homeId), Long.toString(homeId), Integer.toString(limit)};
|
||||
String homeIdStr = Long.toString(homeId);
|
||||
String[] args = {homeIdStr, homeIdStr, Integer.toString(limit)};
|
||||
Directmessages result = new Directmessages(null, null);
|
||||
SQLiteDatabase db = getDbRead();
|
||||
Map<Long, User> userCache = new TreeMap<>();
|
||||
Cursor cursor = db.rawQuery(MESSAGE_QUERY, args);
|
||||
if (cursor.moveToFirst()) {
|
||||
do {
|
||||
result.add(new DirectMessageImpl(cursor, homeId));
|
||||
User sender, receiver;
|
||||
DirectMessageImpl message = new DirectMessageImpl(cursor);
|
||||
if (userCache.containsKey(message.getSenderId())) {
|
||||
sender = userCache.get(message.getSenderId());
|
||||
} else {
|
||||
sender = getUser(message.getSenderId());
|
||||
userCache.put(message.getSenderId(), sender);
|
||||
}
|
||||
if (userCache.containsKey(message.getReceiverId())) {
|
||||
receiver = userCache.get(message.getReceiverId());
|
||||
} else {
|
||||
receiver = getUser(message.getReceiverId());
|
||||
userCache.put(message.getReceiverId(), receiver);
|
||||
}
|
||||
if (sender != null && receiver != null) {
|
||||
message.setSender(sender);
|
||||
message.setReceiver(receiver);
|
||||
result.add(message);
|
||||
}
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
cursor.close();
|
||||
@ -852,7 +869,7 @@ public class AppDatabase {
|
||||
*/
|
||||
private void storeMessage(DirectMessage message, SQLiteDatabase db) {
|
||||
// store message information
|
||||
ContentValues messageColumn = new ContentValues(5);
|
||||
ContentValues messageColumn = new ContentValues(6);
|
||||
messageColumn.put(MessageTable.ID, message.getId());
|
||||
messageColumn.put(MessageTable.SINCE, message.getTimestamp());
|
||||
messageColumn.put(MessageTable.FROM, message.getSender().getId());
|
||||
|
@ -7,7 +7,6 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
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;
|
||||
|
||||
@ -20,19 +19,21 @@ class DirectMessageImpl implements DirectMessage {
|
||||
|
||||
private long id;
|
||||
private long time;
|
||||
private long senderId;
|
||||
private long receiverId;
|
||||
private String text;
|
||||
private User sender;
|
||||
private User receiver;
|
||||
private String media;
|
||||
|
||||
|
||||
DirectMessageImpl(Cursor cursor, long currentId) {
|
||||
DirectMessageImpl(Cursor cursor) {
|
||||
text = cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.MESSAGE));
|
||||
time = cursor.getLong(cursor.getColumnIndexOrThrow(MessageTable.SINCE));
|
||||
id = cursor.getLong(cursor.getColumnIndexOrThrow(MessageTable.ID));
|
||||
senderId = cursor.getLong(cursor.getColumnIndexOrThrow(MessageTable.FROM));
|
||||
receiverId = cursor.getLong(cursor.getColumnIndexOrThrow(MessageTable.TO));
|
||||
media = cursor.getString(cursor.getColumnIndexOrThrow(MessageTable.MEDIA));
|
||||
sender = new UserImpl(cursor, UserTable.ALIAS_1 + ".", currentId);
|
||||
receiver = new UserImpl(cursor, UserTable.ALIAS_2 + ".", currentId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -80,4 +81,24 @@ class DirectMessageImpl implements DirectMessage {
|
||||
public String toString() {
|
||||
return "from:" + sender + " to:" + receiver + " message:" + text;
|
||||
}
|
||||
|
||||
|
||||
void setSender(User sender) {
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
|
||||
void setReceiver(User receiver) {
|
||||
this.receiver = receiver;
|
||||
}
|
||||
|
||||
|
||||
long getSenderId() {
|
||||
return senderId;
|
||||
}
|
||||
|
||||
|
||||
long getReceiverId() {
|
||||
return receiverId;
|
||||
}
|
||||
}
|
@ -42,25 +42,20 @@ class UserImpl implements User {
|
||||
|
||||
|
||||
UserImpl(Cursor cursor, long currentUserId) {
|
||||
this(cursor, "", currentUserId);
|
||||
}
|
||||
|
||||
|
||||
UserImpl(Cursor cursor, String prefix, long currentUserId) {
|
||||
id = cursor.getLong(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.ID));
|
||||
username = cursor.getString(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.USERNAME));
|
||||
screenName = cursor.getString(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.SCREENNAME));
|
||||
profileImg = cursor.getString(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.IMAGE));
|
||||
bio = cursor.getString(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.DESCRIPTION));
|
||||
link = cursor.getString(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.LINK));
|
||||
location = cursor.getString(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.LOCATION));
|
||||
bannerImg = cursor.getString(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.BANNER));
|
||||
created = cursor.getLong(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.SINCE));
|
||||
following = cursor.getInt(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.FRIENDS));
|
||||
follower = cursor.getInt(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.FOLLOWER));
|
||||
tweetCount = cursor.getInt(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.TWEETS));
|
||||
favorCount = cursor.getInt(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserTable.FAVORS));
|
||||
int register = cursor.getInt(cursor.getColumnIndexOrThrow(prefix + DatabaseAdapter.UserRegisterTable.REGISTER));
|
||||
id = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.ID));
|
||||
username = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.USERNAME));
|
||||
screenName = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.SCREENNAME));
|
||||
profileImg = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.IMAGE));
|
||||
bio = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.DESCRIPTION));
|
||||
link = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.LINK));
|
||||
location = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.LOCATION));
|
||||
bannerImg = cursor.getString(cursor.getColumnIndexOrThrow( DatabaseAdapter.UserTable.BANNER));
|
||||
created = cursor.getLong(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.SINCE));
|
||||
following = cursor.getInt(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.FRIENDS));
|
||||
follower = cursor.getInt(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.FOLLOWER));
|
||||
tweetCount = cursor.getInt(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.TWEETS));
|
||||
favorCount = cursor.getInt(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserTable.FAVORS));
|
||||
int register = cursor.getInt(cursor.getColumnIndexOrThrow(DatabaseAdapter.UserRegisterTable.REGISTER));
|
||||
isVerified = (register & VER_MASK) != 0;
|
||||
isLocked = (register & LCK_MASK) != 0;
|
||||
followReqSent = (register & FRQ_MASK) != 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user