mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Migrate RecipientDatabase to Kotlin.
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package org.thoughtcrime.securesms.database
|
||||
|
||||
import android.database.Cursor
|
||||
import org.thoughtcrime.securesms.util.CursorUtil
|
||||
import org.whispersystems.libsignal.util.guava.Optional
|
||||
|
||||
fun Cursor.requireString(column: String): String? {
|
||||
return CursorUtil.requireString(this, column)
|
||||
}
|
||||
|
||||
fun Cursor.requireNonNullString(column: String): String {
|
||||
return CursorUtil.requireString(this, column)!!
|
||||
}
|
||||
|
||||
fun Cursor.optionalString(column: String): Optional<String> {
|
||||
return CursorUtil.getString(this, column)
|
||||
}
|
||||
|
||||
fun Cursor.requireInt(column: String): Int {
|
||||
return CursorUtil.requireInt(this, column)
|
||||
}
|
||||
|
||||
fun Cursor.optionalInt(column: String): Optional<Int> {
|
||||
return CursorUtil.getInt(this, column)
|
||||
}
|
||||
|
||||
fun Cursor.requireFloat(column: String): Float {
|
||||
return CursorUtil.requireFloat(this, column)
|
||||
}
|
||||
|
||||
fun Cursor.requireLong(column: String): Long {
|
||||
return CursorUtil.requireLong(this, column)
|
||||
}
|
||||
|
||||
fun Cursor.requireBoolean(column: String): Boolean {
|
||||
return CursorUtil.requireInt(this, column) != 0
|
||||
}
|
||||
|
||||
fun Cursor.optionalBoolean(column: String): Optional<Boolean> {
|
||||
return CursorUtil.getBoolean(this, column)
|
||||
}
|
||||
|
||||
fun Cursor.requireBlob(column: String): ByteArray? {
|
||||
return CursorUtil.requireBlob(this, column)
|
||||
}
|
||||
|
||||
fun Cursor.requireNonNullBlob(column: String): ByteArray {
|
||||
return CursorUtil.requireBlob(this, column)!!
|
||||
}
|
||||
|
||||
fun Cursor.optionalBlob(column: String): Optional<ByteArray> {
|
||||
return CursorUtil.getBlob(this, column)
|
||||
}
|
||||
|
||||
fun Cursor.isNull(column: String): Boolean {
|
||||
return CursorUtil.isNull(this, column)
|
||||
}
|
||||
@@ -74,4 +74,12 @@ public abstract class Database {
|
||||
public void reset(SignalDatabase databaseHelper) {
|
||||
this.databaseHelper = databaseHelper;
|
||||
}
|
||||
|
||||
protected SQLiteDatabase getReadableDatabase() {
|
||||
return databaseHelper.getSignalReadableDatabase();
|
||||
}
|
||||
|
||||
protected SQLiteDatabase getWritableDatabase() {
|
||||
return databaseHelper.getSignalWritableDatabase();
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -35,10 +35,10 @@ import org.signal.core.util.logging.Log;
|
||||
import org.signal.zkgroup.InvalidInputException;
|
||||
import org.signal.zkgroup.groups.GroupMasterKey;
|
||||
import org.thoughtcrime.securesms.database.MessageDatabase.MarkedMessageInfo;
|
||||
import org.thoughtcrime.securesms.database.RecipientDatabase.RecipientSettings;
|
||||
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
|
||||
import org.thoughtcrime.securesms.database.model.RecipientRecord;
|
||||
import org.thoughtcrime.securesms.database.model.ThreadRecord;
|
||||
import org.thoughtcrime.securesms.groups.BadGroupIdException;
|
||||
import org.thoughtcrime.securesms.groups.GroupId;
|
||||
@@ -1561,8 +1561,8 @@ public class ThreadDatabase extends Database {
|
||||
}
|
||||
|
||||
public ThreadRecord getCurrent() {
|
||||
RecipientId recipientId = RecipientId.from(CursorUtil.requireLong(cursor, ThreadDatabase.RECIPIENT_ID));
|
||||
RecipientSettings recipientSettings = RecipientDatabase.getRecipientSettings(context, cursor, ThreadDatabase.RECIPIENT_ID);
|
||||
RecipientId recipientId = RecipientId.from(CursorUtil.requireLong(cursor, ThreadDatabase.RECIPIENT_ID));
|
||||
RecipientRecord recipientSettings = SignalDatabase.recipients().getRecord(context, cursor, ThreadDatabase.RECIPIENT_ID);
|
||||
|
||||
Recipient recipient;
|
||||
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
package org.thoughtcrime.securesms.database.model
|
||||
|
||||
import android.net.Uri
|
||||
import org.signal.zkgroup.groups.GroupMasterKey
|
||||
import org.signal.zkgroup.profiles.ProfileKeyCredential
|
||||
import org.thoughtcrime.securesms.badges.models.Badge
|
||||
import org.thoughtcrime.securesms.conversation.colors.AvatarColor
|
||||
import org.thoughtcrime.securesms.conversation.colors.ChatColors
|
||||
import org.thoughtcrime.securesms.database.IdentityDatabase.VerifiedStatus
|
||||
import org.thoughtcrime.securesms.database.RecipientDatabase
|
||||
import org.thoughtcrime.securesms.database.RecipientDatabase.InsightsBannerTier
|
||||
import org.thoughtcrime.securesms.database.RecipientDatabase.MentionSetting
|
||||
import org.thoughtcrime.securesms.database.RecipientDatabase.RegisteredState
|
||||
import org.thoughtcrime.securesms.database.RecipientDatabase.UnidentifiedAccessMode
|
||||
import org.thoughtcrime.securesms.database.RecipientDatabase.VibrateState
|
||||
import org.thoughtcrime.securesms.database.model.RecipientRecord.SyncExtras
|
||||
import org.thoughtcrime.securesms.groups.GroupId
|
||||
import org.thoughtcrime.securesms.profiles.ProfileName
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.wallpaper.ChatWallpaper
|
||||
import org.whispersystems.libsignal.util.guava.Optional
|
||||
import org.whispersystems.signalservice.api.push.ACI
|
||||
|
||||
/**
|
||||
* Database model for [RecipientDatabase].
|
||||
*/
|
||||
data class RecipientRecord(
|
||||
val id: RecipientId,
|
||||
val aci: ACI?,
|
||||
val username: String?,
|
||||
val e164: String?,
|
||||
val email: String?,
|
||||
val groupId: GroupId?,
|
||||
val groupType: RecipientDatabase.GroupType,
|
||||
val isBlocked: Boolean,
|
||||
val muteUntil: Long,
|
||||
val messageVibrateState: VibrateState,
|
||||
val callVibrateState: VibrateState,
|
||||
val messageRingtone: Uri?,
|
||||
val callRingtone: Uri?,
|
||||
private val defaultSubscriptionId: Int,
|
||||
val expireMessages: Int,
|
||||
val registered: RegisteredState,
|
||||
val profileKey: ByteArray?,
|
||||
val profileKeyCredential: ProfileKeyCredential?,
|
||||
val systemProfileName: ProfileName,
|
||||
val systemDisplayName: String?,
|
||||
val systemContactPhotoUri: String?,
|
||||
val systemPhoneLabel: String?,
|
||||
val systemContactUri: String?,
|
||||
@get:JvmName("getProfileName")
|
||||
val signalProfileName: ProfileName,
|
||||
@get:JvmName("getProfileAvatar")
|
||||
val signalProfileAvatar: String?,
|
||||
@get:JvmName("hasProfileImage")
|
||||
val hasProfileImage: Boolean,
|
||||
@get:JvmName("isProfileSharing")
|
||||
val profileSharing: Boolean,
|
||||
val lastProfileFetch: Long,
|
||||
val notificationChannel: String?,
|
||||
val unidentifiedAccessMode: UnidentifiedAccessMode,
|
||||
@get:JvmName("isForceSmsSelection")
|
||||
val forceSmsSelection: Boolean,
|
||||
val rawCapabilities: Long,
|
||||
val groupsV2Capability: Recipient.Capability,
|
||||
val groupsV1MigrationCapability: Recipient.Capability,
|
||||
val senderKeyCapability: Recipient.Capability,
|
||||
val announcementGroupCapability: Recipient.Capability,
|
||||
val changeNumberCapability: Recipient.Capability,
|
||||
val insightsBannerTier: InsightsBannerTier,
|
||||
val storageId: ByteArray?,
|
||||
val mentionSetting: MentionSetting,
|
||||
val wallpaper: ChatWallpaper?,
|
||||
val chatColors: ChatColors?,
|
||||
val avatarColor: AvatarColor,
|
||||
val about: String?,
|
||||
val aboutEmoji: String?,
|
||||
val syncExtras: SyncExtras,
|
||||
val extras: Recipient.Extras?,
|
||||
@get:JvmName("hasGroupsInCommon")
|
||||
val hasGroupsInCommon: Boolean,
|
||||
val badges: List<Badge>
|
||||
) {
|
||||
|
||||
fun getDefaultSubscriptionId(): Optional<Int> {
|
||||
return if (defaultSubscriptionId != -1) Optional.of(defaultSubscriptionId) else Optional.absent()
|
||||
}
|
||||
|
||||
/**
|
||||
* A bundle of data that's only necessary when syncing to storage service, not for a
|
||||
* [Recipient].
|
||||
*/
|
||||
data class SyncExtras(
|
||||
val storageProto: ByteArray?,
|
||||
val groupMasterKey: GroupMasterKey?,
|
||||
val identityKey: ByteArray?,
|
||||
val identityStatus: VerifiedStatus,
|
||||
val isArchived: Boolean,
|
||||
val isForcedUnread: Boolean
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user