From 135fde68c169746985bf4fc81a58dccccc2abed5 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 23 Mar 2022 12:56:11 -0400 Subject: [PATCH] Migrate some cursor utils to core-util. --- .../securesms/backup/FullBackupExporter.java | 2 +- .../securesms/backup/FullBackupImporter.java | 2 +- .../ConversationSettingsViewModel.kt | 2 +- .../InternalConversationSettingsFragment.kt | 2 +- .../securesms/contacts/ContactAccessor.java | 2 +- .../securesms/contacts/ContactRepository.java | 2 +- .../contacts/ContactSelectionListAdapter.java | 2 +- .../ContactSearchPagedDataSourceRepository.kt | 2 +- .../contacts/sync/DirectoryHelper.java | 4 +- .../contacts/sync/SystemContactsRepository.kt | 11 ++-- .../model/ConversationReader.java | 2 +- .../securesms/crypto/DatabaseSecret.java | 2 +- .../securesms/crypto/MasterCipher.java | 2 +- .../securesms/crypto/PublicKey.java | 2 +- .../database/AttachmentDatabase.java | 4 +- .../securesms/database/ChatColorsDatabase.kt | 4 +- .../database/DistributionListDatabase.kt | 7 ++- .../database/DonationReceiptDatabase.kt | 4 +- .../securesms/database/DraftDatabase.java | 4 +- .../database/EmojiSearchDatabase.java | 4 +- .../database/GroupCallRingDatabase.kt | 4 +- .../securesms/database/GroupDatabase.java | 4 +- .../database/GroupReceiptDatabase.java | 2 +- .../securesms/database/IdentityDatabase.java | 4 +- .../securesms/database/JobDatabase.java | 2 +- .../securesms/database/KeyValueDatabase.java | 2 +- .../database/LocalMetricsDatabase.kt | 4 +- .../securesms/database/LogDatabase.kt | 4 +- .../securesms/database/MegaphoneDatabase.java | 2 +- .../securesms/database/MentionDatabase.java | 4 +- .../securesms/database/MessageDatabase.java | 4 +- .../database/MessageSendLogDatabase.kt | 4 +- .../securesms/database/MmsDatabase.java | 4 +- .../securesms/database/MmsSmsDatabase.java | 4 +- .../database/NotificationProfileDatabase.kt | 7 ++- .../database/OneTimePreKeyDatabase.kt | 3 +- .../securesms/database/PaymentDatabase.java | 4 +- .../database/PendingRetryReceiptDatabase.java | 4 +- .../securesms/database/ReactionDatabase.kt | 4 +- .../securesms/database/RecipientDatabase.kt | 14 ++++- .../database/RemappedRecordsDatabase.java | 2 +- .../securesms/database/SenderKeyDatabase.java | 4 +- .../database/SenderKeySharedDatabase.java | 4 +- .../securesms/database/SessionDatabase.kt | 7 ++- .../securesms/database/SignalDatabase.kt | 2 +- .../database/SignedPreKeyDatabase.kt | 5 +- .../securesms/database/SmsDatabase.java | 4 +- .../SqlCipherDeletingErrorHandler.java | 2 +- .../database/SqlCipherErrorHandler.kt | 2 +- .../securesms/database/StickerDatabase.java | 4 +- .../securesms/database/ThreadDatabase.java | 4 +- .../database/UnknownStorageIdDatabase.java | 2 +- .../database/helpers/ClassicOpenHelper.java | 2 +- .../helpers/SignalDatabaseMigrations.kt | 8 +-- .../database/model/AvatarPickerDatabase.kt | 4 +- .../database/model/DistributionListId.java | 2 + .../dependencies/ApplicationDependencies.java | 2 +- .../securesms/emoji/EmojiJsonParser.kt | 2 +- .../securesms/groups/GroupId.java | 2 +- .../securesms/jobs/AttachmentDownloadJob.java | 2 +- .../jobs/AvatarGroupsV1DownloadJob.java | 2 +- .../securesms/jobs/MmsSendJob.java | 2 +- .../jobs/MultiDeviceReadUpdateJob.java | 4 +- .../MultiDeviceStickerPackOperationJob.java | 2 +- .../jobs/MultiDeviceStickerPackSyncJob.java | 2 +- .../jobs/MultiDeviceViewedUpdateJob.java | 4 +- .../securesms/jobs/PushSendJob.java | 2 +- .../securesms/jobs/RetrieveProfileJob.java | 3 +- .../jobs/RetrieveReleaseChannelJob.kt | 2 +- .../securesms/jobs/SendReadReceiptJob.java | 3 +- .../securesms/jobs/SendViewedReceiptJob.java | 3 +- .../securesms/jobs/StickerDownloadJob.java | 2 +- .../jobs/StickerPackDownloadJob.java | 2 +- .../securesms/jobs/UpdateApkJob.java | 2 +- .../linkpreview/LinkPreviewRepository.java | 2 +- .../securesms/mediasend/MediaRepository.java | 2 +- .../v2/capture/MediaCaptureRepository.kt | 2 +- .../messages/MessageContentProcessor.java | 3 +- .../notifications/DoNotDisturbUtil.java | 2 +- .../v2/NotificationStateProvider.kt | 2 +- .../recipients/LiveRecipientCache.java | 2 +- .../securesms/recipients/RecipientId.java | 2 +- .../java/org/thoughtcrime/securesms/s3/S3.kt | 2 +- .../securesms/search/SearchRepository.java | 2 +- .../service/UpdateApkReadyListener.java | 2 +- .../StickerPackPreviewRepository.java | 2 +- .../stickers/StickerRemoteUriFetcher.java | 2 +- .../securesms/stickers/StickerUrl.java | 2 +- .../BaseStoryRecipientSelectionRepository.kt | 2 +- .../org/thoughtcrime/securesms/util/Util.java | 11 ---- .../securesms/database/GV2Transformer.kt | 2 + .../database/GV2UpdateTransformer.kt | 3 +- .../MessageBitmaskColumnTransformer.kt | 1 + .../ContactSearchSelectionBuilderTest.kt | 2 +- .../securesms/database/MmsSmsDatabaseTest.kt | 2 +- .../database/RecipientDatabaseTestUtils.kt | 2 +- .../securesms/groups/GroupIdTest.java | 2 +- ...oupId_v1_v2_migration_derivation_Test.java | 2 +- .../groups/GroupManagerV2Test_edit.kt | 2 +- .../groups/v2/GroupInviteLinkUrlTest.java | 2 +- .../processing/GroupsV2StateProcessorTest.kt | 2 +- .../securesms/testutil/HexDeserializer.java | 2 +- .../securesms/util/BitmaskTest.java | 1 + core-util/build.gradle | 4 ++ .../java/org/signal/core}/util/Bitmask.java | 24 +++++---- .../org/signal/core/util/Conversions.java | 7 +++ .../org/signal/core/util}/CursorExtensions.kt | 3 +- .../org/signal/core}/util/CursorUtil.java | 4 +- .../org/signal/core/util}/DatabaseId.java | 2 +- .../main/java/org/signal/core}/util/Hex.java | 2 +- .../java/org/signal/core/util/ListUtil.java | 21 ++++++++ .../java/org/signal/core}/util/SqlUtil.java | 52 +++++++++---------- .../org/signal/core/util/ListUtilTest.java | 16 +++--- .../org/signal/core}/util/SqlUtilTest.java | 20 +++++-- 114 files changed, 269 insertions(+), 204 deletions(-) rename {app/src/main/java/org/thoughtcrime/securesms => core-util/src/main/java/org/signal/core}/util/Bitmask.java (65%) rename {app/src/main/java/org/thoughtcrime/securesms/database => core-util/src/main/java/org/signal/core/util}/CursorExtensions.kt (93%) rename {app/src/main/java/org/thoughtcrime/securesms => core-util/src/main/java/org/signal/core}/util/CursorUtil.java (95%) rename {app/src/main/java/org/thoughtcrime/securesms/database/model => core-util/src/main/java/org/signal/core/util}/DatabaseId.java (66%) rename {app/src/main/java/org/thoughtcrime/securesms => core-util/src/main/java/org/signal/core}/util/Hex.java (99%) create mode 100644 core-util/src/main/java/org/signal/core/util/ListUtil.java rename {app/src/main/java/org/thoughtcrime/securesms => core-util/src/main/java/org/signal/core}/util/SqlUtil.java (82%) rename app/src/test/java/org/thoughtcrime/securesms/util/UtilTest.java => core-util/src/test/java/org/signal/core/util/ListUtilTest.java (78%) rename {app/src/test/java/org/thoughtcrime/securesms => core-util/src/test/java/org/signal/core}/util/SqlUtilTest.java (96%) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupExporter.java b/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupExporter.java index 125cab42c3..c0cf4c0497 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupExporter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupExporter.java @@ -46,7 +46,7 @@ import org.thoughtcrime.securesms.keyvalue.KeyValueDataSet; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.profiles.AvatarHelper; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.SetUtil; import org.thoughtcrime.securesms.util.Stopwatch; import org.thoughtcrime.securesms.util.TextSecurePreferences; diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupImporter.java b/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupImporter.java index ac56bb0a79..75676e90e1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupImporter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/FullBackupImporter.java @@ -36,7 +36,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.profiles.AvatarHelper; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.util.BackupUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.whispersystems.libsignal.kdf.HKDFv3; import org.whispersystems.libsignal.util.ByteUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt index 7b73491e71..aff966bc6e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt @@ -8,6 +8,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import io.reactivex.rxjava3.disposables.CompositeDisposable import io.reactivex.rxjava3.kotlin.plusAssign +import org.signal.core.util.CursorUtil import org.signal.core.util.ThreadUtil import org.signal.core.util.concurrent.SignalExecutors import org.thoughtcrime.securesms.components.settings.conversation.preferences.ButtonStripPreference @@ -21,7 +22,6 @@ import org.thoughtcrime.securesms.groups.v2.GroupAddMembersResult import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.RecipientUtil -import org.thoughtcrime.securesms.util.CursorUtil import org.thoughtcrime.securesms.util.FeatureFlags import org.thoughtcrime.securesms.util.SingleLiveEvent import org.thoughtcrime.securesms.util.livedata.LiveDataUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt index 9b421be88e..18a80bf878 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt @@ -7,6 +7,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import com.google.android.material.dialog.MaterialAlertDialogBuilder +import org.signal.core.util.Hex import org.signal.core.util.concurrent.SignalExecutors import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.settings.DSLConfiguration @@ -22,7 +23,6 @@ import org.thoughtcrime.securesms.recipients.RecipientForeverObserver import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.subscription.Subscriber import org.thoughtcrime.securesms.util.Base64 -import org.thoughtcrime.securesms.util.Hex import org.thoughtcrime.securesms.util.SpanUtil import org.thoughtcrime.securesms.util.Util import org.thoughtcrime.securesms.util.livedata.Store diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactAccessor.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactAccessor.java index 62a77800ce..11ca83f77a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactAccessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactAccessor.java @@ -30,7 +30,7 @@ import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import java.util.ArrayList; import java.util.HashSet; diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactRepository.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactRepository.java index 27c8de5879..e267ae8370 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactRepository.java @@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.database.RecipientDatabase; import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter; import org.thoughtcrime.securesms.recipients.Recipient; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.util.Pair; diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java index 82ae02c5df..228203042c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java @@ -41,7 +41,7 @@ import org.thoughtcrime.securesms.database.CursorRecyclerViewAdapter; import org.thoughtcrime.securesms.mms.GlideRequests; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.util.CharacterIterable; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.StickyHeaderDecoration.StickyHeaderAdapter; import org.thoughtcrime.securesms.util.Util; diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt index 183e917266..d2de3b0e50 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.contacts.paged import android.content.Context import android.database.Cursor +import org.signal.core.util.CursorUtil import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.contacts.ContactRepository import org.thoughtcrime.securesms.database.DistributionListDatabase @@ -10,7 +11,6 @@ import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.ThreadDatabase import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId -import org.thoughtcrime.securesms.util.CursorUtil /** * Database boundary interface which allows us to safely unit test the data source without diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/DirectoryHelper.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/DirectoryHelper.java index 75c59eb74d..baa7a6b917 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/DirectoryHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/DirectoryHelper.java @@ -2,8 +2,6 @@ package org.thoughtcrime.securesms.contacts.sync; import android.Manifest; import android.accounts.Account; -import android.accounts.AccountManager; -import android.content.ContentResolver; import android.content.Context; import android.content.OperationApplicationException; import android.database.Cursor; @@ -38,7 +36,7 @@ import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.registration.RegistrationUtil; import org.thoughtcrime.securesms.sms.IncomingJoinedMessage; import org.thoughtcrime.securesms.storage.StorageSyncHelper; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.ProfileUtil; import org.thoughtcrime.securesms.util.SetUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/SystemContactsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/SystemContactsRepository.kt index d25a721e06..75b441acec 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/SystemContactsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/SystemContactsRepository.kt @@ -10,13 +10,14 @@ import android.net.Uri import android.os.RemoteException import android.provider.BaseColumns import android.provider.ContactsContract +import org.signal.core.util.ListUtil +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log +import org.signal.core.util.requireInt +import org.signal.core.util.requireString import org.thoughtcrime.securesms.BuildConfig import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.database.requireInt -import org.thoughtcrime.securesms.database.requireString import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter -import org.thoughtcrime.securesms.util.SqlUtil import org.thoughtcrime.securesms.util.Util import java.util.ArrayList import java.util.HashMap @@ -92,7 +93,7 @@ object SystemContactsRepository { val operations: ArrayList = ArrayList() val currentContacts: Map = getSignalRawContacts(context, account) - val registeredChunks: List> = Util.chunk(registeredAddressList, 50) + val registeredChunks: List> = ListUtil.chunk(registeredAddressList, 50) for (registeredChunk in registeredChunks) { for (registeredAddress in registeredChunk) { if (!currentContacts.containsKey(registeredAddress)) { @@ -484,7 +485,7 @@ object SystemContactsRepository { operations: List, batchSize: Int ) { - val batches = Util.chunk(operations, batchSize) + val batches = ListUtil.chunk(operations, batchSize) for (batch in batches) { contentResolver.applyBatch(authority, ArrayList(batch)) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/model/ConversationReader.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/model/ConversationReader.java index 8658aa9256..d5c9540b3f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/model/ConversationReader.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/model/ConversationReader.java @@ -8,7 +8,7 @@ import org.thoughtcrime.securesms.database.ThreadDatabase; import org.thoughtcrime.securesms.database.model.ThreadRecord; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.recipients.Recipient; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; public class ConversationReader extends ThreadDatabase.StaticReader { diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/DatabaseSecret.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/DatabaseSecret.java index bdd425e0c8..1fa6a37664 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/DatabaseSecret.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/DatabaseSecret.java @@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.crypto; import androidx.annotation.NonNull; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import java.io.IOException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/MasterCipher.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/MasterCipher.java index 3a8f9dd22b..c9804dd805 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/MasterCipher.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/MasterCipher.java @@ -21,7 +21,7 @@ import androidx.annotation.NonNull; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.util.Base64; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.whispersystems.libsignal.InvalidMessageException; import org.whispersystems.libsignal.ecc.Curve; import org.whispersystems.libsignal.ecc.ECPrivateKey; diff --git a/app/src/main/java/org/thoughtcrime/securesms/crypto/PublicKey.java b/app/src/main/java/org/thoughtcrime/securesms/crypto/PublicKey.java index 026e45879e..2b7f99a382 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/crypto/PublicKey.java +++ b/app/src/main/java/org/thoughtcrime/securesms/crypto/PublicKey.java @@ -19,7 +19,7 @@ package org.thoughtcrime.securesms.crypto; import org.signal.core.util.Conversions; import org.signal.core.util.logging.Log; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.InvalidKeyException; import org.whispersystems.libsignal.ecc.Curve; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java index 1c258f6ab4..1553925cb7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java @@ -54,12 +54,12 @@ import org.thoughtcrime.securesms.mms.PartAuthority; import org.thoughtcrime.securesms.mms.SentMediaQuality; import org.thoughtcrime.securesms.stickers.StickerLocator; import org.thoughtcrime.securesms.util.Base64; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.FileUtils; import org.thoughtcrime.securesms.util.JsonUtils; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.SetUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.thoughtcrime.securesms.util.StorageUtil; import org.thoughtcrime.securesms.video.EncryptedMediaDataSource; import org.whispersystems.signalservice.internal.util.JsonUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ChatColorsDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ChatColorsDatabase.kt index b79b811a67..91a06f52f2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ChatColorsDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ChatColorsDatabase.kt @@ -3,12 +3,12 @@ package org.thoughtcrime.securesms.database import android.content.ContentValues import android.content.Context import android.database.Cursor +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil import org.thoughtcrime.securesms.conversation.colors.ChatColors import org.thoughtcrime.securesms.database.model.databaseprotos.ChatColor import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.keyvalue.SignalStore -import org.thoughtcrime.securesms.util.CursorUtil -import org.thoughtcrime.securesms.util.SqlUtil class ChatColorsDatabase(context: Context, databaseHelper: SignalDatabase) : Database(context, databaseHelper) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/DistributionListDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/DistributionListDatabase.kt index 2b4c57146c..2eda2ee3e7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/DistributionListDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/DistributionListDatabase.kt @@ -4,6 +4,11 @@ import android.content.ContentValues import android.content.Context import android.database.Cursor import androidx.core.content.contentValuesOf +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil +import org.signal.core.util.requireLong +import org.signal.core.util.requireNonNullString +import org.signal.core.util.requireString import org.thoughtcrime.securesms.database.model.DistributionListId import org.thoughtcrime.securesms.database.model.DistributionListPartialRecord import org.thoughtcrime.securesms.database.model.DistributionListRecord @@ -11,8 +16,6 @@ import org.thoughtcrime.securesms.database.model.StoryType import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.storage.StorageSyncHelper import org.thoughtcrime.securesms.util.Base64 -import org.thoughtcrime.securesms.util.CursorUtil -import org.thoughtcrime.securesms.util.SqlUtil import org.whispersystems.signalservice.api.push.DistributionId import java.util.UUID diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/DonationReceiptDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/DonationReceiptDatabase.kt index eaef91f915..2bdb8cc2a7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/DonationReceiptDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/DonationReceiptDatabase.kt @@ -3,10 +3,10 @@ package org.thoughtcrime.securesms.database import android.content.Context import android.database.Cursor import androidx.core.content.contentValuesOf +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil import org.signal.core.util.money.FiatMoney import org.thoughtcrime.securesms.database.model.DonationReceiptRecord -import org.thoughtcrime.securesms.util.CursorUtil -import org.thoughtcrime.securesms.util.SqlUtil import java.math.BigDecimal import java.util.Currency diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/DraftDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/DraftDatabase.java index 33bda2293a..22e1b653fa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/DraftDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/DraftDatabase.java @@ -10,8 +10,8 @@ import androidx.annotation.Nullable; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.util.CursorUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.CursorUtil; +import org.signal.core.util.SqlUtil; import java.util.LinkedList; import java.util.List; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/EmojiSearchDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/EmojiSearchDatabase.java index 02c53588cc..1438a44449 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/EmojiSearchDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/EmojiSearchDatabase.java @@ -8,9 +8,9 @@ import android.text.TextUtils; import androidx.annotation.NonNull; import org.thoughtcrime.securesms.database.model.EmojiSearchData; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.FtsUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import java.util.LinkedList; import java.util.List; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/GroupCallRingDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/GroupCallRingDatabase.kt index c3ddfee72d..ffdff03588 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/GroupCallRingDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/GroupCallRingDatabase.kt @@ -2,9 +2,9 @@ package org.thoughtcrime.securesms.database import android.content.ContentValues import android.content.Context +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil import org.signal.ringrtc.CallManager -import org.thoughtcrime.securesms.util.CursorUtil -import org.thoughtcrime.securesms.util.SqlUtil import java.util.concurrent.TimeUnit /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java index b5e9432e46..c9bc21a3fc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/GroupDatabase.java @@ -32,9 +32,9 @@ import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.SetUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.signalservice.api.groupsv2.DecryptedGroupUtil; import org.whispersystems.signalservice.api.groupsv2.GroupChangeReconstruct; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/GroupReceiptDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/GroupReceiptDatabase.java index c80af282ef..2131b1ecc4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/GroupReceiptDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/GroupReceiptDatabase.java @@ -8,7 +8,7 @@ import android.database.Cursor; import androidx.annotation.NonNull; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.whispersystems.libsignal.util.Pair; import java.util.ArrayList; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java index 233bf51d9f..6054838322 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/IdentityDatabase.java @@ -31,9 +31,9 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.util.Base64; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.IdentityUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.whispersystems.libsignal.IdentityKey; import org.whispersystems.libsignal.InvalidKeyException; import org.whispersystems.signalservice.api.util.UuidUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.java index e29a33111f..5be573d92e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/JobDatabase.java @@ -19,7 +19,7 @@ import org.thoughtcrime.securesms.jobmanager.persistence.ConstraintSpec; import org.thoughtcrime.securesms.jobmanager.persistence.DependencySpec; import org.thoughtcrime.securesms.jobmanager.persistence.FullSpec; import org.thoughtcrime.securesms.jobmanager.persistence.JobSpec; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import java.util.LinkedList; import java.util.List; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java index f371b2b27b..75d5d6d229 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/KeyValueDatabase.java @@ -16,7 +16,7 @@ import org.thoughtcrime.securesms.crypto.DatabaseSecret; import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider; import org.thoughtcrime.securesms.keyvalue.KeyValueDataSet; import org.thoughtcrime.securesms.keyvalue.KeyValuePersistentStorage; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import java.util.Collection; import java.util.Map; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/LocalMetricsDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/LocalMetricsDatabase.kt index ef7fc05b1f..5025910971 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/LocalMetricsDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/LocalMetricsDatabase.kt @@ -5,12 +5,12 @@ import android.app.Application import android.content.ContentValues import net.zetetic.database.sqlcipher.SQLiteDatabase import net.zetetic.database.sqlcipher.SQLiteOpenHelper +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.crypto.DatabaseSecret import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider import org.thoughtcrime.securesms.database.model.LocalMetricsEvent -import org.thoughtcrime.securesms.util.CursorUtil -import org.thoughtcrime.securesms.util.SqlUtil import java.util.concurrent.TimeUnit /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/LogDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/LogDatabase.kt index 60821cabaa..2b192abf7a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/LogDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/LogDatabase.kt @@ -6,13 +6,13 @@ import android.content.ContentValues import android.database.Cursor import net.zetetic.database.sqlcipher.SQLiteDatabase import net.zetetic.database.sqlcipher.SQLiteOpenHelper +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.crypto.DatabaseSecret import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider import org.thoughtcrime.securesms.database.model.LogEntry import org.thoughtcrime.securesms.util.ByteUnit -import org.thoughtcrime.securesms.util.CursorUtil -import org.thoughtcrime.securesms.util.SqlUtil import org.thoughtcrime.securesms.util.Stopwatch import java.io.Closeable import java.util.concurrent.TimeUnit diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java index aa22865114..5e34856059 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MegaphoneDatabase.java @@ -15,7 +15,7 @@ import org.thoughtcrime.securesms.crypto.DatabaseSecret; import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider; import org.thoughtcrime.securesms.database.model.MegaphoneRecord; import org.thoughtcrime.securesms.megaphone.Megaphones.Event; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import java.util.ArrayList; import java.util.Collection; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MentionDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MentionDatabase.java index 53da2f492e..9d911ecb65 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MentionDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MentionDatabase.java @@ -12,8 +12,8 @@ import com.annimon.stream.Stream; import org.thoughtcrime.securesms.database.model.Mention; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.util.CursorUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.CursorUtil; +import org.signal.core.util.SqlUtil; import java.util.Collection; import java.util.HashMap; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MessageDatabase.java index 36db28ced9..d5c3e1e793 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageDatabase.java @@ -31,9 +31,9 @@ import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.revealable.ViewOnceExpirationInfo; import org.thoughtcrime.securesms.sms.IncomingTextMessage; import org.thoughtcrime.securesms.sms.OutgoingTextMessage; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.JsonUtils; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.IdentityKey; import org.whispersystems.libsignal.util.Pair; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageSendLogDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageSendLogDatabase.kt index 417128e9ec..4ca2d053d3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageSendLogDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageSendLogDatabase.kt @@ -3,15 +3,15 @@ package org.thoughtcrime.securesms.database import android.content.ContentValues import android.content.Context import net.zetetic.database.sqlcipher.SQLiteConstraintException +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.database.model.MessageId import org.thoughtcrime.securesms.database.model.MessageLogEntry import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId -import org.thoughtcrime.securesms.util.CursorUtil import org.thoughtcrime.securesms.util.FeatureFlags import org.thoughtcrime.securesms.util.RecipientAccessList -import org.thoughtcrime.securesms.util.SqlUtil import org.whispersystems.signalservice.api.crypto.ContentHint import org.whispersystems.signalservice.api.messages.SendMessageResult import org.whispersystems.signalservice.internal.push.SignalServiceProtos diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java index 6516f2e148..4fcac87719 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -78,10 +78,10 @@ import org.thoughtcrime.securesms.revealable.ViewOnceUtil; import org.thoughtcrime.securesms.sms.IncomingTextMessage; import org.thoughtcrime.securesms.sms.OutgoingTextMessage; import org.thoughtcrime.securesms.stories.Stories; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.JsonUtils; import org.thoughtcrime.securesms.util.MediaUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.util.Pair; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java index b82ee6c486..052821c272 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java @@ -35,8 +35,8 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.notifications.v2.MessageNotifierV2; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.util.CursorUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.CursorUtil; +import org.signal.core.util.SqlUtil; import org.whispersystems.libsignal.util.Pair; import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/NotificationProfileDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/NotificationProfileDatabase.kt index 5873b51610..ad350ef05a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/NotificationProfileDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/NotificationProfileDatabase.kt @@ -4,12 +4,17 @@ import android.content.ContentValues import android.content.Context import android.database.Cursor import net.zetetic.database.sqlcipher.SQLiteConstraintException +import org.signal.core.util.SqlUtil +import org.signal.core.util.requireBoolean +import org.signal.core.util.requireInt +import org.signal.core.util.requireLong +import org.signal.core.util.requireString +import org.signal.core.util.toInt import org.thoughtcrime.securesms.conversation.colors.AvatarColor import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile import org.thoughtcrime.securesms.notifications.profiles.NotificationProfileSchedule import org.thoughtcrime.securesms.recipients.RecipientId -import org.thoughtcrime.securesms.util.SqlUtil import java.time.DayOfWeek /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/OneTimePreKeyDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/OneTimePreKeyDatabase.kt index 89199695fe..4f91ad1078 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/OneTimePreKeyDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/OneTimePreKeyDatabase.kt @@ -2,9 +2,10 @@ package org.thoughtcrime.securesms.database import android.content.Context import androidx.core.content.contentValuesOf +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log +import org.signal.core.util.requireNonNullString import org.thoughtcrime.securesms.util.Base64 -import org.thoughtcrime.securesms.util.SqlUtil import org.whispersystems.libsignal.InvalidKeyException import org.whispersystems.libsignal.ecc.Curve import org.whispersystems.libsignal.ecc.ECKeyPair diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/PaymentDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/PaymentDatabase.java index 22555797d2..9d05ff7239 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/PaymentDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/PaymentDatabase.java @@ -27,8 +27,8 @@ import org.thoughtcrime.securesms.payments.State; import org.thoughtcrime.securesms.payments.proto.PaymentMetaData; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.util.Base64; -import org.thoughtcrime.securesms.util.CursorUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.CursorUtil; +import org.signal.core.util.SqlUtil; import org.thoughtcrime.securesms.util.livedata.LiveDataUtil; import org.whispersystems.signalservice.api.payments.Money; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/PendingRetryReceiptDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/PendingRetryReceiptDatabase.java index d19b7b6baa..317fa24f97 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/PendingRetryReceiptDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/PendingRetryReceiptDatabase.java @@ -10,8 +10,8 @@ import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.thoughtcrime.securesms.database.model.PendingRetryReceiptModel; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.util.CursorUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.CursorUtil; +import org.signal.core.util.SqlUtil; import java.util.LinkedList; import java.util.List; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ReactionDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ReactionDatabase.kt index 2f01ac5e4a..04db0eefc1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ReactionDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ReactionDatabase.kt @@ -3,12 +3,12 @@ package org.thoughtcrime.securesms.database import android.content.ContentValues import android.content.Context import android.database.Cursor +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil import org.thoughtcrime.securesms.database.model.MessageId import org.thoughtcrime.securesms.database.model.ReactionRecord import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.recipients.RecipientId -import org.thoughtcrime.securesms.util.CursorUtil -import org.thoughtcrime.securesms.util.SqlUtil /** * Store reactions on messages. diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt index 6cab2c8002..0a511a2fc3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.kt @@ -10,8 +10,20 @@ import androidx.core.content.contentValuesOf import com.google.protobuf.ByteString import com.google.protobuf.InvalidProtocolBufferException import net.zetetic.database.sqlcipher.SQLiteConstraintException +import org.signal.core.util.Bitmask +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log +import org.signal.core.util.optionalBlob +import org.signal.core.util.optionalBoolean +import org.signal.core.util.optionalInt +import org.signal.core.util.optionalString import org.signal.core.util.or +import org.signal.core.util.requireBlob +import org.signal.core.util.requireBoolean +import org.signal.core.util.requireInt +import org.signal.core.util.requireLong +import org.signal.core.util.requireNonNullString +import org.signal.core.util.requireString import org.signal.storageservice.protos.groups.local.DecryptedGroup import org.signal.zkgroup.InvalidInputException import org.signal.zkgroup.profiles.ProfileKey @@ -67,11 +79,9 @@ import org.thoughtcrime.securesms.storage.StorageRecordUpdate import org.thoughtcrime.securesms.storage.StorageSyncHelper import org.thoughtcrime.securesms.storage.StorageSyncModels import org.thoughtcrime.securesms.util.Base64 -import org.thoughtcrime.securesms.util.Bitmask import org.thoughtcrime.securesms.util.GroupUtil import org.thoughtcrime.securesms.util.IdentityUtil import org.thoughtcrime.securesms.util.ProfileUtil -import org.thoughtcrime.securesms.util.SqlUtil import org.thoughtcrime.securesms.util.StringUtil import org.thoughtcrime.securesms.util.Util import org.thoughtcrime.securesms.wallpaper.ChatWallpaper diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RemappedRecordsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/RemappedRecordsDatabase.java index 4a86cdd654..47b40ba5d8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RemappedRecordsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RemappedRecordsDatabase.java @@ -7,7 +7,7 @@ import android.database.Cursor; import androidx.annotation.NonNull; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import java.util.HashMap; import java.util.LinkedList; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeyDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeyDatabase.java index 453401b08d..5a3a791b67 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeyDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeyDatabase.java @@ -10,8 +10,8 @@ import androidx.annotation.Nullable; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.keyvalue.SignalStore; -import org.thoughtcrime.securesms.util.CursorUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.CursorUtil; +import org.signal.core.util.SqlUtil; import org.whispersystems.libsignal.SignalProtocolAddress; import org.whispersystems.libsignal.groups.state.SenderKeyRecord; import org.whispersystems.signalservice.api.push.DistributionId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeySharedDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeySharedDatabase.java index 3487fa0b05..2e44882b58 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeySharedDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SenderKeySharedDatabase.java @@ -10,8 +10,8 @@ import androidx.annotation.NonNull; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.util.CursorUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.CursorUtil; +import org.signal.core.util.SqlUtil; import org.whispersystems.libsignal.SignalProtocolAddress; import org.whispersystems.signalservice.api.push.DistributionId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SessionDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SessionDatabase.kt index 6033dda676..884f794221 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SessionDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SessionDatabase.kt @@ -1,9 +1,12 @@ package org.thoughtcrime.securesms.database import android.content.Context +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log -import org.thoughtcrime.securesms.util.CursorUtil -import org.thoughtcrime.securesms.util.SqlUtil +import org.signal.core.util.requireInt +import org.signal.core.util.requireNonNullBlob +import org.signal.core.util.requireNonNullString import org.whispersystems.libsignal.SignalProtocolAddress import org.whispersystems.libsignal.state.SessionRecord import org.whispersystems.signalservice.api.push.ServiceId diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt index 74c6a121b5..a44e06fe9a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SignalDatabase.kt @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.database import android.app.Application import android.content.Context import net.zetetic.database.sqlcipher.SQLiteOpenHelper +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.crypto.AttachmentSecret import org.thoughtcrime.securesms.crypto.DatabaseSecret @@ -20,7 +21,6 @@ import org.thoughtcrime.securesms.jobs.RefreshPreKeysJob import org.thoughtcrime.securesms.migrations.LegacyMigrationJob import org.thoughtcrime.securesms.migrations.LegacyMigrationJob.DatabaseUpgradeListener import org.thoughtcrime.securesms.service.KeyCachingService -import org.thoughtcrime.securesms.util.SqlUtil import org.thoughtcrime.securesms.util.TextSecurePreferences import java.io.File diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SignedPreKeyDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SignedPreKeyDatabase.kt index 76303b9d1e..4c9a7b1e04 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SignedPreKeyDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SignedPreKeyDatabase.kt @@ -2,9 +2,12 @@ package org.thoughtcrime.securesms.database import android.content.Context import androidx.core.content.contentValuesOf +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log +import org.signal.core.util.requireInt +import org.signal.core.util.requireLong +import org.signal.core.util.requireNonNullString import org.thoughtcrime.securesms.util.Base64 -import org.thoughtcrime.securesms.util.SqlUtil import org.whispersystems.libsignal.InvalidKeyException import org.whispersystems.libsignal.ecc.Curve import org.whispersystems.libsignal.ecc.ECKeyPair diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java index 95d1ce544b..5dcb918a8e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -57,9 +57,9 @@ import org.thoughtcrime.securesms.sms.IncomingGroupUpdateMessage; import org.thoughtcrime.securesms.sms.IncomingTextMessage; import org.thoughtcrime.securesms.sms.OutgoingTextMessage; import org.thoughtcrime.securesms.util.Base64; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.JsonUtils; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.util.Pair; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java index 4c392a4cff..6135f53d02 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherDeletingErrorHandler.java @@ -9,7 +9,7 @@ import net.zetetic.database.sqlcipher.SQLiteDatabase; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; /** * Prints some diagnostics and then deletes the original so the database can be recreated. diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.kt b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.kt index 8ba857020c..dd3d1ee425 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SqlCipherErrorHandler.kt @@ -5,11 +5,11 @@ import net.zetetic.database.DatabaseErrorHandler import net.zetetic.database.sqlcipher.SQLiteConnection import net.zetetic.database.sqlcipher.SQLiteDatabase import net.zetetic.database.sqlcipher.SQLiteDatabaseHook +import org.signal.core.util.CursorUtil import org.signal.core.util.ExceptionUtil import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider import org.thoughtcrime.securesms.dependencies.ApplicationDependencies -import org.thoughtcrime.securesms.util.CursorUtil import java.util.concurrent.CountDownLatch import java.util.concurrent.atomic.AtomicReference diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/StickerDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/StickerDatabase.java index 4c14b86876..795a7cd5a5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/StickerDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/StickerDatabase.java @@ -21,8 +21,8 @@ import org.thoughtcrime.securesms.database.model.StickerRecord; import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri; import org.thoughtcrime.securesms.stickers.BlessedPacks; import org.thoughtcrime.securesms.stickers.StickerPackInstallEvent; -import org.thoughtcrime.securesms.util.CursorUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.CursorUtil; +import org.signal.core.util.SqlUtil; import java.io.Closeable; import java.io.File; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java index bac0bfbcec..a35516c773 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -52,9 +52,9 @@ import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.storage.StorageSyncHelper; import org.thoughtcrime.securesms.util.ConversationUtil; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.JsonUtils; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.signalservice.api.push.ServiceId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/UnknownStorageIdDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/UnknownStorageIdDatabase.java index 35949fac2c..17bab0e397 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/UnknownStorageIdDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/UnknownStorageIdDatabase.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.annimon.stream.Stream; import org.thoughtcrime.securesms.util.Base64; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.whispersystems.signalservice.api.storage.SignalStorageRecord; import org.whispersystems.signalservice.api.storage.StorageId; import org.whispersystems.signalservice.api.util.Preconditions; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/ClassicOpenHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/ClassicOpenHelper.java index 40e5713638..38f6193a47 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/ClassicOpenHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/ClassicOpenHelper.java @@ -44,7 +44,7 @@ import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.phonenumbers.NumberUtil; import org.thoughtcrime.securesms.util.Base64; import org.thoughtcrime.securesms.util.DelimiterUtil; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.JsonUtils; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SignalDatabaseMigrations.kt b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SignalDatabaseMigrations.kt index b2d846f111..cecdcc38ae 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SignalDatabaseMigrations.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/SignalDatabaseMigrations.kt @@ -14,7 +14,11 @@ import androidx.core.content.contentValuesOf import com.annimon.stream.Stream import com.google.protobuf.InvalidProtocolBufferException import net.zetetic.database.sqlcipher.SQLiteDatabase +import org.signal.core.util.CursorUtil +import org.signal.core.util.Hex +import org.signal.core.util.SqlUtil import org.signal.core.util.logging.Log +import org.signal.core.util.requireString import org.thoughtcrime.securesms.color.MaterialColor import org.thoughtcrime.securesms.contacts.avatars.ContactColorsLegacy import org.thoughtcrime.securesms.conversation.colors.AvatarColor @@ -24,7 +28,6 @@ import org.thoughtcrime.securesms.database.KeyValueDatabase import org.thoughtcrime.securesms.database.RecipientDatabase import org.thoughtcrime.securesms.database.model.DistributionListId import org.thoughtcrime.securesms.database.model.databaseprotos.ReactionList -import org.thoughtcrime.securesms.database.requireString import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.groups.GroupId import org.thoughtcrime.securesms.jobs.RefreshPreKeysJob @@ -36,11 +39,8 @@ import org.thoughtcrime.securesms.profiles.ProfileName import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.storage.StorageSyncHelper import org.thoughtcrime.securesms.util.Base64 -import org.thoughtcrime.securesms.util.CursorUtil import org.thoughtcrime.securesms.util.FileUtils -import org.thoughtcrime.securesms.util.Hex import org.thoughtcrime.securesms.util.ServiceUtil -import org.thoughtcrime.securesms.util.SqlUtil import org.thoughtcrime.securesms.util.Stopwatch import org.thoughtcrime.securesms.util.Triple import org.thoughtcrime.securesms.util.Util diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/AvatarPickerDatabase.kt b/app/src/main/java/org/thoughtcrime/securesms/database/model/AvatarPickerDatabase.kt index 7d76d7d36f..00c52bfe48 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/AvatarPickerDatabase.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/AvatarPickerDatabase.kt @@ -3,14 +3,14 @@ package org.thoughtcrime.securesms.database.model import android.content.ContentValues import android.content.Context import android.net.Uri +import org.signal.core.util.CursorUtil +import org.signal.core.util.SqlUtil import org.thoughtcrime.securesms.avatar.Avatar import org.thoughtcrime.securesms.avatar.Avatars import org.thoughtcrime.securesms.database.Database import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.databaseprotos.CustomAvatar import org.thoughtcrime.securesms.groups.GroupId -import org.thoughtcrime.securesms.util.CursorUtil -import org.thoughtcrime.securesms.util.SqlUtil /** * Database which manages the record keeping for custom created avatars. diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/DistributionListId.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/DistributionListId.java index 66961f9600..c01e902fbc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/DistributionListId.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/DistributionListId.java @@ -6,6 +6,8 @@ import android.os.Parcelable; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import org.signal.core.util.DatabaseId; + import java.util.Objects; /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencies.java b/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencies.java index 00d8471bf9..d10881dff2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencies.java +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencies.java @@ -38,7 +38,7 @@ import org.thoughtcrime.securesms.shakereport.ShakeToReport; import org.thoughtcrime.securesms.util.AppForegroundObserver; import org.thoughtcrime.securesms.util.EarlyMessageCache; import org.thoughtcrime.securesms.util.FrameRateTracker; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.IasKeyStore; import org.thoughtcrime.securesms.video.exo.GiphyMp4Cache; import org.thoughtcrime.securesms.video.exo.SimpleExoPlayerPool; diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiJsonParser.kt b/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiJsonParser.kt index c8f7d1d010..f555b231b4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiJsonParser.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiJsonParser.kt @@ -3,11 +3,11 @@ package org.thoughtcrime.securesms.emoji import android.net.Uri import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.ObjectMapper +import org.signal.core.util.Hex import org.thoughtcrime.securesms.components.emoji.CompositeEmojiPageModel import org.thoughtcrime.securesms.components.emoji.Emoji import org.thoughtcrime.securesms.components.emoji.EmojiPageModel import org.thoughtcrime.securesms.components.emoji.StaticEmojiPageModel -import org.thoughtcrime.securesms.util.Hex import java.io.InputStream import java.nio.charset.Charset diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupId.java b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupId.java index db2618b803..f96a005a57 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupId.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupId.java @@ -7,7 +7,7 @@ import org.signal.zkgroup.InvalidInputException; import org.signal.zkgroup.groups.GroupIdentifier; import org.signal.zkgroup.groups.GroupMasterKey; import org.signal.zkgroup.groups.GroupSecretParams; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.kdf.HKDFv3; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.java index 9e8260363c..609604036a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.java @@ -24,7 +24,7 @@ import org.thoughtcrime.securesms.releasechannel.ReleaseChannel; import org.thoughtcrime.securesms.transport.RetryLaterException; import org.thoughtcrime.securesms.util.AttachmentUtil; import org.thoughtcrime.securesms.util.Base64; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.InvalidMessageException; import org.whispersystems.signalservice.api.SignalServiceMessageReceiver; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/AvatarGroupsV1DownloadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/AvatarGroupsV1DownloadJob.java index 27dd7b53c5..cf77bc8ea3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/AvatarGroupsV1DownloadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/AvatarGroupsV1DownloadJob.java @@ -12,7 +12,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.profiles.AvatarHelper; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.whispersystems.libsignal.InvalidMessageException; import org.whispersystems.signalservice.api.SignalServiceMessageReceiver; import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsSendJob.java index fb4b8e672f..62fcfa0b94 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsSendJob.java @@ -48,7 +48,7 @@ import org.thoughtcrime.securesms.phonenumbers.NumberUtil; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.transport.InsecureFallbackApprovalException; import org.thoughtcrime.securesms.transport.UndeliverableMessageException; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.Util; import java.io.ByteArrayOutputStream; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java index 68310c0953..f8a5127639 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceReadUpdateJob.java @@ -5,6 +5,7 @@ import androidx.annotation.NonNull; import com.annimon.stream.Stream; import com.fasterxml.jackson.annotation.JsonProperty; +import org.signal.core.util.ListUtil; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil; import org.thoughtcrime.securesms.database.MessageDatabase.SyncMessageId; @@ -19,7 +20,6 @@ import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.util.JsonUtils; import org.thoughtcrime.securesms.util.TextSecurePreferences; -import org.thoughtcrime.securesms.util.Util; import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException; import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage; @@ -68,7 +68,7 @@ public class MultiDeviceReadUpdateJob extends BaseJob { */ public static void enqueue(@NonNull List messageIds) { JobManager jobManager = ApplicationDependencies.getJobManager(); - List> messageIdChunks = Util.chunk(messageIds, SendReadReceiptJob.MAX_TIMESTAMPS); + List> messageIdChunks = ListUtil.chunk(messageIds, SendReadReceiptJob.MAX_TIMESTAMPS); if (messageIdChunks.size() > 1) { Log.w(TAG, "Large receipt count! Had to break into multiple chunks. Total count: " + messageIds.size()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackOperationJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackOperationJob.java index 9a04969a3a..d03be65355 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackOperationJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackOperationJob.java @@ -8,7 +8,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java index a9a8fad7a9..92ffb379f6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceStickerPackSyncJob.java @@ -13,7 +13,7 @@ import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.net.NotPushRegisteredException; import org.thoughtcrime.securesms.recipients.Recipient; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java index ca9b100bf8..1110a56770 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceViewedUpdateJob.java @@ -5,6 +5,7 @@ import androidx.annotation.NonNull; import com.annimon.stream.Stream; import com.fasterxml.jackson.annotation.JsonProperty; +import org.signal.core.util.ListUtil; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil; import org.thoughtcrime.securesms.database.MessageDatabase.SyncMessageId; @@ -19,7 +20,6 @@ import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.util.JsonUtils; import org.thoughtcrime.securesms.util.TextSecurePreferences; -import org.thoughtcrime.securesms.util.Util; import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; @@ -68,7 +68,7 @@ public class MultiDeviceViewedUpdateJob extends BaseJob { */ public static void enqueue(@NonNull List messageIds) { JobManager jobManager = ApplicationDependencies.getJobManager(); - List> messageIdChunks = Util.chunk(messageIds, SendReadReceiptJob.MAX_TIMESTAMPS); + List> messageIdChunks = ListUtil.chunk(messageIds, SendReadReceiptJob.MAX_TIMESTAMPS); if (messageIdChunks.size() > 1) { Log.w(TAG, "Large receipt count! Had to break into multiple chunks. Total count: " + messageIds.size()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java index c033a14bb4..b40736b360 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushSendJob.java @@ -47,7 +47,7 @@ import org.thoughtcrime.securesms.util.Base64; import org.thoughtcrime.securesms.util.BitmapDecodingException; import org.thoughtcrime.securesms.util.BitmapUtil; import org.thoughtcrime.securesms.util.FeatureFlags; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java index 875a60a95c..3e7646f1c5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveProfileJob.java @@ -11,6 +11,7 @@ import androidx.annotation.WorkerThread; import com.annimon.stream.Collectors; import com.annimon.stream.Stream; +import org.signal.core.util.ListUtil; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; import org.signal.zkgroup.profiles.ProfileKey; @@ -296,7 +297,7 @@ public class RetrieveProfileJob extends BaseJob { //noinspection SimplifyStreamApiCallChains - Util.chunk(operationState.profiles, 150).stream().forEach(list -> { + ListUtil.chunk(operationState.profiles, 150).stream().forEach(list -> { SignalDatabase.runInTransaction(() -> { for (Pair profile : list) { process(profile.first(), profile.second()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveReleaseChannelJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveReleaseChannelJob.kt index 714d97af68..656246b951 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveReleaseChannelJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveReleaseChannelJob.kt @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.jobs import androidx.core.os.LocaleListCompat import com.fasterxml.jackson.annotation.JsonProperty +import org.signal.core.util.Hex import org.signal.core.util.ThreadUtil import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.BuildConfig @@ -20,7 +21,6 @@ import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.releasechannel.ReleaseChannel import org.thoughtcrime.securesms.s3.S3 import org.thoughtcrime.securesms.transport.RetryLaterException -import org.thoughtcrime.securesms.util.Hex import org.thoughtcrime.securesms.util.LocaleFeatureFlags import org.whispersystems.signalservice.internal.ServiceResponse import java.io.IOException diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java index a2aaf1fede..469a99b6c1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendReadReceiptJob.java @@ -6,6 +6,7 @@ import android.app.Application; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; +import org.signal.core.util.ListUtil; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil; import org.thoughtcrime.securesms.database.MessageDatabase.MarkedMessageInfo; @@ -101,7 +102,7 @@ public class SendReadReceiptJob extends BaseJob { } JobManager jobManager = ApplicationDependencies.getJobManager(); - List> messageIdChunks = Util.chunk(markedMessageInfos, MAX_TIMESTAMPS); + List> messageIdChunks = ListUtil.chunk(markedMessageInfos, MAX_TIMESTAMPS); if (messageIdChunks.size() > 1) { Log.w(TAG, "Large receipt count! Had to break into multiple chunks. Total count: " + markedMessageInfos.size()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java index b456edd33c..5466c37d60 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SendViewedReceiptJob.java @@ -5,6 +5,7 @@ import android.app.Application; import androidx.annotation.NonNull; +import org.signal.core.util.ListUtil; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil; import org.thoughtcrime.securesms.database.MessageDatabase.MarkedMessageInfo; @@ -96,7 +97,7 @@ public class SendViewedReceiptJob extends BaseJob { */ public static void enqueue(long threadId, @NonNull RecipientId recipientId, List markedMessageInfos) { JobManager jobManager = ApplicationDependencies.getJobManager(); - List> messageIdChunks = Util.chunk(markedMessageInfos, MAX_TIMESTAMPS); + List> messageIdChunks = ListUtil.chunk(markedMessageInfos, MAX_TIMESTAMPS); if (messageIdChunks.size() > 1) { Log.w(TAG, "Large receipt count! Had to break into multiple chunks. Total count: " + markedMessageInfos.size()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StickerDownloadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/StickerDownloadJob.java index 52073278ec..f695fa4382 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StickerDownloadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StickerDownloadJob.java @@ -12,7 +12,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.mms.PartAuthority; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.whispersystems.signalservice.api.SignalServiceMessageReceiver; import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StickerPackDownloadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/StickerPackDownloadJob.java index a35e3023ea..a80741090b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StickerPackDownloadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StickerPackDownloadJob.java @@ -13,7 +13,7 @@ import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.stickers.BlessedPacks; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.whispersystems.libsignal.InvalidMessageException; import org.whispersystems.signalservice.api.SignalServiceMessageReceiver; import org.whispersystems.signalservice.api.messages.SignalServiceStickerManifest; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/UpdateApkJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/UpdateApkJob.java index 759919b315..af1ac768f4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/UpdateApkJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/UpdateApkJob.java @@ -21,7 +21,7 @@ import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.service.UpdateApkReadyListener; import org.thoughtcrime.securesms.util.FileUtils; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.JsonUtils; import org.thoughtcrime.securesms.util.TextSecurePreferences; diff --git a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java index 429dfecaa9..7efe1475bb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/linkpreview/LinkPreviewRepository.java @@ -41,7 +41,7 @@ import org.thoughtcrime.securesms.stickers.StickerRemoteUri; import org.thoughtcrime.securesms.stickers.StickerUrl; import org.thoughtcrime.securesms.util.AvatarUtil; import org.thoughtcrime.securesms.util.ByteUnit; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.OkHttpUtil; import org.whispersystems.libsignal.InvalidMessageException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaRepository.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaRepository.java index bbc4c56c3f..0eb8c221d2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaRepository.java @@ -24,7 +24,7 @@ import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.mms.PartAuthority; import org.thoughtcrime.securesms.util.MediaUtil; -import org.thoughtcrime.securesms.util.SqlUtil; +import org.signal.core.util.SqlUtil; import org.thoughtcrime.securesms.util.Stopwatch; import org.thoughtcrime.securesms.util.StorageUtil; import org.thoughtcrime.securesms.util.Util; diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureRepository.kt index 462c8c9dc6..3cc7b07d8c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/capture/MediaCaptureRepository.kt @@ -7,12 +7,12 @@ import android.net.Uri import android.os.Build import android.provider.MediaStore import androidx.annotation.WorkerThread +import org.signal.core.util.CursorUtil import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.mediasend.Media import org.thoughtcrime.securesms.mediasend.MediaRepository import org.thoughtcrime.securesms.providers.BlobProvider -import org.thoughtcrime.securesms.util.CursorUtil import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.StorageUtil import org.thoughtcrime.securesms.video.VideoUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java index 80bf4e2784..8b869e7a59 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java @@ -122,7 +122,7 @@ import org.thoughtcrime.securesms.stories.Stories; import org.thoughtcrime.securesms.util.Base64; import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.GroupUtil; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.IdentityUtil; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.RemoteDeleteUtil; @@ -169,7 +169,6 @@ import org.whispersystems.signalservice.api.messages.shared.SharedContact; import org.whispersystems.signalservice.api.payments.Money; import org.whispersystems.signalservice.api.push.DistributionId; import org.whispersystems.signalservice.api.push.SignalServiceAddress; -import org.whispersystems.signalservice.api.util.OptionalUtil; import java.io.IOException; import java.security.SecureRandom; diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/DoNotDisturbUtil.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/DoNotDisturbUtil.java index c39154ef84..608f990e05 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/DoNotDisturbUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/DoNotDisturbUtil.java @@ -16,7 +16,7 @@ import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.recipients.Recipient; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.ServiceUtil; import java.util.concurrent.TimeUnit; diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationStateProvider.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationStateProvider.kt index 1f6c965244..354439affb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationStateProvider.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationStateProvider.kt @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.notifications.v2 import androidx.annotation.WorkerThread +import org.signal.core.util.CursorUtil import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.database.MmsSmsColumns import org.thoughtcrime.securesms.database.MmsSmsDatabase @@ -11,7 +12,6 @@ import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.database.model.ReactionRecord import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile import org.thoughtcrime.securesms.recipients.Recipient -import org.thoughtcrime.securesms.util.CursorUtil /** * Queries the message databases to determine messages that should be in notifications. diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java index 7ddd60984f..26d247e9c5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipientCache.java @@ -16,7 +16,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.database.ThreadDatabase; import org.thoughtcrime.securesms.database.model.ThreadRecord; import org.thoughtcrime.securesms.keyvalue.SignalStore; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.LRUCache; import org.thoughtcrime.securesms.util.Stopwatch; import org.thoughtcrime.securesms.util.concurrent.FilteredExecutor; diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientId.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientId.java index b0bb378cda..b7b4a67614 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientId.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientId.java @@ -11,7 +11,7 @@ import androidx.annotation.Nullable; import com.annimon.stream.Stream; -import org.thoughtcrime.securesms.database.model.DatabaseId; +import org.signal.core.util.DatabaseId; import org.thoughtcrime.securesms.util.DelimiterUtil; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.signalservice.api.push.ServiceId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/s3/S3.kt b/app/src/main/java/org/thoughtcrime/securesms/s3/S3.kt index 004769cda4..47de5b136f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/s3/S3.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/s3/S3.kt @@ -6,10 +6,10 @@ import okhttp3.Request import okhttp3.Response import okio.HashingSink import okio.sink +import org.signal.core.util.Hex import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.util.EncryptedStreamUtils -import org.thoughtcrime.securesms.util.Hex import org.thoughtcrime.securesms.util.JsonUtils import org.whispersystems.signalservice.internal.ServiceResponse import org.whispersystems.signalservice.internal.websocket.DefaultErrorMapper diff --git a/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java b/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java index 2d17fcdc68..3b6e0a6437 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java @@ -29,7 +29,7 @@ import org.thoughtcrime.securesms.database.model.ThreadRecord; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; -import org.thoughtcrime.securesms.util.CursorUtil; +import org.signal.core.util.CursorUtil; import org.thoughtcrime.securesms.util.FtsUtil; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.concurrent.SerialExecutor; diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/UpdateApkReadyListener.java b/app/src/main/java/org/thoughtcrime/securesms/service/UpdateApkReadyListener.java index 2428c1fc0d..7e36109682 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/UpdateApkReadyListener.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/UpdateApkReadyListener.java @@ -18,7 +18,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.notifications.NotificationChannels; import org.thoughtcrime.securesms.util.FileProviderUtil; import org.thoughtcrime.securesms.util.FileUtils; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerPackPreviewRepository.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerPackPreviewRepository.java index f384efffe3..5fd9db7289 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerPackPreviewRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerPackPreviewRepository.java @@ -15,7 +15,7 @@ import org.thoughtcrime.securesms.database.StickerDatabase; import org.thoughtcrime.securesms.database.model.StickerPackRecord; import org.thoughtcrime.securesms.database.model.StickerRecord; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.whispersystems.libsignal.InvalidMessageException; import org.whispersystems.signalservice.api.SignalServiceMessageReceiver; import org.whispersystems.signalservice.api.messages.SignalServiceStickerManifest; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerRemoteUriFetcher.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerRemoteUriFetcher.java index bf98240c9b..50554e9919 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerRemoteUriFetcher.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerRemoteUriFetcher.java @@ -7,7 +7,7 @@ import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.data.DataFetcher; import org.signal.core.util.logging.Log; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.whispersystems.libsignal.InvalidMessageException; import org.whispersystems.signalservice.api.SignalServiceMessageReceiver; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerUrl.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerUrl.java index 129042f8e3..3137dc853b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerUrl.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerUrl.java @@ -6,7 +6,7 @@ import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import org.whispersystems.libsignal.util.Pair; import org.whispersystems.signalservice.api.util.OptionalUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/select/BaseStoryRecipientSelectionRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/select/BaseStoryRecipientSelectionRepository.kt index 5653fc2f76..69989ee27d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/select/BaseStoryRecipientSelectionRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/select/BaseStoryRecipientSelectionRepository.kt @@ -2,12 +2,12 @@ package org.thoughtcrime.securesms.stories.settings.select import io.reactivex.rxjava3.core.Single import io.reactivex.rxjava3.schedulers.Schedulers +import org.signal.core.util.CursorUtil import org.signal.core.util.concurrent.SignalExecutors import org.thoughtcrime.securesms.database.RecipientDatabase import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.DistributionListId import org.thoughtcrime.securesms.recipients.RecipientId -import org.thoughtcrime.securesms.util.CursorUtil class BaseStoryRecipientSelectionRepository { fun updateDistributionListMembership(distributionListId: DistributionListId, recipients: Set) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/Util.java b/app/src/main/java/org/thoughtcrime/securesms/util/Util.java index 420d0662e6..172ab84764 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/Util.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/Util.java @@ -182,17 +182,6 @@ public class Util { return value != null ? value : ""; } - public static List> chunk(@NonNull List list, int chunkSize) { - List> chunks = new ArrayList<>(list.size() / chunkSize); - - for (int i = 0; i < list.size(); i += chunkSize) { - List chunk = list.subList(i, Math.min(list.size(), i + chunkSize)); - chunks.add(chunk); - } - - return chunks; - } - public static CharSequence getBoldedString(String value) { SpannableString spanned = new SpannableString(value); spanned.setSpan(new StyleSpan(Typeface.BOLD), 0, diff --git a/app/src/spinner/java/org/thoughtcrime/securesms/database/GV2Transformer.kt b/app/src/spinner/java/org/thoughtcrime/securesms/database/GV2Transformer.kt index 26a3a2c28d..cb730fd50b 100644 --- a/app/src/spinner/java/org/thoughtcrime/securesms/database/GV2Transformer.kt +++ b/app/src/spinner/java/org/thoughtcrime/securesms/database/GV2Transformer.kt @@ -1,6 +1,8 @@ package org.thoughtcrime.securesms.database import android.database.Cursor +import org.signal.core.util.requireBlob +import org.signal.core.util.requireString import org.signal.spinner.ColumnTransformer import org.signal.storageservice.protos.groups.local.DecryptedGroup diff --git a/app/src/spinner/java/org/thoughtcrime/securesms/database/GV2UpdateTransformer.kt b/app/src/spinner/java/org/thoughtcrime/securesms/database/GV2UpdateTransformer.kt index 825f62a199..86c51126e1 100644 --- a/app/src/spinner/java/org/thoughtcrime/securesms/database/GV2UpdateTransformer.kt +++ b/app/src/spinner/java/org/thoughtcrime/securesms/database/GV2UpdateTransformer.kt @@ -1,12 +1,13 @@ package org.thoughtcrime.securesms.database import android.database.Cursor +import org.signal.core.util.CursorUtil +import org.signal.core.util.requireLong import org.signal.spinner.ColumnTransformer import org.signal.spinner.DefaultColumnTransformer import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.database.model.UpdateDescription import org.thoughtcrime.securesms.dependencies.ApplicationDependencies -import org.thoughtcrime.securesms.util.CursorUtil object GV2UpdateTransformer : ColumnTransformer { override fun matches(tableName: String?, columnName: String): Boolean { diff --git a/app/src/spinner/java/org/thoughtcrime/securesms/database/MessageBitmaskColumnTransformer.kt b/app/src/spinner/java/org/thoughtcrime/securesms/database/MessageBitmaskColumnTransformer.kt index 5776f41617..c964780da3 100644 --- a/app/src/spinner/java/org/thoughtcrime/securesms/database/MessageBitmaskColumnTransformer.kt +++ b/app/src/spinner/java/org/thoughtcrime/securesms/database/MessageBitmaskColumnTransformer.kt @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.database import android.database.Cursor +import org.signal.core.util.requireLong import org.signal.spinner.ColumnTransformer import org.thoughtcrime.securesms.database.MmsSmsColumns.Types.BAD_DECRYPT_TYPE import org.thoughtcrime.securesms.database.MmsSmsColumns.Types.BASE_DRAFT_TYPE diff --git a/app/src/test/java/org/thoughtcrime/securesms/database/ContactSearchSelectionBuilderTest.kt b/app/src/test/java/org/thoughtcrime/securesms/database/ContactSearchSelectionBuilderTest.kt index 08b9b719e2..fee6e33201 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/database/ContactSearchSelectionBuilderTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/database/ContactSearchSelectionBuilderTest.kt @@ -2,8 +2,8 @@ package org.thoughtcrime.securesms.database import org.junit.Assert import org.junit.Test +import org.signal.core.util.SqlUtil import org.thoughtcrime.securesms.recipients.RecipientId -import org.thoughtcrime.securesms.util.SqlUtil class ContactSearchSelectionBuilderTest { @Test(expected = IllegalStateException::class) diff --git a/app/src/test/java/org/thoughtcrime/securesms/database/MmsSmsDatabaseTest.kt b/app/src/test/java/org/thoughtcrime/securesms/database/MmsSmsDatabaseTest.kt index 5242c99875..f52ba6966b 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/database/MmsSmsDatabaseTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/database/MmsSmsDatabaseTest.kt @@ -12,8 +12,8 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config +import org.signal.core.util.CursorUtil import org.thoughtcrime.securesms.testing.TestDatabaseUtil -import org.thoughtcrime.securesms.util.CursorUtil @RunWith(RobolectricTestRunner::class) @Config(manifest = Config.NONE, application = Application::class) diff --git a/app/src/test/java/org/thoughtcrime/securesms/database/RecipientDatabaseTestUtils.kt b/app/src/test/java/org/thoughtcrime/securesms/database/RecipientDatabaseTestUtils.kt index 31b610718b..fcc3225647 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/database/RecipientDatabaseTestUtils.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/database/RecipientDatabaseTestUtils.kt @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.database import android.net.Uri +import org.signal.core.util.Bitmask import org.signal.zkgroup.profiles.ProfileKeyCredential import org.thoughtcrime.securesms.badges.models.Badge import org.thoughtcrime.securesms.conversation.colors.AvatarColor @@ -11,7 +12,6 @@ import org.thoughtcrime.securesms.profiles.ProfileName import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientDetails import org.thoughtcrime.securesms.recipients.RecipientId -import org.thoughtcrime.securesms.util.Bitmask import org.thoughtcrime.securesms.wallpaper.ChatWallpaper import org.whispersystems.signalservice.api.push.ServiceId import java.util.Optional diff --git a/app/src/test/java/org/thoughtcrime/securesms/groups/GroupIdTest.java b/app/src/test/java/org/thoughtcrime/securesms/groups/GroupIdTest.java index c099366aa4..4f4cabdc6a 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/groups/GroupIdTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/groups/GroupIdTest.java @@ -4,7 +4,7 @@ import org.junit.Test; import org.signal.zkgroup.InvalidInputException; import org.signal.zkgroup.groups.GroupIdentifier; import org.signal.zkgroup.groups.GroupMasterKey; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import java.io.IOException; diff --git a/app/src/test/java/org/thoughtcrime/securesms/groups/GroupId_v1_v2_migration_derivation_Test.java b/app/src/test/java/org/thoughtcrime/securesms/groups/GroupId_v1_v2_migration_derivation_Test.java index 60dfd5bdd6..fe2f02ee39 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/groups/GroupId_v1_v2_migration_derivation_Test.java +++ b/app/src/test/java/org/thoughtcrime/securesms/groups/GroupId_v1_v2_migration_derivation_Test.java @@ -5,7 +5,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.signal.zkgroup.groups.GroupMasterKey; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import java.util.Arrays; import java.util.Collection; diff --git a/app/src/test/java/org/thoughtcrime/securesms/groups/GroupManagerV2Test_edit.kt b/app/src/test/java/org/thoughtcrime/securesms/groups/GroupManagerV2Test_edit.kt index 1b099b75e1..41aa55cb8b 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/groups/GroupManagerV2Test_edit.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/groups/GroupManagerV2Test_edit.kt @@ -16,6 +16,7 @@ import org.mockito.Mockito import org.mockito.Mockito.mock import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config +import org.signal.core.util.Hex import org.signal.core.util.ThreadUtil import org.signal.core.util.logging.Log import org.signal.storageservice.protos.groups.Member @@ -33,7 +34,6 @@ import org.thoughtcrime.securesms.groups.v2.processing.GroupsV2StateProcessor import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.testutil.SystemOutLogger -import org.thoughtcrime.securesms.util.Hex import org.whispersystems.libsignal.logging.SignalProtocolLoggerProvider import org.whispersystems.signalservice.api.groupsv2.ClientZkOperations import org.whispersystems.signalservice.api.groupsv2.GroupsV2Api diff --git a/app/src/test/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrlTest.java b/app/src/test/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrlTest.java index a48797edfa..67705fb882 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrlTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/groups/v2/GroupInviteLinkUrlTest.java @@ -5,7 +5,7 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.signal.zkgroup.InvalidInputException; import org.signal.zkgroup.groups.GroupMasterKey; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import java.util.Arrays; import java.util.Collection; diff --git a/app/src/test/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessorTest.kt b/app/src/test/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessorTest.kt index d19e1090a5..eb43d04d55 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessorTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/groups/v2/processing/GroupsV2StateProcessorTest.kt @@ -18,6 +18,7 @@ import org.mockito.Mockito.reset import org.mockito.Mockito.verify import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config +import org.signal.core.util.Hex.fromStringCondensed import org.signal.core.util.logging.Log import org.signal.storageservice.protos.groups.local.DecryptedGroup import org.signal.storageservice.protos.groups.local.DecryptedGroupChange @@ -38,7 +39,6 @@ import org.thoughtcrime.securesms.groups.GroupsV2Authorization import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger import org.thoughtcrime.securesms.testutil.SystemOutLogger -import org.thoughtcrime.securesms.util.Hex.fromStringCondensed import org.whispersystems.libsignal.logging.SignalProtocolLoggerProvider import org.whispersystems.signalservice.api.groupsv2.GroupsV2Api import org.whispersystems.signalservice.api.groupsv2.PartialDecryptedGroup diff --git a/app/src/test/java/org/thoughtcrime/securesms/testutil/HexDeserializer.java b/app/src/test/java/org/thoughtcrime/securesms/testutil/HexDeserializer.java index 6bae85da8f..6f3f9e633e 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/testutil/HexDeserializer.java +++ b/app/src/test/java/org/thoughtcrime/securesms/testutil/HexDeserializer.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; -import org.thoughtcrime.securesms.util.Hex; +import org.signal.core.util.Hex; import java.io.IOException; diff --git a/app/src/test/java/org/thoughtcrime/securesms/util/BitmaskTest.java b/app/src/test/java/org/thoughtcrime/securesms/util/BitmaskTest.java index 4965ddc497..629c32e43b 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/util/BitmaskTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/util/BitmaskTest.java @@ -1,6 +1,7 @@ package org.thoughtcrime.securesms.util; import org.junit.Test; +import org.signal.core.util.Bitmask; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; diff --git a/core-util/build.gradle b/core-util/build.gradle index 661e497e5f..4740d03833 100644 --- a/core-util/build.gradle +++ b/core-util/build.gradle @@ -49,7 +49,11 @@ dependencies { implementation libs.androidx.core.ktx implementation libs.google.protobuf.javalite + implementation libs.androidx.sqlite testImplementation testLibs.junit.junit testImplementation testLibs.mockito.core + testImplementation (testLibs.robolectric.robolectric) { + exclude group: 'com.google.protobuf', module: 'protobuf-java' + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/Bitmask.java b/core-util/src/main/java/org/signal/core/util/Bitmask.java similarity index 65% rename from app/src/main/java/org/thoughtcrime/securesms/util/Bitmask.java rename to core-util/src/main/java/org/signal/core/util/Bitmask.java index 5fed8736be..8e82e74b69 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/Bitmask.java +++ b/core-util/src/main/java/org/signal/core/util/Bitmask.java @@ -1,8 +1,4 @@ -package org.thoughtcrime.securesms.util; - - - -import org.whispersystems.signalservice.api.util.Preconditions; +package org.signal.core.util; import java.util.Locale; @@ -27,10 +23,10 @@ public final class Bitmask { * @return The value at the requested position */ public static long read(long value, int position, int flagBitSize) { - Preconditions.checkArgument(flagBitSize >= 0, "Must have a positive bit size! size: " + flagBitSize); + checkArgument(flagBitSize >= 0, "Must have a positive bit size! size: " + flagBitSize); int bitsToShift = position * flagBitSize; - Preconditions.checkArgument(bitsToShift + flagBitSize <= 64 && position >= 0, String.format(Locale.US, "Your position is out of bounds! position: %d, flagBitSize: %d", position, flagBitSize)); + checkArgument(bitsToShift + flagBitSize <= 64 && position >= 0, String.format(Locale.US, "Your position is out of bounds! position: %d, flagBitSize: %d", position, flagBitSize)); long shifted = value >>> bitsToShift; long mask = twoToThe(flagBitSize) - 1; @@ -55,12 +51,12 @@ public final class Bitmask { * @return The updated bitmask */ public static long update(long existing, int position, int flagBitSize, long value) { - Preconditions.checkArgument(flagBitSize >= 0, "Must have a positive bit size! size: " + flagBitSize); - Preconditions.checkArgument(value >= 0, "Value must be positive! value: " + value); - Preconditions.checkArgument(value < twoToThe(flagBitSize), String.format(Locale.US, "Value is larger than you can hold for the given bitsize! value: %d, flagBitSize: %d", value, flagBitSize)); + checkArgument(flagBitSize >= 0, "Must have a positive bit size! size: " + flagBitSize); + checkArgument(value >= 0, "Value must be positive! value: " + value); + checkArgument(value < twoToThe(flagBitSize), String.format(Locale.US, "Value is larger than you can hold for the given bitsize! value: %d, flagBitSize: %d", value, flagBitSize)); int bitsToShift = position * flagBitSize; - Preconditions.checkArgument(bitsToShift + flagBitSize <= 64 && position >= 0, String.format(Locale.US, "Your position is out of bounds! position: %d, flagBitSize: %d", position, flagBitSize)); + checkArgument(bitsToShift + flagBitSize <= 64 && position >= 0, String.format(Locale.US, "Your position is out of bounds! position: %d, flagBitSize: %d", position, flagBitSize)); long clearMask = ~((twoToThe(flagBitSize) - 1) << bitsToShift); long cleared = existing & clearMask; @@ -73,4 +69,10 @@ public final class Bitmask { private static long twoToThe(long n) { return 1 << n; } + + private static void checkArgument(boolean state, String message) { + if (!state) { + throw new IllegalArgumentException(message); + } + } } diff --git a/core-util/src/main/java/org/signal/core/util/Conversions.java b/core-util/src/main/java/org/signal/core/util/Conversions.java index ebc4dbc837..9ab67482b8 100644 --- a/core-util/src/main/java/org/signal/core/util/Conversions.java +++ b/core-util/src/main/java/org/signal/core/util/Conversions.java @@ -177,4 +177,11 @@ public class Conversions { ((bytes[offset + 6] & 0xffL) << 8) | ((bytes[offset + 7] & 0xffL)); } + + public static int toIntExact(long value) { + if ((int)value != value) { + throw new ArithmeticException("integer overflow"); + } + return (int)value; + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/CursorExtensions.kt b/core-util/src/main/java/org/signal/core/util/CursorExtensions.kt similarity index 93% rename from app/src/main/java/org/thoughtcrime/securesms/database/CursorExtensions.kt rename to core-util/src/main/java/org/signal/core/util/CursorExtensions.kt index 0a5992a752..62464f808c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/CursorExtensions.kt +++ b/core-util/src/main/java/org/signal/core/util/CursorExtensions.kt @@ -1,7 +1,6 @@ -package org.thoughtcrime.securesms.database +package org.signal.core.util import android.database.Cursor -import org.thoughtcrime.securesms.util.CursorUtil import java.util.Optional fun Cursor.requireString(column: String): String? { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/CursorUtil.java b/core-util/src/main/java/org/signal/core/util/CursorUtil.java similarity index 95% rename from app/src/main/java/org/thoughtcrime/securesms/util/CursorUtil.java rename to core-util/src/main/java/org/signal/core/util/CursorUtil.java index 83fd019c88..62aa5f57b4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/CursorUtil.java +++ b/core-util/src/main/java/org/signal/core/util/CursorUtil.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.util; +package org.signal.core.util; import android.database.Cursor; @@ -44,7 +44,7 @@ public final class CursorUtil { } public static int requireMaskedInt(@NonNull Cursor cursor, @NonNull String column, int position, int flagBitSize) { - return Util.toIntExact(Bitmask.read(requireLong(cursor, column), position, flagBitSize)); + return Conversions.toIntExact(Bitmask.read(requireLong(cursor, column), position, flagBitSize)); } public static Optional getString(@NonNull Cursor cursor, @NonNull String column) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/DatabaseId.java b/core-util/src/main/java/org/signal/core/util/DatabaseId.java similarity index 66% rename from app/src/main/java/org/thoughtcrime/securesms/database/model/DatabaseId.java rename to core-util/src/main/java/org/signal/core/util/DatabaseId.java index c7056d2d29..afe455fc7b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/DatabaseId.java +++ b/core-util/src/main/java/org/signal/core/util/DatabaseId.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.database.model; +package org.signal.core.util; import androidx.annotation.NonNull; diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/Hex.java b/core-util/src/main/java/org/signal/core/util/Hex.java similarity index 99% rename from app/src/main/java/org/thoughtcrime/securesms/util/Hex.java rename to core-util/src/main/java/org/signal/core/util/Hex.java index a1f3af4cad..bf2265bd56 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/Hex.java +++ b/core-util/src/main/java/org/signal/core/util/Hex.java @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.thoughtcrime.securesms.util; +package org.signal.core.util; import java.io.IOException; diff --git a/core-util/src/main/java/org/signal/core/util/ListUtil.java b/core-util/src/main/java/org/signal/core/util/ListUtil.java new file mode 100644 index 0000000000..2e318bec8a --- /dev/null +++ b/core-util/src/main/java/org/signal/core/util/ListUtil.java @@ -0,0 +1,21 @@ +package org.signal.core.util; + +import androidx.annotation.NonNull; + +import java.util.ArrayList; +import java.util.List; + +public final class ListUtil { + private ListUtil() {} + + public static List> chunk(@NonNull List list, int chunkSize) { + List> chunks = new ArrayList<>(list.size() / chunkSize); + + for (int i = 0; i < list.size(); i += chunkSize) { + List chunk = list.subList(i, Math.min(list.size(), i + chunkSize)); + chunks.add(chunk); + } + + return chunks; + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SqlUtil.java b/core-util/src/main/java/org/signal/core/util/SqlUtil.java similarity index 82% rename from app/src/main/java/org/thoughtcrime/securesms/util/SqlUtil.java rename to core-util/src/main/java/org/signal/core/util/SqlUtil.java index 71361d5b29..8d13333f24 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SqlUtil.java +++ b/core-util/src/main/java/org/signal/core/util/SqlUtil.java @@ -1,17 +1,11 @@ -package org.thoughtcrime.securesms.util; +package org.signal.core.util; import android.content.ContentValues; import android.database.Cursor; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; - -import com.annimon.stream.Stream; - -import net.zetetic.database.sqlcipher.SQLiteDatabase; - -import org.thoughtcrime.securesms.database.model.DatabaseId; -import org.whispersystems.signalservice.api.util.Preconditions; +import androidx.sqlite.db.SupportSQLiteDatabase; import java.util.ArrayList; import java.util.Arrays; @@ -30,16 +24,16 @@ public final class SqlUtil { private SqlUtil() {} - public static boolean tableExists(@NonNull SQLiteDatabase db, @NonNull String table) { - try (Cursor cursor = db.rawQuery("SELECT name FROM sqlite_master WHERE type=? AND name=?", new String[] { "table", table })) { + public static boolean tableExists(@NonNull SupportSQLiteDatabase db, @NonNull String table) { + try (Cursor cursor = db.query("SELECT name FROM sqlite_master WHERE type=? AND name=?", new String[] { "table", table })) { return cursor != null && cursor.moveToNext(); } } - public static @NonNull List getAllTables(@NonNull SQLiteDatabase db) { + public static @NonNull List getAllTables(@NonNull SupportSQLiteDatabase db) { List tables = new LinkedList<>(); - try (Cursor cursor = db.rawQuery("SELECT name FROM sqlite_master WHERE type=?", new String[] { "table" })) { + try (Cursor cursor = db.query("SELECT name FROM sqlite_master WHERE type=?", new String[] { "table" })) { while (cursor.moveToNext()) { tables.add(cursor.getString(0)); } @@ -53,13 +47,13 @@ public final class SqlUtil { * only one statement per line, and that each statement is terminated by a semi-colon. */ public static @NonNull List splitStatements(@NonNull String sql) { - return Stream.of(Arrays.asList(sql.split(";\n"))) + return Arrays.stream(sql.split(";\n")) .map(String::trim) - .toList(); + .collect(Collectors.toList()); } - public static boolean isEmpty(@NonNull SQLiteDatabase db, @NonNull String table) { - try (Cursor cursor = db.rawQuery("SELECT COUNT(*) FROM " + table, null)) { + public static boolean isEmpty(@NonNull SupportSQLiteDatabase db, @NonNull String table) { + try (Cursor cursor = db.query("SELECT COUNT(*) FROM " + table, null)) { if (cursor.moveToFirst()) { return cursor.getInt(0) == 0; } else { @@ -68,8 +62,8 @@ public final class SqlUtil { } } - public static boolean columnExists(@NonNull SQLiteDatabase db, @NonNull String table, @NonNull String column) { - try (Cursor cursor = db.rawQuery("PRAGMA table_info(" + table + ")", null)) { + public static boolean columnExists(@NonNull SupportSQLiteDatabase db, @NonNull String table, @NonNull String column) { + try (Cursor cursor = db.query("PRAGMA table_info(" + table + ")", null)) { int nameColumnIndex = cursor.getColumnIndexOrThrow("name"); while (cursor.moveToNext()) { @@ -106,7 +100,7 @@ public final class SqlUtil { /** * Returns an updated query and args pairing that will only update rows that would *actually* - * change. In other words, if {@link SQLiteDatabase#update(String, ContentValues, String, String[])} + * change. In other words, if {@link SupportSQLiteDatabase#update(String, int, ContentValues, String, Object[])} * returns > 0, then you know something *actually* changed. */ public static @NonNull Query buildTrueUpdateQuery(@NonNull String selection, @@ -146,7 +140,9 @@ public final class SqlUtil { } public static @NonNull Query buildCollectionQuery(@NonNull String column, @NonNull Collection values) { - Preconditions.checkArgument(values.size() > 0); + if (values.isEmpty()) { + throw new IllegalArgumentException("Must have values!"); + } StringBuilder query = new StringBuilder(); Object[] args = new Object[values.size()]; @@ -175,10 +171,10 @@ public final class SqlUtil { static @NonNull List buildCustomCollectionQuery(@NonNull String query, @NonNull List argList, int maxQueryArgs) { int batchSize = maxQueryArgs / argList.get(0).length; - return Util.chunk(argList, batchSize) - .stream() - .map(argBatch -> buildSingleCustomCollectionQuery(query, argBatch)) - .collect(Collectors.toList()); + return ListUtil.chunk(argList, batchSize) + .stream() + .map(argBatch -> buildSingleCustomCollectionQuery(query, argBatch)) + .collect(Collectors.toList()); } private static @NonNull Query buildSingleCustomCollectionQuery(@NonNull String query, @NonNull List argList) { @@ -223,10 +219,10 @@ public final class SqlUtil { static List buildBulkInsert(@NonNull String tableName, @NonNull String[] columns, List contentValues, int maxQueryArgs) { int batchSize = maxQueryArgs / columns.length; - return Util.chunk(contentValues, batchSize) - .stream() - .map(batch -> buildSingleBulkInsert(tableName, columns, batch)) - .collect(Collectors.toList()); + return ListUtil.chunk(contentValues, batchSize) + .stream() + .map(batch -> buildSingleBulkInsert(tableName, columns, batch)) + .collect(Collectors.toList()); } private static Query buildSingleBulkInsert(@NonNull String tableName, @NonNull String[] columns, List contentValues) { diff --git a/app/src/test/java/org/thoughtcrime/securesms/util/UtilTest.java b/core-util/src/test/java/org/signal/core/util/ListUtilTest.java similarity index 78% rename from app/src/test/java/org/thoughtcrime/securesms/util/UtilTest.java rename to core-util/src/test/java/org/signal/core/util/ListUtilTest.java index b34fc5d95a..47395f9d25 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/util/UtilTest.java +++ b/core-util/src/test/java/org/signal/core/util/ListUtilTest.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.util; +package org.signal.core.util; import org.junit.Test; @@ -7,21 +7,21 @@ import java.util.List; import static org.junit.Assert.assertEquals; -public class UtilTest { +public class ListUtilTest { @Test public void chunk_oneChunk() { List input = Arrays.asList("A", "B", "C"); - List> output = Util.chunk(input, 3); + List> output = ListUtil.chunk(input, 3); assertEquals(1, output.size()); assertEquals(input, output.get(0)); - output = Util.chunk(input, 4); + output = ListUtil.chunk(input, 4); assertEquals(1, output.size()); assertEquals(input, output.get(0)); - output = Util.chunk(input, 100); + output = ListUtil.chunk(input, 100); assertEquals(1, output.size()); assertEquals(input, output.get(0)); } @@ -30,18 +30,18 @@ public class UtilTest { public void chunk_multipleChunks() { List input = Arrays.asList("A", "B", "C", "D", "E"); - List> output = Util.chunk(input, 4); + List> output = ListUtil.chunk(input, 4); assertEquals(2, output.size()); assertEquals(Arrays.asList("A", "B", "C", "D"), output.get(0)); assertEquals(Arrays.asList("E"), output.get(1)); - output = Util.chunk(input, 2); + output = ListUtil.chunk(input, 2); assertEquals(3, output.size()); assertEquals(Arrays.asList("A", "B"), output.get(0)); assertEquals(Arrays.asList("C", "D"), output.get(1)); assertEquals(Arrays.asList("E"), output.get(2)); - output = Util.chunk(input, 1); + output = ListUtil.chunk(input, 1); assertEquals(5, output.size()); assertEquals(Arrays.asList("A"), output.get(0)); assertEquals(Arrays.asList("B"), output.get(1)); diff --git a/app/src/test/java/org/thoughtcrime/securesms/util/SqlUtilTest.java b/core-util/src/test/java/org/signal/core/util/SqlUtilTest.java similarity index 96% rename from app/src/test/java/org/thoughtcrime/securesms/util/SqlUtilTest.java rename to core-util/src/test/java/org/signal/core/util/SqlUtilTest.java index 0ccddc4c90..0662cad03d 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/util/SqlUtilTest.java +++ b/core-util/src/test/java/org/signal/core/util/SqlUtilTest.java @@ -1,13 +1,14 @@ -package org.thoughtcrime.securesms.util; +package org.signal.core.util; import android.app.Application; import android.content.ContentValues; +import androidx.annotation.NonNull; + import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; -import org.thoughtcrime.securesms.recipients.RecipientId; import java.io.IOException; import java.util.ArrayList; @@ -132,7 +133,7 @@ public final class SqlUtilTest { @Test public void buildCollectionQuery_multipleRecipientIds() { - SqlUtil.Query updateQuery = SqlUtil.buildCollectionQuery("a", Arrays.asList(RecipientId.from(1), RecipientId.from(2), RecipientId.from(3))); + SqlUtil.Query updateQuery = SqlUtil.buildCollectionQuery("a", Arrays.asList(new TestId(1), new TestId(2), new TestId(3))); assertEquals("a IN (?, ?, ?)", updateQuery.getWhere()); assertArrayEquals(new String[] { "1", "2", "3" }, updateQuery.getWhereArgs()); @@ -280,4 +281,17 @@ public final class SqlUtilTest { throw new AssertionError(e); } } + + private static class TestId implements DatabaseId { + private final long id; + + private TestId(long id) { + this.id = id; + } + + @Override + public @NonNull String serialize() { + return String.valueOf(id); + } + } }