database fix, adapter bug fix, readme update
This commit is contained in:
parent
effb3f0bdb
commit
eb3f445552
16
README.md
16
README.md
|
@ -8,14 +8,14 @@
|
|||
|
||||
## Features
|
||||
|
||||
- fast access to tweets, userprofiles and trends
|
||||
- tweet, directmessage and userlist editor
|
||||
- access to statuses, users and trends
|
||||
- real timeline (chronological order)
|
||||
- status, list and profile editor
|
||||
- customizable theme
|
||||
- image/video preview
|
||||
- media preview
|
||||
- GPS locale support
|
||||
- proxy support
|
||||
- multi account support
|
||||
- custom API key support
|
||||
- multi account support (experimental support for Mastodon)
|
||||
- no ads, no app tracking, proxy support
|
||||
|
||||
|
||||
## Screenshots
|
||||
|
@ -30,6 +30,7 @@ If you have any questions or if you have found a bug, please open an issue.
|
|||
|
||||
|
||||
## 3rd party libraries and licenses
|
||||
|
||||
- <a href="https://github.com/square/picasso">picasso 2.8</a>
|
||||
- <a href="https://github.com/QuadFlask/colorpicker">QuadFlask colorpicker</a>
|
||||
- <a href="https://github.com/MichaelRocks/paranoid">String obfuscation</a>
|
||||
|
@ -41,13 +42,14 @@ If you have any questions or if you have found a bug, please open an issue.
|
|||
- <a href="https://github.com/nuclearfog/ZoomView">ZoomView</a>
|
||||
- <a href="https://github.com/nuclearfog/Tagger">Tagger</a>
|
||||
- <a href="https://github.com/nuclearfog/LinkAndScrollMovement">LinkAndScrollMovement</a>
|
||||
- Version 1.x: <a href="https://github.com/Twitter4J/Twitter4J">Twitter4J 4.0.7</a>
|
||||
|
||||
## Graphics
|
||||
|
||||
- SVG Icons from <a href="http://www.entypo.com">Entypo</a> & <a href="https://www.svgrepo.com">SVG Repo</a>
|
||||
- logo and app icon design by <a href="https://github.com/Tobaloidee">@Tobaloidee</a>
|
||||
- Twitter4J logo (version 1.x) from <a href="https://twitter4j.org/en/powered-by.html">Twitter4J website</a>
|
||||
|
||||
## Thanks to
|
||||
|
||||
- <a href="https://github.com/Tobaloidee">@Tobaloidee</a>
|
||||
- <a href="https://github.com/lehmaning">@lehmaning</a>
|
||||
|
|
|
@ -91,7 +91,7 @@ public class MessageHolder extends ViewHolder implements OnClickListener, OnTagC
|
|||
} else if (v == delete) {
|
||||
listener.onItemClick(position, OnItemClickListener.MESSAGE_DELETE);
|
||||
} else if (v == profile) {
|
||||
listener.onItemClick(position, OnItemClickListener.PROFILE_CLICK);
|
||||
listener.onItemClick(position, OnItemClickListener.MESSAGE_PROFILE);
|
||||
} else if (v == mediaButton) {
|
||||
listener.onItemClick(position, OnItemClickListener.MESSAGE_MEDIA);
|
||||
}
|
||||
|
|
|
@ -11,35 +11,33 @@ public interface OnHolderClickListener {
|
|||
|
||||
int LIST_CLICK = 1;
|
||||
|
||||
int PROFILE_CLICK = 2;
|
||||
int USER_CLICK = 2;
|
||||
|
||||
int USER_CLICK = 3;
|
||||
int USER_REMOVE = 3;
|
||||
|
||||
int USER_REMOVE = 4;
|
||||
int STATUS_CLICK = 4;
|
||||
|
||||
int STATUS_CLICK = 5;
|
||||
int STATUS_LABEL = 5;
|
||||
|
||||
int STATUS_LABEL = 6;
|
||||
int LIST_PROFILE = 6;
|
||||
|
||||
int LIST_PROFILE = 7;
|
||||
int MESSAGE_VIEW = 7;
|
||||
|
||||
int MESSAGE_VIEW = 8;
|
||||
int MESSAGE_ANSWER = 8;
|
||||
|
||||
int MESSAGE_ANSWER = 9;
|
||||
int MESSAGE_PROFILE = 9;
|
||||
|
||||
int MESSAGE_PROFILE = 10;
|
||||
int MESSAGE_MEDIA = 10;
|
||||
|
||||
int MESSAGE_MEDIA = 11;
|
||||
int MESSAGE_DELETE = 11;
|
||||
|
||||
int MESSAGE_DELETE = 12;
|
||||
int ACCOUNT_SELECT = 12;
|
||||
|
||||
int ACCOUNT_SELECT = 13;
|
||||
int ACCOUNT_REMOVE = 13;
|
||||
|
||||
int ACCOUNT_REMOVE = 14;
|
||||
int IMAGE_CLICK = 14;
|
||||
|
||||
int IMAGE_CLICK = 15;
|
||||
|
||||
int IMAGE_SAVE = 16;
|
||||
int IMAGE_SAVE = 15;
|
||||
|
||||
/**
|
||||
* called when an item was clicked
|
||||
|
|
|
@ -33,8 +33,6 @@ 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 status, messages, trends and user information
|
||||
|
@ -205,6 +203,10 @@ public class AppDatabase {
|
|||
* SQL query to get current user's messages
|
||||
*/
|
||||
private static final String MESSAGE_QUERY = "SELECT * FROM " + MessageTable.NAME
|
||||
+ " INNER JOIN " + UserTable.NAME
|
||||
+ " ON " + MessageTable.NAME + "." + MessageTable.FROM + "=" + UserTable.NAME + "." + UserTable.ID
|
||||
+ " INNER JOIN " + UserRegisterTable.NAME
|
||||
+ " ON " + MessageTable.NAME + "." + MessageTable.FROM + "=" + UserRegisterTable.NAME + "." + UserRegisterTable.ID
|
||||
+ " WHERE " + MessageTable.FROM + "=? OR " + MessageTable.TO + "=?"
|
||||
+ " ORDER BY " + MessageTable.SINCE + " DESC LIMIT ?;";
|
||||
|
||||
|
@ -706,27 +708,16 @@ public class AppDatabase {
|
|||
* @return list of direct messages
|
||||
*/
|
||||
public Messages getMessages() {
|
||||
String homeIdStr = Long.toString(settings.getLogin().getId());
|
||||
long currentId = settings.getLogin().getId();
|
||||
String homeIdStr = Long.toString(currentId);
|
||||
String[] args = {homeIdStr, homeIdStr, Integer.toString(settings.getListSize())};
|
||||
Messages result = new Messages(null, null);
|
||||
SQLiteDatabase db = getDbRead();
|
||||
Map<Long, User> userCache = new TreeMap<>();
|
||||
Cursor cursor = db.rawQuery(MESSAGE_QUERY, args);
|
||||
if (cursor.moveToFirst()) {
|
||||
do
|
||||
{
|
||||
User sender;
|
||||
MessageImpl message = new MessageImpl(cursor);
|
||||
if (userCache.containsKey(message.getSenderId())) {
|
||||
sender = userCache.get(message.getSenderId());
|
||||
} else {
|
||||
sender = getUser(message.getSenderId());
|
||||
userCache.put(message.getSenderId(), sender);
|
||||
}
|
||||
if (sender != null) {
|
||||
message.setSender(sender);
|
||||
result.add(message);
|
||||
}
|
||||
result.add(new MessageImpl(cursor, currentId));
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
cursor.close();
|
||||
|
|
|
@ -19,18 +19,20 @@ public class MessageImpl implements Message {
|
|||
|
||||
private long id;
|
||||
private long time;
|
||||
private long senderId;
|
||||
private long receiverId;
|
||||
private String text;
|
||||
private User sender;
|
||||
private String media;
|
||||
|
||||
|
||||
public MessageImpl(Cursor cursor) {
|
||||
/**
|
||||
* @param cursor database cursor containing UserTable column
|
||||
* @param currentId Id of the current user
|
||||
*/
|
||||
public MessageImpl(Cursor cursor, long currentId) {
|
||||
sender = new UserImpl(cursor, currentId);
|
||||
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));
|
||||
}
|
||||
|
@ -88,14 +90,4 @@ public class MessageImpl implements Message {
|
|||
public String toString() {
|
||||
return "from=" + sender + " message=\"" + text + "\"";
|
||||
}
|
||||
|
||||
|
||||
public void setSender(User sender) {
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
|
||||
public long getSenderId() {
|
||||
return senderId;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue