mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-24 10:35:19 +00:00
Model friend request status as an enum
This commit is contained in:
parent
d44081d040
commit
21e1ece19c
@ -2155,7 +2155,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Loki - Always send friend requests if we're not friends with the user
|
// Loki - Always send friend requests if we're not friends with the user
|
||||||
int friendRequestStatus = DatabaseFactory.getLokiThreadFriendRequestDatabase(context).getFriendRequestStatus(threadId);
|
LokiFriendRequestStatus friendRequestStatus = DatabaseFactory.getLokiThreadFriendRequestDatabase(context).getFriendRequestStatus(threadId);
|
||||||
message.isFriendRequest = (friendRequestStatus != LokiFriendRequestStatus.FRIENDS);
|
message.isFriendRequest = (friendRequestStatus != LokiFriendRequestStatus.FRIENDS);
|
||||||
|
|
||||||
Permissions.with(this)
|
Permissions.with(this)
|
||||||
|
@ -34,7 +34,7 @@ import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;
|
|||||||
import org.thoughtcrime.securesms.loki.LokiAPIDatabase;
|
import org.thoughtcrime.securesms.loki.LokiAPIDatabase;
|
||||||
import org.thoughtcrime.securesms.loki.LokiContactPreKeyDatabase;
|
import org.thoughtcrime.securesms.loki.LokiContactPreKeyDatabase;
|
||||||
import org.thoughtcrime.securesms.loki.LokiPreKeyBundleDatabase;
|
import org.thoughtcrime.securesms.loki.LokiPreKeyBundleDatabase;
|
||||||
import org.thoughtcrime.securesms.loki.LokiSmsFriendRequestDatabase;
|
import org.thoughtcrime.securesms.loki.LokiMessageFriendRequestDatabase;
|
||||||
import org.thoughtcrime.securesms.loki.LokiThreadFriendRequestDatabase;
|
import org.thoughtcrime.securesms.loki.LokiThreadFriendRequestDatabase;
|
||||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ public class DatabaseFactory {
|
|||||||
private final LokiAPIDatabase lokiAPIDatabase;
|
private final LokiAPIDatabase lokiAPIDatabase;
|
||||||
private final LokiContactPreKeyDatabase lokiContactPreKeyDatabase;
|
private final LokiContactPreKeyDatabase lokiContactPreKeyDatabase;
|
||||||
private final LokiPreKeyBundleDatabase lokiPreKeyBundleDatabase;
|
private final LokiPreKeyBundleDatabase lokiPreKeyBundleDatabase;
|
||||||
private final LokiSmsFriendRequestDatabase lokiSmsFriendRequestDatabase;
|
private final LokiMessageFriendRequestDatabase lokiMessageFriendRequestDatabase;
|
||||||
private final LokiThreadFriendRequestDatabase lokiThreadFriendRequestDatabase;
|
private final LokiThreadFriendRequestDatabase lokiThreadFriendRequestDatabase;
|
||||||
|
|
||||||
public static DatabaseFactory getInstance(Context context) {
|
public static DatabaseFactory getInstance(Context context) {
|
||||||
@ -169,8 +169,8 @@ public class DatabaseFactory {
|
|||||||
return getInstance(context).lokiPreKeyBundleDatabase;
|
return getInstance(context).lokiPreKeyBundleDatabase;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LokiSmsFriendRequestDatabase getLokiSmsFriendRequestDatabase(Context context) {
|
public static LokiMessageFriendRequestDatabase getLokiSmsFriendRequestDatabase(Context context) {
|
||||||
return getInstance(context).lokiSmsFriendRequestDatabase;
|
return getInstance(context).lokiMessageFriendRequestDatabase;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LokiThreadFriendRequestDatabase getLokiThreadFriendRequestDatabase(Context context) {
|
public static LokiThreadFriendRequestDatabase getLokiThreadFriendRequestDatabase(Context context) {
|
||||||
@ -212,7 +212,7 @@ public class DatabaseFactory {
|
|||||||
this.lokiAPIDatabase = new LokiAPIDatabase(context, databaseHelper);
|
this.lokiAPIDatabase = new LokiAPIDatabase(context, databaseHelper);
|
||||||
this.lokiContactPreKeyDatabase = new LokiContactPreKeyDatabase(context, databaseHelper);
|
this.lokiContactPreKeyDatabase = new LokiContactPreKeyDatabase(context, databaseHelper);
|
||||||
this.lokiPreKeyBundleDatabase = new LokiPreKeyBundleDatabase(context, databaseHelper);
|
this.lokiPreKeyBundleDatabase = new LokiPreKeyBundleDatabase(context, databaseHelper);
|
||||||
this.lokiSmsFriendRequestDatabase = new LokiSmsFriendRequestDatabase(context, databaseHelper);
|
this.lokiMessageFriendRequestDatabase = new LokiMessageFriendRequestDatabase(context, databaseHelper);
|
||||||
this.lokiThreadFriendRequestDatabase = new LokiThreadFriendRequestDatabase(context, databaseHelper);
|
this.lokiThreadFriendRequestDatabase = new LokiThreadFriendRequestDatabase(context, databaseHelper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -661,7 +661,7 @@ public class SmsDatabase extends MessagingDatabase {
|
|||||||
ApplicationContext.getInstance(context).getJobManager().add(new TrimThreadJob(threadId));
|
ApplicationContext.getInstance(context).getJobManager().add(new TrimThreadJob(threadId));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loki: Save friend request state on sms
|
// Loki - Save friend request state on sms
|
||||||
if (message.isFriendRequest) {
|
if (message.isFriendRequest) {
|
||||||
DatabaseFactory.getLokiSmsFriendRequestDatabase(context).setIsFriendRequest(messageId, message.isFriendRequest);
|
DatabaseFactory.getLokiSmsFriendRequestDatabase(context).setIsFriendRequest(messageId, message.isFriendRequest);
|
||||||
}
|
}
|
||||||
@ -879,7 +879,7 @@ public class SmsDatabase extends MessagingDatabase {
|
|||||||
List<IdentityKeyMismatch> mismatches = getMismatches(mismatchDocument);
|
List<IdentityKeyMismatch> mismatches = getMismatches(mismatchDocument);
|
||||||
Recipient recipient = Recipient.from(context, address, true);
|
Recipient recipient = Recipient.from(context, address, true);
|
||||||
|
|
||||||
// Loki: Check to see if this message was a friend request
|
// Loki - Check to see if this message was a friend request
|
||||||
boolean isFriendRequest = DatabaseFactory.getLokiSmsFriendRequestDatabase(context).getIsFriendRequest(messageId);
|
boolean isFriendRequest = DatabaseFactory.getLokiSmsFriendRequestDatabase(context).getIsFriendRequest(messageId);
|
||||||
|
|
||||||
return new SmsMessageRecord(messageId, body, recipient,
|
return new SmsMessageRecord(messageId, body, recipient,
|
||||||
|
@ -9,10 +9,6 @@ import android.os.SystemClock;
|
|||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.database.Address;
|
|
||||||
import org.thoughtcrime.securesms.database.JobDatabase;
|
|
||||||
import org.thoughtcrime.securesms.logging.Log;
|
|
||||||
|
|
||||||
import net.sqlcipher.database.SQLiteDatabase;
|
import net.sqlcipher.database.SQLiteDatabase;
|
||||||
import net.sqlcipher.database.SQLiteDatabaseHook;
|
import net.sqlcipher.database.SQLiteDatabaseHook;
|
||||||
import net.sqlcipher.database.SQLiteOpenHelper;
|
import net.sqlcipher.database.SQLiteOpenHelper;
|
||||||
@ -20,11 +16,13 @@ import net.sqlcipher.database.SQLiteOpenHelper;
|
|||||||
import org.thoughtcrime.securesms.ApplicationContext;
|
import org.thoughtcrime.securesms.ApplicationContext;
|
||||||
import org.thoughtcrime.securesms.crypto.DatabaseSecret;
|
import org.thoughtcrime.securesms.crypto.DatabaseSecret;
|
||||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||||
|
import org.thoughtcrime.securesms.database.Address;
|
||||||
import org.thoughtcrime.securesms.database.AttachmentDatabase;
|
import org.thoughtcrime.securesms.database.AttachmentDatabase;
|
||||||
import org.thoughtcrime.securesms.database.DraftDatabase;
|
import org.thoughtcrime.securesms.database.DraftDatabase;
|
||||||
import org.thoughtcrime.securesms.database.GroupDatabase;
|
import org.thoughtcrime.securesms.database.GroupDatabase;
|
||||||
import org.thoughtcrime.securesms.database.GroupReceiptDatabase;
|
import org.thoughtcrime.securesms.database.GroupReceiptDatabase;
|
||||||
import org.thoughtcrime.securesms.database.IdentityDatabase;
|
import org.thoughtcrime.securesms.database.IdentityDatabase;
|
||||||
|
import org.thoughtcrime.securesms.database.JobDatabase;
|
||||||
import org.thoughtcrime.securesms.database.MmsDatabase;
|
import org.thoughtcrime.securesms.database.MmsDatabase;
|
||||||
import org.thoughtcrime.securesms.database.OneTimePreKeyDatabase;
|
import org.thoughtcrime.securesms.database.OneTimePreKeyDatabase;
|
||||||
import org.thoughtcrime.securesms.database.PushDatabase;
|
import org.thoughtcrime.securesms.database.PushDatabase;
|
||||||
@ -35,10 +33,11 @@ import org.thoughtcrime.securesms.database.SignedPreKeyDatabase;
|
|||||||
import org.thoughtcrime.securesms.database.SmsDatabase;
|
import org.thoughtcrime.securesms.database.SmsDatabase;
|
||||||
import org.thoughtcrime.securesms.database.ThreadDatabase;
|
import org.thoughtcrime.securesms.database.ThreadDatabase;
|
||||||
import org.thoughtcrime.securesms.jobs.RefreshPreKeysJob;
|
import org.thoughtcrime.securesms.jobs.RefreshPreKeysJob;
|
||||||
|
import org.thoughtcrime.securesms.logging.Log;
|
||||||
import org.thoughtcrime.securesms.loki.LokiAPIDatabase;
|
import org.thoughtcrime.securesms.loki.LokiAPIDatabase;
|
||||||
import org.thoughtcrime.securesms.loki.LokiContactPreKeyDatabase;
|
import org.thoughtcrime.securesms.loki.LokiContactPreKeyDatabase;
|
||||||
|
import org.thoughtcrime.securesms.loki.LokiMessageFriendRequestDatabase;
|
||||||
import org.thoughtcrime.securesms.loki.LokiPreKeyBundleDatabase;
|
import org.thoughtcrime.securesms.loki.LokiPreKeyBundleDatabase;
|
||||||
import org.thoughtcrime.securesms.loki.LokiSmsFriendRequestDatabase;
|
|
||||||
import org.thoughtcrime.securesms.loki.LokiThreadFriendRequestDatabase;
|
import org.thoughtcrime.securesms.loki.LokiThreadFriendRequestDatabase;
|
||||||
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
||||||
import org.thoughtcrime.securesms.service.KeyCachingService;
|
import org.thoughtcrime.securesms.service.KeyCachingService;
|
||||||
@ -122,7 +121,7 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
|
|||||||
db.execSQL(LokiAPIDatabase.getCreateReceivedMessageHashValuesTableCommand());
|
db.execSQL(LokiAPIDatabase.getCreateReceivedMessageHashValuesTableCommand());
|
||||||
db.execSQL(LokiPreKeyBundleDatabase.getCreateTableCommand());
|
db.execSQL(LokiPreKeyBundleDatabase.getCreateTableCommand());
|
||||||
db.execSQL(LokiContactPreKeyDatabase.getCreateTableCommand());
|
db.execSQL(LokiContactPreKeyDatabase.getCreateTableCommand());
|
||||||
db.execSQL(LokiSmsFriendRequestDatabase.getCreateTableCommand());
|
db.execSQL(LokiMessageFriendRequestDatabase.getCreateTableCommand());
|
||||||
db.execSQL(LokiThreadFriendRequestDatabase.getCreateTableCommand());
|
db.execSQL(LokiThreadFriendRequestDatabase.getCreateTableCommand());
|
||||||
|
|
||||||
executeStatements(db, SmsDatabase.CREATE_INDEXS);
|
executeStatements(db, SmsDatabase.CREATE_INDEXS);
|
||||||
|
@ -830,7 +830,7 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
|
|||||||
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdIfExistsFor(recipient);
|
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdIfExistsFor(recipient);
|
||||||
|
|
||||||
LokiThreadFriendRequestDatabase database = DatabaseFactory.getLokiThreadFriendRequestDatabase(context);
|
LokiThreadFriendRequestDatabase database = DatabaseFactory.getLokiThreadFriendRequestDatabase(context);
|
||||||
int friendRequestStatus = database.getFriendRequestStatus(threadId);
|
LokiFriendRequestStatus friendRequestStatus = database.getFriendRequestStatus(threadId);
|
||||||
if (envelope.isFriendRequest()) {
|
if (envelope.isFriendRequest()) {
|
||||||
if (friendRequestStatus == LokiFriendRequestStatus.REQUEST_SENT) {
|
if (friendRequestStatus == LokiFriendRequestStatus.REQUEST_SENT) {
|
||||||
// This can happen if Alice sent Bob a friend request, Bob declined, but then Bob changed his
|
// This can happen if Alice sent Bob a friend request, Bob declined, but then Bob changed his
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
package org.thoughtcrime.securesms.loki;
|
package org.thoughtcrime.securesms.loki
|
||||||
|
|
||||||
public class LokiFriendRequestStatus {
|
enum class LokiFriendRequestStatus(val rawValue: Int) {
|
||||||
// New conversation; no messages sent or received.
|
// New conversation; no messages sent or received.
|
||||||
public static final int NONE = 0;
|
NONE(0),
|
||||||
// This state is used to lock the input early while sending.
|
// This state is used to lock the input early while sending.
|
||||||
public static final int REQUEST_SENDING = 1;
|
REQUEST_SENDING(1),
|
||||||
// Friend request sent; awaiting response.
|
// Friend request sent; awaiting response.
|
||||||
public static final int REQUEST_SENT = 2;
|
REQUEST_SENT(2),
|
||||||
// Friend request received; awaiting user input.
|
// Friend request received; awaiting user input.
|
||||||
public static final int REQUEST_RECEIVED = 3;
|
REQUEST_RECEIVED(3),
|
||||||
// We are friends with the user in this thread.
|
// We are friends with the user in this thread.
|
||||||
public static final int FRIENDS = 4;
|
FRIENDS(4),
|
||||||
// A friend request was sent, but it timed out (i.e other user didn't accept within the allocated time)
|
// A friend request was sent, but it timed out (i.e other user didn't accept within the allocated time)
|
||||||
public static final int REQUEST_EXPIRED = 5;
|
REQUEST_EXPIRED(5)
|
||||||
}
|
}
|
||||||
|
|
@ -5,10 +5,7 @@ import android.content.Context
|
|||||||
import org.thoughtcrime.securesms.database.Database
|
import org.thoughtcrime.securesms.database.Database
|
||||||
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper
|
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper
|
||||||
|
|
||||||
/**
|
class LokiMessageFriendRequestDatabase(context: Context, helper: SQLCipherOpenHelper) : Database(context, helper) {
|
||||||
* A database for associating friend request data to Sms
|
|
||||||
*/
|
|
||||||
class LokiSmsFriendRequestDatabase(context: Context, helper: SQLCipherOpenHelper) : Database(context, helper) {
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val tableName = "loki_sms_friend_request_database"
|
private val tableName = "loki_sms_friend_request_database"
|
||||||
@ -21,7 +18,7 @@ class LokiSmsFriendRequestDatabase(context: Context, helper: SQLCipherOpenHelper
|
|||||||
|
|
||||||
fun getIsFriendRequest(messageId: Long): Boolean {
|
fun getIsFriendRequest(messageId: Long): Boolean {
|
||||||
val database = databaseHelper.readableDatabase
|
val database = databaseHelper.readableDatabase
|
||||||
return database.get(tableName, ID_WHERE, arrayOf(messageId.toString())) { cursor ->
|
return database.get(tableName, ID_WHERE, arrayOf( messageId.toString() )) { cursor ->
|
||||||
val rawIsFriendRequest = cursor.getInt(isFriendRequest)
|
val rawIsFriendRequest = cursor.getInt(isFriendRequest)
|
||||||
rawIsFriendRequest == 1
|
rawIsFriendRequest == 1
|
||||||
} ?: false
|
} ?: false
|
||||||
@ -36,6 +33,6 @@ class LokiSmsFriendRequestDatabase(context: Context, helper: SQLCipherOpenHelper
|
|||||||
contentValues.put(smsId, messageId)
|
contentValues.put(smsId, messageId)
|
||||||
contentValues.put(Companion.isFriendRequest, rawIsFriendRequest)
|
contentValues.put(Companion.isFriendRequest, rawIsFriendRequest)
|
||||||
|
|
||||||
database.insertOrUpdate(tableName, contentValues, ID_WHERE, arrayOf(messageId.toString()))
|
database.insertOrUpdate(tableName, contentValues, ID_WHERE, arrayOf( messageId.toString() ))
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,9 +5,6 @@ import android.content.Context
|
|||||||
import org.thoughtcrime.securesms.database.Database
|
import org.thoughtcrime.securesms.database.Database
|
||||||
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper
|
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper
|
||||||
|
|
||||||
/**
|
|
||||||
* A database for associating friend request data to Threads
|
|
||||||
*/
|
|
||||||
class LokiThreadFriendRequestDatabase(context: Context, helper: SQLCipherOpenHelper) : Database(context, helper) {
|
class LokiThreadFriendRequestDatabase(context: Context, helper: SQLCipherOpenHelper) : Database(context, helper) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@ -19,20 +16,24 @@ class LokiThreadFriendRequestDatabase(context: Context, helper: SQLCipherOpenHel
|
|||||||
val createTableCommand = "CREATE TABLE $tableName ($threadId INTEGER PRIMARY KEY, $friendRequestStatus INTEGER DEFAULT 0);"
|
val createTableCommand = "CREATE TABLE $tableName ($threadId INTEGER PRIMARY KEY, $friendRequestStatus INTEGER DEFAULT 0);"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getFriendRequestStatus(threadId: Long): Int {
|
fun getFriendRequestStatus(threadId: Long): LokiFriendRequestStatus {
|
||||||
val db = databaseHelper.readableDatabase
|
val db = databaseHelper.readableDatabase
|
||||||
return db.get(tableName, ID_WHERE, arrayOf(threadId.toString())) { cursor ->
|
val result = db.get(tableName, ID_WHERE, arrayOf( threadId.toString() )) { cursor ->
|
||||||
cursor.getInt(friendRequestStatus)
|
cursor.getInt(friendRequestStatus)
|
||||||
} ?: LokiFriendRequestStatus.NONE
|
}
|
||||||
|
return if (result != null) {
|
||||||
|
LokiFriendRequestStatus.values().first { it.rawValue == result }
|
||||||
|
} else {
|
||||||
|
LokiFriendRequestStatus.NONE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setFriendRequestStatus(threadId: Long, status: Int) {
|
fun setFriendRequestStatus(threadId: Long, status: LokiFriendRequestStatus) {
|
||||||
val database = databaseHelper.writableDatabase
|
val database = databaseHelper.writableDatabase
|
||||||
val contentValues = ContentValues(1)
|
val contentValues = ContentValues(1)
|
||||||
contentValues.put(Companion.threadId, threadId)
|
contentValues.put(Companion.threadId, threadId)
|
||||||
contentValues.put(friendRequestStatus, status)
|
contentValues.put(friendRequestStatus, status.rawValue)
|
||||||
|
database.insertOrUpdate(tableName, contentValues, ID_WHERE, arrayOf( threadId.toString() ))
|
||||||
database.insertOrUpdate(tableName, contentValues, ID_WHERE, arrayOf(threadId.toString()))
|
|
||||||
notifyConversationListListeners()
|
notifyConversationListListeners()
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user