diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a5e1d047e6..3a4c3dd870 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -704,6 +704,7 @@ dependencies { implementation(project(":feature:camera")) implementation(project(":feature:registration")) implementation(project(":lib:apng")) + implementation(project(":lib:emoji")) implementation(libs.androidx.fragment.ktx) implementation(libs.androidx.appcompat) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 6a303e1dab..f706929155 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -63,8 +63,8 @@ import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.database.SqlCipherLibraryLoader; import org.thoughtcrime.securesms.dependencies.AppDependencies; import org.thoughtcrime.securesms.dependencies.ApplicationDependencyProvider; -import org.thoughtcrime.securesms.emoji.EmojiSource; -import org.thoughtcrime.securesms.emoji.JumboEmoji; +import org.signal.emoji.EmojiSource; +import org.signal.emoji.JumboEmoji; import org.thoughtcrime.securesms.gcm.FcmFetchManager; import org.thoughtcrime.securesms.glide.SignalGlideComponents; import org.thoughtcrime.securesms.jobmanager.impl.SealedSenderConstraint; @@ -122,7 +122,7 @@ import org.thoughtcrime.securesms.service.webrtc.AndroidTelecomUtil; import org.thoughtcrime.securesms.storage.StorageSyncHelper; import org.thoughtcrime.securesms.util.AppStartup; import org.thoughtcrime.securesms.util.BatterySnapshotTracker; -import org.thoughtcrime.securesms.util.DeviceProperties; +import org.signal.core.util.DeviceProperties; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.Environment; import org.signal.core.util.PlayServicesUtil; diff --git a/app/src/main/java/org/thoughtcrime/securesms/avatar/TextAvatarDrawable.kt b/app/src/main/java/org/thoughtcrime/securesms/avatar/TextAvatarDrawable.kt index 7257e481a1..5411f73b14 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/avatar/TextAvatarDrawable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/avatar/TextAvatarDrawable.kt @@ -11,7 +11,7 @@ import android.text.SpannableString import android.text.StaticLayout import android.text.TextPaint import androidx.core.graphics.withTranslation -import org.thoughtcrime.securesms.components.emoji.EmojiProvider +import org.signal.emoji.EmojiProvider class TextAvatarDrawable( private val context: Context, diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/BadgeImageView.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/BadgeImageView.kt index e0e002aa9e..ba67dbf162 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/BadgeImageView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/BadgeImageView.kt @@ -8,6 +8,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.RequestManager import com.bumptech.glide.load.resource.bitmap.DownsampleStrategy import org.signal.core.ui.util.ThemeUtil +import org.signal.core.util.ScreenDensity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.badges.load.BadgeSpriteTransformation import org.thoughtcrime.securesms.badges.load.GiftBadgeModel @@ -15,7 +16,6 @@ import org.thoughtcrime.securesms.badges.models.Badge import org.thoughtcrime.securesms.components.settings.app.subscription.BadgeImageSize import org.thoughtcrime.securesms.database.model.databaseprotos.GiftBadge import org.thoughtcrime.securesms.recipients.Recipient -import org.thoughtcrime.securesms.util.ScreenDensity class BadgeImageView @JvmOverloads constructor( context: Context, diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/Badges.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/Badges.kt index 3f8f43090b..7bccc78436 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/Badges.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/Badges.kt @@ -8,13 +8,13 @@ import com.google.android.flexbox.FlexDirection import com.google.android.flexbox.FlexboxLayoutManager import com.google.android.flexbox.JustifyContent import org.signal.core.util.DimensionUnit +import org.signal.core.util.ScreenDensity import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.BuildConfig import org.thoughtcrime.securesms.badges.models.Badge import org.thoughtcrime.securesms.badges.models.Badge.Category.Companion.fromCode import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.database.model.databaseprotos.BadgeList -import org.thoughtcrime.securesms.util.ScreenDensity import org.whispersystems.signalservice.api.profiles.SignalServiceProfile import java.math.BigDecimal import java.sql.Timestamp diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowConfirmationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowConfirmationFragment.kt index b0919cca0b..03be568f53 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowConfirmationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowConfirmationFragment.kt @@ -18,11 +18,11 @@ import org.signal.core.util.concurrent.LifecycleDisposable import org.signal.core.util.getParcelableCompat import org.signal.core.util.money.FiatMoney import org.signal.donations.InAppPaymentType +import org.signal.emoji.EmojiEventListener import org.thoughtcrime.securesms.MainActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.InputAwareLayout import org.thoughtcrime.securesms.components.KeyboardAwareLinearLayout -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener import org.thoughtcrime.securesms.components.emoji.MediaKeyboard import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt index 7b19156828..471e1e5226 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/DebugLogsPromptDialogFragment.kt @@ -17,6 +17,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle import org.signal.core.ui.BottomSheetUtil import org.signal.core.ui.FixedRoundedCornerBottomSheetDialogFragment +import org.signal.core.util.DeviceProperties import org.signal.core.util.concurrent.LifecycleDisposable import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R @@ -25,7 +26,6 @@ import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.notifications.SlowNotificationHeuristics import org.thoughtcrime.securesms.util.CommunicationActions -import org.thoughtcrime.securesms.util.DeviceProperties import org.thoughtcrime.securesms.util.NetworkUtil import org.thoughtcrime.securesms.util.PowerManagerCompat import org.thoughtcrime.securesms.util.SupportEmailUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java index e6c4bc4206..bcc6b9fb66 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java @@ -49,7 +49,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.animation.AnimationCompleteListener; import org.thoughtcrime.securesms.animation.AnimationStartListener; import org.thoughtcrime.securesms.audio.AudioRecordingHandler; -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener; +import org.signal.emoji.EmojiEventListener; import org.thoughtcrime.securesms.components.emoji.EmojiToggle; import org.thoughtcrime.securesms.components.emoji.MediaKeyboard; import org.thoughtcrime.securesms.components.voice.VoiceNotePlaybackState; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/SearchView.java b/app/src/main/java/org/thoughtcrime/securesms/components/SearchView.java index 3981c3a1b0..086f1a9c98 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/SearchView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/SearchView.java @@ -10,7 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.components.emoji.EmojiFilter; +import org.signal.emoji.EmojiFilter; import org.thoughtcrime.securesms.keyvalue.SignalStore; /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java index 4f0d1ec346..07b5ae0849 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java @@ -15,7 +15,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatEditText; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.components.emoji.EmojiProvider.EmojiDrawable; +import org.signal.emoji.EmojiProvider.EmojiDrawable; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.util.EditTextExtensionsKt; import org.signal.core.util.ServiceUtil; @@ -24,6 +24,7 @@ import org.signal.core.util.Util; import java.util.HashSet; import java.util.Set; +import org.signal.emoji.EmojiFilter; public class EmojiEditText extends AppCompatEditText { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiImageView.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiImageView.java index e576c7d72c..e9aedfe23d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiImageView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiImageView.java @@ -9,6 +9,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatImageView; import org.thoughtcrime.securesms.R; +import org.signal.emoji.EmojiProvider; public class EmojiImageView extends AppCompatImageView { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java index 81c906226b..ced2b29d51 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java @@ -26,6 +26,7 @@ import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel; import java.util.List; import java.util.Optional; +import org.signal.emoji.EmojiEventListener; public class EmojiPageView extends RecyclerView implements VariationSelectorListener { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageViewGridAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageViewGridAdapter.java index 1356826fc8..e9cf54b636 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageViewGridAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageViewGridAdapter.java @@ -14,6 +14,9 @@ import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory; import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter; import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel; import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder; +import org.signal.emoji.Emoji; +import org.signal.emoji.EmojiEventListener; +import org.signal.emoji.EmojiProvider; public class EmojiPageViewGridAdapter extends MappingAdapter implements PopupWindow.OnDismissListener { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java index 79acbdc729..13d9731124 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java @@ -38,12 +38,12 @@ import androidx.core.widget.TextViewCompat; import org.signal.core.util.concurrent.SignalExecutors; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.components.emoji.parsing.EmojiParser; +import org.signal.emoji.parsing.EmojiParser; import org.thoughtcrime.securesms.components.mention.MentionAnnotation; import org.thoughtcrime.securesms.components.mention.MentionRendererDelegate; import org.thoughtcrime.securesms.components.spoiler.SpoilerRendererDelegate; import org.thoughtcrime.securesms.conversation.MessageStyler; -import org.thoughtcrime.securesms.emoji.JumboEmoji; +import org.signal.emoji.JumboEmoji; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.signal.core.util.Util; import org.thoughtcrime.securesms.util.concurrent.SerialMonoLifoExecutor; @@ -56,6 +56,7 @@ import java.util.Optional; import java.util.concurrent.Executor; import kotlin.Unit; +import org.signal.emoji.EmojiProvider; public class EmojiTextView extends AppCompatTextView { @@ -309,7 +310,7 @@ public class EmojiTextView extends AppCompatTextView { if (scaleEmojis && candidates != null && candidates.allEmojis && - (candidates.hasJumboForAll() || JumboEmoji.canDownloadJumbo(getContext())) && + (candidates.hasJumboForAll() || JumboEmoji.canDownloadJumbo()) && (text instanceof Spanned && !MessageStyler.hasStyling((Spanned) text))) { int emojis = candidates.size(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiVariationSelectorPopup.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiVariationSelectorPopup.java index 6c63240923..826dcc523d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiVariationSelectorPopup.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiVariationSelectorPopup.java @@ -13,6 +13,8 @@ import androidx.core.content.ContextCompat; import org.thoughtcrime.securesms.R; import java.util.List; +import org.signal.emoji.EmojiEventListener; +import org.signal.emoji.EmojiProvider; public class EmojiVariationSelectorPopup extends PopupWindow { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java index 2fbcffb2b7..41eafef196 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java @@ -24,6 +24,8 @@ import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; +import org.signal.emoji.Emoji; +import org.signal.emoji.EmojiPageModel; public class RecentEmojiPageModel implements EmojiPageModel { private static final String TAG = Log.tag(RecentEmojiPageModel.class); @@ -62,7 +64,7 @@ public class RecentEmojiPageModel implements EmojiPageModel { } @Override public int getIconAttr() { - return R.attr.emoji_category_recent; + return org.signal.emoji.R.attr.emoji_category_recent; } @Override public List getEmoji() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt index a7577a0383..5d2bd72a3e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SimpleEmojiTextView.kt @@ -7,6 +7,7 @@ import android.text.TextUtils import android.util.AttributeSet import androidx.appcompat.widget.AppCompatTextView import org.signal.core.util.ThrottledDebouncer +import org.signal.emoji.EmojiProvider import org.thoughtcrime.securesms.components.spoiler.SpoilerRendererDelegate import org.thoughtcrime.securesms.keyvalue.SignalStore import java.util.Optional diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt index e23280d691..d1b075486e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/AppSettingsFragment.kt @@ -58,6 +58,7 @@ import org.signal.core.ui.compose.SignalIcons import org.signal.core.ui.compose.horizontalGutters import org.signal.core.ui.compose.theme.SignalTheme import org.signal.core.util.Util +import org.signal.emoji.Emojifier import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.AvatarImage import org.thoughtcrime.securesms.backup.v2.BackupRepository @@ -68,7 +69,6 @@ import org.thoughtcrime.securesms.banner.banners.UnauthorizedBanner import org.thoughtcrime.securesms.banner.ui.compose.Action import org.thoughtcrime.securesms.banner.ui.compose.DefaultBanner import org.thoughtcrime.securesms.banner.ui.compose.Importance -import org.thoughtcrime.securesms.components.emoji.Emojifier import org.thoughtcrime.securesms.components.settings.app.routes.AppSettingsRoute import org.thoughtcrime.securesms.components.settings.app.routes.AppSettingsRouter import org.thoughtcrime.securesms.components.settings.app.subscription.BadgeImageMedium diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt index 189ad69bdc..a63c06ef90 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsRepository.kt @@ -4,6 +4,7 @@ import android.content.Context import org.json.JSONObject import org.signal.core.util.concurrent.SignalExecutors import org.signal.donations.InAppPaymentType +import org.signal.emoji.EmojiFiles import org.thoughtcrime.securesms.database.MessageTable import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.RemoteMegaphoneRecord @@ -12,7 +13,6 @@ import org.thoughtcrime.securesms.database.model.addLink import org.thoughtcrime.securesms.database.model.addStyle import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList import org.thoughtcrime.securesms.dependencies.AppDependencies -import org.thoughtcrime.securesms.emoji.EmojiFiles import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob import org.thoughtcrime.securesms.jobs.CreateReleaseChannelJob import org.thoughtcrime.securesms.jobs.FetchRemoteMegaphoneImageJob diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt index 77f8f2bebc..4524170af6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/InternalSettingsState.kt @@ -1,7 +1,7 @@ package org.thoughtcrime.securesms.components.settings.app.internal +import org.signal.emoji.EmojiFiles import org.signal.ringrtc.CallManager -import org.thoughtcrime.securesms.emoji.EmojiFiles data class InternalSettingsState( val seeMoreUserDetails: Boolean, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/AddAllowedMembersFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/AddAllowedMembersFragment.kt index 22fbe5cff7..a483b3a5da 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/AddAllowedMembersFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/AddAllowedMembersFragment.kt @@ -36,8 +36,8 @@ import org.signal.core.ui.compose.Texts import org.signal.core.ui.compose.horizontalGutters import org.signal.core.util.concurrent.LifecycleDisposable import org.signal.core.util.logging.Log +import org.signal.emoji.EmojiStrings import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiStrings import org.thoughtcrime.securesms.components.settings.app.notifications.profiles.AddAllowedMembersViewModel.NotificationProfileAndRecipients import org.thoughtcrime.securesms.database.RecipientTable import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/EditNotificationProfileFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/EditNotificationProfileFragment.kt index 1411d3183e..a56160e859 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/EditNotificationProfileFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/EditNotificationProfileFragment.kt @@ -18,8 +18,8 @@ import org.signal.core.ui.BottomSheetUtil import org.signal.core.util.BreakIteratorCompat import org.signal.core.util.EditTextUtil import org.signal.core.util.concurrent.LifecycleDisposable +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment import org.thoughtcrime.securesms.components.settings.app.notifications.profiles.EditNotificationProfileViewModel.SaveNotificationProfileResult import org.thoughtcrime.securesms.components.settings.app.notifications.profiles.models.NotificationProfileNamePreset diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfileComponents.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfileComponents.kt index 2bea1e938e..de92a4263a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfileComponents.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfileComponents.kt @@ -32,9 +32,9 @@ import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.Rows import org.signal.core.ui.compose.horizontalGutters import org.signal.core.ui.compose.theme.SignalTheme +import org.signal.emoji.Emojifier import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.AvatarImage -import org.thoughtcrime.securesms.components.emoji.Emojifier import org.thoughtcrime.securesms.components.settings.app.subscription.BadgeImageMedium import org.thoughtcrime.securesms.database.RecipientTable import org.thoughtcrime.securesms.recipients.Recipient diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfileDetailsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfileDetailsFragment.kt index a20e42ec0c..2f0894df79 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfileDetailsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfileDetailsFragment.kt @@ -11,8 +11,8 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import io.reactivex.rxjava3.kotlin.subscribeBy import org.signal.core.util.concurrent.LifecycleDisposable +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment import org.thoughtcrime.securesms.components.settings.DSLSettingsIcon diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesFragment.kt index 11729796f2..6a3f4391f4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/NotificationProfilesFragment.kt @@ -37,8 +37,8 @@ import org.signal.core.ui.compose.Scaffolds import org.signal.core.ui.compose.SignalIcons import org.signal.core.ui.compose.Texts import org.signal.core.ui.compose.horizontalGutters +import org.signal.emoji.EmojiStrings import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiStrings import org.thoughtcrime.securesms.components.settings.app.notifications.profiles.models.NotificationProfileRow import org.thoughtcrime.securesms.conversation.colors.AvatarColor import org.thoughtcrime.securesms.notifications.profiles.NotificationProfile diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfileNamePreset.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfileNamePreset.kt index 18d60a7534..1f6e8e1212 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfileNamePreset.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfileNamePreset.kt @@ -4,8 +4,8 @@ import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.annotation.StringRes +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfilePreference.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfilePreference.kt index f177909ebf..b2f61befde 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfilePreference.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfilePreference.kt @@ -31,8 +31,8 @@ import com.google.android.material.materialswitch.MaterialSwitch import org.signal.core.ui.compose.DayNightPreviews import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.horizontalGutters +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.components.settings.DSLSettingsIcon import org.thoughtcrime.securesms.components.settings.DSLSettingsText import org.thoughtcrime.securesms.components.settings.PreferenceModel diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/group/GroupSettingsScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/group/GroupSettingsScreen.kt index b61fcd3f37..484aafaa47 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/group/GroupSettingsScreen.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/group/GroupSettingsScreen.kt @@ -37,9 +37,9 @@ import org.signal.core.ui.compose.Dividers import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.Rows import org.signal.core.ui.compose.Texts +import org.signal.emoji.EmojiText import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.AvatarImage -import org.thoughtcrime.securesms.components.emoji.EmojiText import org.thoughtcrime.securesms.components.settings.conversation.group.GroupSettingsState.Dialog import org.thoughtcrime.securesms.components.settings.conversation.shared.ArchiveChatRow import org.thoughtcrime.securesms.components.settings.conversation.shared.BlockRow diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationHeader.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationHeader.kt index 8934976480..5bd7a0335b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationHeader.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationHeader.kt @@ -37,12 +37,12 @@ import androidx.compose.ui.viewinterop.AndroidView import org.signal.core.ui.compose.Buttons import org.signal.core.ui.compose.DayNightPreviews import org.signal.core.ui.compose.Previews +import org.signal.emoji.EmojiText import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.AvatarImage import org.thoughtcrime.securesms.avatar.view.AvatarView import org.thoughtcrime.securesms.badges.BadgeImageView import org.thoughtcrime.securesms.badges.models.Badge -import org.thoughtcrime.securesms.components.emoji.EmojiText import org.thoughtcrime.securesms.database.model.StoryViewState import org.thoughtcrime.securesms.profiles.ProfileName import org.thoughtcrime.securesms.recipients.Recipient diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsRows.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsRows.kt index 2bdc586aed..d6f8c21973 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsRows.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsRows.kt @@ -25,9 +25,9 @@ import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.Rows import org.signal.core.ui.compose.Rows.TextAndLabel import org.signal.core.ui.compose.theme.SignalTheme +import org.signal.emoji.EmojiText import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.AvatarImage -import org.thoughtcrime.securesms.components.emoji.EmojiText import org.thoughtcrime.securesms.profiles.ProfileName import org.thoughtcrime.securesms.recipients.Recipient diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsScaffold.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsScaffold.kt index 79302672c9..de238d4fed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsScaffold.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsScaffold.kt @@ -35,9 +35,9 @@ import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.Rows import org.signal.core.ui.compose.Scaffolds import org.signal.core.ui.compose.SignalIcons +import org.signal.emoji.EmojiText import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.AvatarImage -import org.thoughtcrime.securesms.components.emoji.EmojiText import org.thoughtcrime.securesms.recipients.Recipient import org.signal.core.ui.R as CoreUiR diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/AdditionalActionsPopup.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/AdditionalActionsPopup.kt index e22cf1ba0d..ca4c0b7f17 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/AdditionalActionsPopup.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/AdditionalActionsPopup.kt @@ -38,8 +38,8 @@ import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.TriggerAlignedPopup import org.signal.core.ui.compose.TriggerAlignedPopupState import org.signal.core.ui.compose.theme.SignalTheme +import org.signal.emoji.EmojiImage import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiImage data class AdditionalActionsState( val triggerAlignedPopupState: TriggerAlignedPopupState, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreen.kt index c4e2e89d3b..0c5224ad9c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreen.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/v2/CallScreen.kt @@ -67,8 +67,8 @@ import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.TriggerAlignedPopupState import org.signal.core.ui.compose.theme.SignalTheme import org.signal.core.util.DimensionUnit +import org.signal.emoji.EmojiStrings import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiStrings import org.thoughtcrime.securesms.components.webrtc.WebRtcLocalRenderState import org.thoughtcrime.securesms.components.webrtc.controls.RaiseHandSnackbar import org.thoughtcrime.securesms.conversation.colors.ChatColorsPalette diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearch.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearch.kt index 6a4bef0104..312bfc862b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearch.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearch.kt @@ -33,8 +33,8 @@ import org.signal.core.ui.compose.LazyColumnFastScroller import org.signal.core.ui.compose.LocalFragmentManager import org.signal.core.ui.compose.Previews import org.signal.core.util.logging.Log +import org.signal.emoji.Emojifier import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.Emojifier import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.stories.settings.custom.PrivateStorySettingsFragment import org.thoughtcrime.securesms.stories.settings.my.MyStorySettingsFragment diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchModels.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchModels.kt index 0c10b6535c..71ae7e4d89 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchModels.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchModels.kt @@ -42,13 +42,13 @@ import io.reactivex.rxjava3.disposables.Disposable import org.signal.core.ui.compose.FastScrollCharacterProvider import org.signal.core.util.BreakIteratorCompat import org.signal.core.util.requireDrawable +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatar import org.thoughtcrime.securesms.avatar.view.AvatarView import org.thoughtcrime.securesms.badges.BadgeImageView import org.thoughtcrime.securesms.components.AvatarImageView import org.thoughtcrime.securesms.components.FromTextView -import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.components.menu.ActionItem import org.thoughtcrime.securesms.components.menu.SignalContextMenu import org.thoughtcrime.securesms.contacts.LetterHeaderDecoration diff --git a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactUtil.java b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactUtil.java index 1911c2005a..d1c5b93caa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactUtil.java @@ -20,7 +20,7 @@ import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; import org.signal.core.util.logging.Log; import org.signal.glide.decryptableuri.DecryptableUri; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.components.emoji.EmojiStrings; +import org.signal.emoji.EmojiStrings; import org.thoughtcrime.securesms.contactshare.Contact.Email; import org.thoughtcrime.securesms.contactshare.Contact.Phone; import org.thoughtcrime.securesms.contactshare.Contact.PostalAddress; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java index e4972c01ab..74e7e4d641 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationReactionOverlay.java @@ -35,7 +35,7 @@ import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.animation.AnimationCompleteListener; import org.thoughtcrime.securesms.components.emoji.EmojiImageView; -import org.thoughtcrime.securesms.components.emoji.EmojiUtil; +import org.signal.emoji.EmojiUtil; import org.thoughtcrime.securesms.components.menu.ActionItem; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.ReactionRecord; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/HeadlineDisplayName.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/HeadlineDisplayName.kt index a013e1eb20..9cd422e5f7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/HeadlineDisplayName.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/HeadlineDisplayName.kt @@ -32,8 +32,8 @@ import org.signal.core.ui.compose.LargeFontPreviews import org.signal.core.ui.compose.Previews import org.signal.core.ui.fonts.SignalSymbols import org.signal.core.ui.fonts.SignalSymbols.SignalSymbol +import org.signal.emoji.Emojifier import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.Emojifier private const val VERIFIED_BADGE_ID = "verified_badge" diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/EnableCallNotificationSettingsDialog.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/EnableCallNotificationSettingsDialog.java index b326b55cbb..5b55f93883 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/EnableCallNotificationSettingsDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/error/EnableCallNotificationSettingsDialog.java @@ -27,7 +27,7 @@ import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.notifications.NotificationChannels; -import org.thoughtcrime.securesms.util.DeviceProperties; +import org.signal.core.util.DeviceProperties; /** * Provide basic steps to fix potential call notification issues based on what we can detect on the system diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index d374104e5f..eb5dd352dc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -136,6 +136,7 @@ import org.signal.core.util.requireDrawable import org.signal.core.util.requireParcelableCompat import org.signal.core.util.setActionItemTint import org.signal.donations.InAppPaymentType +import org.signal.emoji.EmojiEventListener import org.signal.ringrtc.CallLinkRootKey import org.thoughtcrime.securesms.BlockUnblockDialog import org.thoughtcrime.securesms.MainActivity @@ -166,7 +167,6 @@ import org.thoughtcrime.securesms.components.SignalProgressDialog import org.thoughtcrime.securesms.components.ViewBinderDelegate import org.thoughtcrime.securesms.components.compose.ActionModeTopBarView import org.thoughtcrime.securesms.components.compose.DeleteSyncEducationDialog -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener import org.thoughtcrime.securesms.components.emoji.MediaKeyboard import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel import org.thoughtcrime.securesms.components.location.SignalPlace diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt index afa35a99a1..695ab0eeba 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationRepository.kt @@ -32,13 +32,13 @@ import org.signal.core.util.concurrent.MaybeCompat import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.dp import org.signal.core.util.logging.Log +import org.signal.emoji.EmojiStrings import org.signal.paging.PagedData import org.signal.paging.PagingConfig import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.ShortcutLauncherActivity import org.thoughtcrime.securesms.attachments.TombstoneAttachment import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatarDrawable -import org.thoughtcrime.securesms.components.emoji.EmojiStrings import org.thoughtcrime.securesms.contactshare.Contact import org.thoughtcrime.securesms.contactshare.ContactUtil import org.thoughtcrime.securesms.conversation.ConversationMessage diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java index f19add1953..4476fac4e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListItem.java @@ -64,7 +64,7 @@ import org.thoughtcrime.securesms.components.AvatarImageView; import org.thoughtcrime.securesms.components.DeliveryStatusView; import org.thoughtcrime.securesms.components.FromTextView; import org.thoughtcrime.securesms.components.TypingIndicatorView; -import org.thoughtcrime.securesms.components.emoji.EmojiStrings; +import org.signal.emoji.EmojiStrings; import org.thoughtcrime.securesms.components.emoji.EmojiTextView; import org.thoughtcrime.securesms.contacts.paged.ContactSearchData; import org.thoughtcrime.securesms.conversation.MessageStyler; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadBodyUtil.java b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadBodyUtil.java index 5e50f2c7b3..6b437210b4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadBodyUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadBodyUtil.java @@ -10,7 +10,7 @@ import androidx.annotation.StringRes; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.components.emoji.EmojiStrings; +import org.signal.emoji.EmojiStrings; import org.thoughtcrime.securesms.contactshare.Contact; import org.thoughtcrime.securesms.contactshare.ContactUtil; import org.thoughtcrime.securesms.database.model.MessageRecord; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java index a74010be84..f83302169e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java @@ -43,8 +43,8 @@ import org.signal.core.util.logging.Log; import org.signal.storageservice.storage.protos.groups.local.DecryptedGroup; import org.signal.storageservice.storage.protos.groups.local.DecryptedGroupChange; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.components.emoji.EmojiProvider; -import org.thoughtcrime.securesms.components.emoji.parsing.EmojiParser; +import org.signal.emoji.EmojiProvider; +import org.signal.emoji.parsing.EmojiParser; import org.thoughtcrime.securesms.components.transfercontrols.TransferControls; import org.thoughtcrime.securesms.database.CollapsedState; import org.thoughtcrime.securesms.database.MessageTypes; @@ -58,8 +58,8 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.MessageExtras; import org.thoughtcrime.securesms.database.model.databaseprotos.ProfileChangeDetails; import org.thoughtcrime.securesms.database.model.databaseprotos.SessionSwitchoverEvent; import org.thoughtcrime.securesms.database.model.databaseprotos.ThreadMergeEvent; -import org.thoughtcrime.securesms.emoji.EmojiSource; -import org.thoughtcrime.securesms.emoji.JumboEmoji; +import org.signal.emoji.EmojiSource; +import org.signal.emoji.JumboEmoji; import org.thoughtcrime.securesms.groups.GroupMigrationMembershipChange; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.mms.Slide; @@ -914,7 +914,7 @@ public abstract class MessageRecord extends DisplayRecord { if (isJumboji == null) { if (getBody().length() <= EmojiSource.getLatest().getMaxEmojiLength() * JumboEmoji.MAX_JUMBOJI_COUNT) { EmojiParser.CandidateList candidates = EmojiProvider.getCandidates(getDisplayBody(context)); - isJumboji = candidates != null && candidates.allEmojis && candidates.size() <= JumboEmoji.MAX_JUMBOJI_COUNT && (candidates.hasJumboForAll() || JumboEmoji.canDownloadJumbo(context)); + isJumboji = candidates != null && candidates.allEmojis && candidates.size() <= JumboEmoji.MAX_JUMBOJI_COUNT && (candidates.hasJumboForAll() || JumboEmoji.canDownloadJumbo()); } else { isJumboji = false; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt b/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt index 4895d571a5..5c4fd449c2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt @@ -15,6 +15,7 @@ import org.signal.core.util.contentproviders.BlobProvider import org.signal.core.util.orNull import org.signal.core.util.resettableLazy import org.signal.donations.permits.DonationPermitsRepository +import org.signal.emoji.EmojiDependencies import org.signal.glide.SignalGlideDependencies import org.signal.libsignal.net.Network import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations @@ -126,6 +127,7 @@ object AppDependencies { SignalGlideDependencies.init(application, SignalGlideDependenciesProvider) CameraDependencies.init(application, CameraDependenciesProvider) MediaSendDependencies.init(application, MediaSendDependenciesProvider) + EmojiDependencies.init(application, EmojiDependenciesProvider) } @JvmStatic diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/EmojiDependenciesProvider.kt b/app/src/main/java/org/thoughtcrime/securesms/dependencies/EmojiDependenciesProvider.kt new file mode 100644 index 0000000000..5cfe1b5b29 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/EmojiDependenciesProvider.kt @@ -0,0 +1,43 @@ +/* + * Copyright 2026 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.thoughtcrime.securesms.dependencies + +import okhttp3.Response +import org.signal.core.util.crypto.AttachmentSecretStore +import org.signal.emoji.EmojiDependencies +import org.thoughtcrime.securesms.crypto.AppAttachmentSecretStore +import org.thoughtcrime.securesms.jobmanager.impl.AutoDownloadEmojiConstraint +import org.thoughtcrime.securesms.keyvalue.SignalStore +import org.thoughtcrime.securesms.s3.S3 + +object EmojiDependenciesProvider : EmojiDependencies.Provider { + override fun providePreferSystemEmoji(): Boolean = SignalStore.settings.isPreferSystemEmoji + + override fun provideForceBuiltInEmoji(): Boolean = SignalStore.internal.forceBuiltInEmoji + + override fun provideAttachmentSecretStore(): AttachmentSecretStore = AppAttachmentSecretStore + + override fun provideRemote(): EmojiDependencies.RemoteSource = S3RemoteSource + + override fun provideCanAutoDownloadJumboEmoji(): Boolean { + return AutoDownloadEmojiConstraint.canAutoDownloadJumboEmoji(AppDependencies.application) + } + + override fun provideDownloadedJumboSheets(version: Int): Set = SignalStore.emoji.getJumboEmojiSheets(version) + + override fun onJumboSheetDownloaded(version: Int, sheet: String) = SignalStore.emoji.addJumboEmojiSheet(version, sheet) + + private object S3RemoteSource : EmojiDependencies.RemoteSource { + override val staticPath: String = S3.STATIC_PATH + override val dynamicPath: String = S3.DYNAMIC_PATH + + override fun getLong(endpoint: String): Long = S3.getLong(endpoint) + + override fun getObjectMd5(endpoint: String): ByteArray? = S3.getObjectMD5(endpoint) + + override fun getObject(endpoint: String): Response = S3.getObject(endpoint) + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiRemote.kt b/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiRemote.kt deleted file mode 100644 index 23f40451c4..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiRemote.kt +++ /dev/null @@ -1,62 +0,0 @@ -package org.thoughtcrime.securesms.emoji - -import okhttp3.Response -import org.thoughtcrime.securesms.s3.S3 -import java.io.IOException - -private const val BASE_STATIC_BUCKET_URI = "${S3.STATIC_PATH}/android/emoji" - -/** - * Responsible for communicating with S3 to download Emoji related objects. - */ -object EmojiRemote { - - private const val VERSION_URI = "${S3.DYNAMIC_PATH}/android/emoji/version_v3.txt" - - @JvmStatic - @Throws(IOException::class) - fun getVersion(): Int { - return S3.getLong(VERSION_URI).toInt() - } - - /** - * Downloads and returns the MD5 hash stored in an S3 object's ETag - */ - @JvmStatic - fun getMd5(emojiRequest: EmojiRequest): ByteArray? { - return S3.getObjectMD5(emojiRequest.uri) - } - - /** - * Downloads an object for the specified name. - */ - @JvmStatic - fun getObject(emojiRequest: EmojiRequest): Response { - return S3.getObject(emojiRequest.uri) - } -} - -interface EmojiRequest { - val uri: String -} - -class EmojiJsonRequest(version: Int) : EmojiRequest { - override val uri: String = "$BASE_STATIC_BUCKET_URI/$version/emoji_data.json" -} - -class EmojiImageRequest( - version: Int, - density: String, - name: String, - format: String -) : EmojiRequest { - override val uri: String = "$BASE_STATIC_BUCKET_URI/$version/$density/$name.$format" -} - -class EmojiFileRequest( - version: Int, - density: String, - name: String -) : EmojiRequest { - override val uri: String = "$BASE_STATIC_BUCKET_URI/$version/$density/$name" -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/fonts/Fonts.kt b/app/src/main/java/org/thoughtcrime/securesms/fonts/Fonts.kt index c9d14a7261..64686b9f02 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/fonts/Fonts.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/fonts/Fonts.kt @@ -3,11 +3,11 @@ package org.thoughtcrime.securesms.fonts import android.content.Context import android.graphics.Typeface import androidx.annotation.WorkerThread +import org.signal.core.util.ListenableFutureTask import org.signal.core.util.ThreadUtil import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.s3.S3 -import org.thoughtcrime.securesms.util.ListenableFutureTask import java.io.File import java.util.Collections import java.util.Locale diff --git a/app/src/main/java/org/thoughtcrime/securesms/fonts/TypefaceCache.kt b/app/src/main/java/org/thoughtcrime/securesms/fonts/TypefaceCache.kt index 3a132c5f65..f85173799e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/fonts/TypefaceCache.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/fonts/TypefaceCache.kt @@ -4,7 +4,7 @@ import android.content.Context import android.graphics.Typeface import io.reactivex.rxjava3.core.Single import io.reactivex.rxjava3.schedulers.Schedulers -import org.thoughtcrime.securesms.util.FutureTaskListener +import org.signal.core.util.FutureTaskListener import org.thoughtcrime.securesms.util.LocaleUtil import java.util.Collections import java.util.concurrent.ExecutionException diff --git a/app/src/main/java/org/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackPolicy.java b/app/src/main/java/org/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackPolicy.java index 2a6bed6cd2..925833f31f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackPolicy.java +++ b/app/src/main/java/org/thoughtcrime/securesms/giph/mp4/GiphyMp4PlaybackPolicy.java @@ -1,7 +1,7 @@ package org.thoughtcrime.securesms.giph.mp4; import org.thoughtcrime.securesms.dependencies.AppDependencies; -import org.thoughtcrime.securesms.util.DeviceProperties; +import org.signal.core.util.DeviceProperties; import java.util.concurrent.TimeUnit; diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabel.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabel.kt index 9e7e4502bb..422cabca49 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabel.kt @@ -9,7 +9,7 @@ import androidx.annotation.ColorInt import org.signal.core.util.BidiUtil import org.signal.core.util.BreakIteratorCompat import org.signal.core.util.StringUtil -import org.thoughtcrime.securesms.components.emoji.EmojiUtil +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.conversation.colors.NameColor import org.thoughtcrime.securesms.recipients.Recipient diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelFragment.kt index d05a71aa37..77306d8418 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelFragment.kt @@ -61,9 +61,9 @@ import org.signal.core.ui.compose.Scaffolds import org.signal.core.ui.compose.SignalIcons import org.signal.core.util.isNotNullOrBlank import org.signal.core.util.requireParcelableCompat +import org.signal.emoji.Emojifier import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.AvatarImage -import org.thoughtcrime.securesms.components.emoji.Emojifier import org.thoughtcrime.securesms.conversation.colors.NameColor import org.thoughtcrime.securesms.groups.GroupId import org.thoughtcrime.securesms.groups.memberlabel.MemberLabelUiState.SaveState diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelPill.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelPill.kt index 42baa98bda..5258d6364a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelPill.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelPill.kt @@ -29,7 +29,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import org.signal.core.ui.compose.DayNightPreviews import org.signal.core.ui.compose.Previews -import org.thoughtcrime.securesms.components.emoji.Emojifier +import org.signal.emoji.Emojifier object MemberLabelPill { val contentPaddingNormal = PaddingValues(horizontal = 12.dp, vertical = 5.dp) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/SenderNameWithLabel.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/SenderNameWithLabel.kt index 4fe75010cd..671cbd5e01 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/SenderNameWithLabel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/memberlabel/SenderNameWithLabel.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import org.signal.core.ui.compose.DayNightPreviews import org.signal.core.ui.compose.Previews -import org.thoughtcrime.securesms.components.emoji.Emojifier +import org.signal.emoji.Emojifier private val defaultLabelTextStyle: @Composable () -> TextStyle = { MaterialTheme.typography.bodySmall } diff --git a/app/src/main/java/org/thoughtcrime/securesms/help/HelpScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/help/HelpScreen.kt index 6d316a0a37..d1033c3e94 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/help/HelpScreen.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/help/HelpScreen.kt @@ -70,8 +70,8 @@ import org.signal.core.ui.compose.Scaffolds import org.signal.core.ui.compose.SignalIcons import org.signal.core.ui.compose.Snackbars import org.signal.core.ui.compose.horizontalGutters +import org.signal.emoji.EmojiImage import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiImage import org.thoughtcrime.securesms.util.CommunicationActions import org.thoughtcrime.securesms.util.SupportEmailUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java index 08123d722d..d0e9915136 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/DownloadLatestEmojiDataJob.java @@ -9,24 +9,24 @@ import androidx.annotation.Nullable; import java.util.stream.Collectors; import org.signal.core.util.logging.Log; -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel; +import org.signal.emoji.EmojiPageModel; import org.thoughtcrime.securesms.dependencies.AppDependencies; -import org.thoughtcrime.securesms.emoji.EmojiData; -import org.thoughtcrime.securesms.emoji.EmojiDownloader; -import org.thoughtcrime.securesms.emoji.EmojiFiles; -import org.thoughtcrime.securesms.emoji.EmojiImageRequest; -import org.thoughtcrime.securesms.emoji.EmojiJsonRequest; -import org.thoughtcrime.securesms.emoji.EmojiPageCache; -import org.thoughtcrime.securesms.emoji.EmojiRemote; -import org.thoughtcrime.securesms.emoji.EmojiSource; -import org.thoughtcrime.securesms.emoji.JumboEmoji; +import org.signal.emoji.EmojiData; +import org.signal.emoji.EmojiDownloader; +import org.signal.emoji.EmojiFiles; +import org.signal.emoji.EmojiImageRequest; +import org.signal.emoji.EmojiJsonRequest; +import org.signal.emoji.EmojiPageCache; +import org.signal.emoji.EmojiRemote; +import org.signal.emoji.EmojiSource; +import org.signal.emoji.JumboEmoji; import org.thoughtcrime.securesms.jobmanager.JsonJobData; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.AutoDownloadEmojiConstraint; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.util.FileUtils; -import org.thoughtcrime.securesms.util.ScreenDensity; +import org.signal.core.util.ScreenDensity; import java.io.File; import java.io.IOException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/FontDownloaderJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/FontDownloaderJob.kt index b40e417432..78841cad8b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/FontDownloaderJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/FontDownloaderJob.kt @@ -1,13 +1,13 @@ package org.thoughtcrime.securesms.jobs import android.graphics.Typeface +import org.signal.core.util.FutureTaskListener import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.fonts.Fonts import org.thoughtcrime.securesms.fonts.SupportedScript import org.thoughtcrime.securesms.fonts.TextFont import org.thoughtcrime.securesms.jobmanager.Job import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint -import org.thoughtcrime.securesms.util.FutureTaskListener import org.thoughtcrime.securesms.util.LocaleUtil import java.util.concurrent.CountDownLatch import java.util.concurrent.ExecutionException diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardCallback.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardCallback.kt index 870f950bcb..b3f2d1c85b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardCallback.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardCallback.kt @@ -1,6 +1,6 @@ package org.thoughtcrime.securesms.keyboard.emoji -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener +import org.signal.emoji.EmojiEventListener import org.thoughtcrime.securesms.keyboard.emoji.search.EmojiSearchFragment interface EmojiKeyboardCallback : diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageCategoryMappingModel.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageCategoryMappingModel.kt index e9db7f9e75..d82bd0e5bd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageCategoryMappingModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageCategoryMappingModel.kt @@ -3,16 +3,17 @@ package org.thoughtcrime.securesms.keyboard.emoji import android.content.Context import android.graphics.drawable.Drawable import org.signal.core.ui.util.ThemeUtil +import org.signal.emoji.EmojiCategory import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel -import org.thoughtcrime.securesms.emoji.EmojiCategory import org.thoughtcrime.securesms.keyboard.KeyboardPageCategoryIconMappingModel +import org.signal.emoji.R as EmojiR class RecentsMappingModel(override val selected: Boolean) : KeyboardPageCategoryIconMappingModel { override val key: String = RecentEmojiPageModel.KEY override fun getIcon(context: Context): Drawable { - return requireNotNull(ThemeUtil.getThemedDrawable(context, R.attr.emoji_category_recent)) + return requireNotNull(ThemeUtil.getThemedDrawable(context, EmojiR.attr.emoji_category_recent)) } override fun getContentDescription(context: Context): String { diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageFragment.kt index f983fd8685..6acaadd099 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageFragment.kt @@ -11,8 +11,8 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE import com.google.android.material.appbar.AppBarLayout +import org.signal.emoji.EmojiEventListener import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener import org.thoughtcrime.securesms.components.emoji.EmojiPageView import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter.EmojiHeader diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageRepository.kt index 093d44aaf7..b707f453d1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageRepository.kt @@ -2,9 +2,9 @@ package org.thoughtcrime.securesms.keyboard.emoji import android.content.Context import org.signal.core.util.concurrent.SignalExecutors -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel +import org.signal.emoji.EmojiPageModel +import org.signal.emoji.EmojiSource.Companion.latest import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel -import org.thoughtcrime.securesms.emoji.EmojiSource.Companion.latest import org.thoughtcrime.securesms.util.TextSecurePreferences import java.util.function.Consumer diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageViewModel.kt index 9dfc3d0dae..fbde79010d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiKeyboardPageViewModel.kt @@ -5,12 +5,12 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider +import org.signal.emoji.EmojiCategory +import org.signal.emoji.EmojiPageModel import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter.EmojiHeader import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel import org.thoughtcrime.securesms.dependencies.AppDependencies -import org.thoughtcrime.securesms.emoji.EmojiCategory import org.thoughtcrime.securesms.util.DefaultValueLiveData import org.thoughtcrime.securesms.util.TextSecurePreferences import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiPageMappingModel.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiPageMappingModel.kt index 3465e462e6..55350fdc4f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiPageMappingModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiPageMappingModel.kt @@ -1,6 +1,6 @@ package org.thoughtcrime.securesms.keyboard.emoji -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel +import org.signal.emoji.EmojiPageModel import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel class EmojiPageMappingModel(val key: String, val emojiPageModel: EmojiPageModel) : MappingModel { diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiPageModelExtensions.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiPageModelExtensions.kt index 807b34a968..e7c5e202f0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiPageModelExtensions.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/EmojiPageModelExtensions.kt @@ -1,11 +1,11 @@ package org.thoughtcrime.securesms.keyboard.emoji -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel +import org.signal.emoji.EmojiCategory +import org.signal.emoji.EmojiPageModel +import org.signal.emoji.EmojiSource +import org.signal.emoji.parsing.EmojiTree import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel -import org.thoughtcrime.securesms.components.emoji.parsing.EmojiTree -import org.thoughtcrime.securesms.emoji.EmojiCategory -import org.thoughtcrime.securesms.emoji.EmojiSource import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel fun EmojiPageModel.toMappingModels(): List> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchFragment.kt index 25a69a0f13..d4217a7b22 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchFragment.kt @@ -11,9 +11,9 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import org.signal.emoji.EmojiEventListener import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.KeyboardAwareLinearLayout -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener import org.thoughtcrime.securesms.components.emoji.EmojiPageView import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter import org.thoughtcrime.securesms.keyboard.emoji.KeyboardPageSearchView diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchRepository.kt index 7716cf0a6d..ff9897e87a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchRepository.kt @@ -5,12 +5,12 @@ import android.net.Uri import io.reactivex.rxjava3.core.Single import io.reactivex.rxjava3.schedulers.Schedulers import org.signal.core.util.concurrent.SignalExecutors -import org.thoughtcrime.securesms.components.emoji.Emoji -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel +import org.signal.emoji.Emoji +import org.signal.emoji.EmojiPageModel +import org.signal.emoji.EmojiSource import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel import org.thoughtcrime.securesms.database.EmojiSearchTable import org.thoughtcrime.securesms.database.SignalDatabase -import org.thoughtcrime.securesms.emoji.EmojiSource import org.thoughtcrime.securesms.util.TextSecurePreferences import java.util.function.Consumer diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchViewModel.kt index 950b1d246f..5e9b4646f4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/emoji/search/EmojiSearchViewModel.kt @@ -4,7 +4,7 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel +import org.signal.emoji.EmojiPageModel import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel import org.thoughtcrime.securesms.keyboard.emoji.toMappingModels import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerSearchRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerSearchRepository.kt index baeb6a21b6..6edf44d58e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerSearchRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/keyboard/sticker/StickerSearchRepository.kt @@ -2,7 +2,7 @@ package org.thoughtcrime.securesms.keyboard.sticker import androidx.annotation.WorkerThread import org.signal.core.models.database.StickerRecord -import org.thoughtcrime.securesms.components.emoji.EmojiUtil +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.database.EmojiSearchTable import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.StickerTables diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/EmojiValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/EmojiValues.java index a8aae5d505..7b6a92f9d7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/EmojiValues.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/EmojiValues.java @@ -5,7 +5,7 @@ import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.thoughtcrime.securesms.components.emoji.EmojiUtil; +import org.signal.emoji.EmojiUtil; import org.signal.core.util.Util; import java.util.ArrayList; diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionBattery.kt b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionBattery.kt index c7687fe433..a66aa5c82b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionBattery.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionBattery.kt @@ -7,9 +7,9 @@ import android.os.Build import android.os.PowerManager import android.os.Process import android.os.SystemClock +import org.signal.core.util.DeviceProperties import org.signal.core.util.bytes import org.thoughtcrime.securesms.util.BucketInfo -import org.thoughtcrime.securesms.util.DeviceProperties import org.thoughtcrime.securesms.util.WakeLockUtil import java.util.Locale import kotlin.time.Duration.Companion.milliseconds diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.kt b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.kt index 421a61defb..f4204eeba1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionSystemInfo.kt @@ -10,26 +10,26 @@ import com.google.android.gms.common.ConnectionResult import com.google.android.gms.common.GoogleApiAvailability import org.signal.core.ui.getWindowSizeClass import org.signal.core.util.BidiUtil +import org.signal.core.util.DeviceProperties import org.signal.core.util.DiskUtil import org.signal.core.util.FontUtil.canRenderEmojiAtFontSize +import org.signal.core.util.ScreenDensity import org.signal.core.util.ServiceUtil import org.signal.core.util.Util import org.signal.core.util.bytes import org.signal.core.util.getAnimationScale import org.signal.core.util.roundedString +import org.signal.emoji.EmojiFiles.Version.Companion.readVersion import org.thoughtcrime.securesms.BuildConfig import org.thoughtcrime.securesms.dependencies.AppDependencies -import org.thoughtcrime.securesms.emoji.EmojiFiles.Version.Companion.readVersion import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.net.StandardUserAgentInterceptor import org.thoughtcrime.securesms.notifications.SlowNotificationHeuristics.isHavingDelayedNotifications import org.thoughtcrime.securesms.recipients.Recipient.Companion.self import org.thoughtcrime.securesms.service.webrtc.AndroidTelecomUtil.telecomSupported import org.thoughtcrime.securesms.util.AppSignatureUtil -import org.thoughtcrime.securesms.util.DeviceProperties import org.thoughtcrime.securesms.util.NetworkUtil import org.thoughtcrime.securesms.util.PowerManagerCompat -import org.thoughtcrime.securesms.util.ScreenDensity import org.thoughtcrime.securesms.util.TextSecurePreferences import org.thoughtcrime.securesms.util.VersionTracker.getDaysSinceFirstInstalled import java.util.Locale diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt index fe79b981d1..ece0f26efc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt @@ -33,13 +33,13 @@ import org.signal.core.util.getParcelableArrayListExtraCompat import org.signal.core.util.getParcelableExtraCompat import org.signal.core.util.logging.Log import org.signal.core.util.overrideActivityTransitionCompat +import org.signal.emoji.EmojiEventListener import org.signal.mediasend.MediaSendRoute import org.signal.mediasend.MediaValidator import org.signal.mediasend.screens.capture.MediaCaptureBottomBar import org.signal.mediasend.screens.capture.MediaCaptureScreenEvents import org.thoughtcrime.securesms.PassphraseRequiredActivity import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey import org.thoughtcrime.securesms.conversation.MessageSendType import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardEvent diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v3/MediaSendV3Activity.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v3/MediaSendV3Activity.kt index 626e2a3c70..a0ec90ecb5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v3/MediaSendV3Activity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v3/MediaSendV3Activity.kt @@ -32,6 +32,7 @@ import org.signal.core.ui.WindowBreakpoint import org.signal.core.ui.compose.LocalChatColorProvider import org.signal.core.ui.compose.LocalDisplayNameProvider import org.signal.core.ui.getWindowBreakpoint +import org.signal.emoji.EmojiEventListener import org.signal.mediasend.MediaSendFlowActivityContract import org.signal.mediasend.MediaSendFlowHudCommand import org.signal.mediasend.MediaSendFlowViewModel @@ -42,7 +43,6 @@ import org.signal.mediasend.screens.edit.LocalAddAMessageRowTextField import org.signal.mediasend.screens.edit.LocalScheduledSendTimeFormatter import org.thoughtcrime.securesms.PassphraseRequiredActivity import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener import org.thoughtcrime.securesms.components.emoji.EmojiTextView import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneComponent.kt b/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneComponent.kt index 884d449177..c49bd649a5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneComponent.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/MegaphoneComponent.kt @@ -52,8 +52,8 @@ import org.signal.core.ui.compose.DayNightPreviews import org.signal.core.ui.compose.IconButtons import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.theme.SignalTheme +import org.signal.emoji.Emojifier import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.Emojifier import org.thoughtcrime.securesms.main.EmptyMegaphoneActionController import org.thoughtcrime.securesms.megaphone.Megaphones.Event import kotlin.math.roundToInt diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt index ce416014d4..6b176cd850 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt @@ -14,6 +14,7 @@ import org.signal.core.util.isNotEmpty import org.signal.core.util.logging.Log import org.signal.core.util.orNull import org.signal.core.util.toOptional +import org.signal.emoji.EmojiUtil import org.signal.libsignal.zkgroup.receipts.ReceiptCredentialPresentation import org.signal.network.util.Preconditions import org.thoughtcrime.securesms.attachments.Attachment @@ -21,7 +22,6 @@ import org.thoughtcrime.securesms.attachments.LocalStickerAttachment import org.thoughtcrime.securesms.attachments.PointerAttachment import org.thoughtcrime.securesms.attachments.TombstoneAttachment import org.thoughtcrime.securesms.calls.links.CallLinks -import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.contactshare.Contact import org.thoughtcrime.securesms.contactshare.ContactModelMapper import org.thoughtcrime.securesms.crypto.ProfileKeyUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt index 74482d56cc..9f2d9c0561 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt @@ -14,6 +14,7 @@ import org.signal.core.util.Util import org.signal.core.util.UuidUtil import org.signal.core.util.isNotEmpty import org.signal.core.util.orNull +import org.signal.emoji.EmojiUtil import org.signal.libsignal.net.KeyTransparency import org.signal.libsignal.protocol.IdentityKey import org.signal.libsignal.protocol.IdentityKeyPair @@ -28,7 +29,6 @@ import org.signal.ringrtc.CallLinkRootKey import org.thoughtcrime.securesms.attachments.Attachment import org.thoughtcrime.securesms.attachments.DatabaseAttachment import org.thoughtcrime.securesms.attachments.TombstoneAttachment -import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.components.settings.app.changenumber.ChangeNumberRepository import org.thoughtcrime.securesms.contactshare.Contact import org.thoughtcrime.securesms.database.AttachmentTable diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/PartAuthority.java b/app/src/main/java/org/thoughtcrime/securesms/mms/PartAuthority.java index 5e9fa06e5e..88d325ab0f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/PartAuthority.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/PartAuthority.java @@ -19,7 +19,7 @@ import org.thoughtcrime.securesms.attachments.Attachment; import org.thoughtcrime.securesms.avatar.AvatarPickerStorage; import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.dependencies.AppDependencies; -import org.thoughtcrime.securesms.emoji.EmojiFiles; +import org.signal.emoji.EmojiFiles; import org.thoughtcrime.securesms.providers.PartProvider; import java.io.FileNotFoundException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt index 2150b9cdff..d194cdd7d7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt @@ -7,12 +7,12 @@ package org.thoughtcrime.securesms.notifications import android.text.TextUtils import androidx.annotation.WorkerThread +import org.signal.core.util.DeviceProperties import org.signal.core.util.JsonUtils import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.database.LocalMetricsDatabase import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.keyvalue.SignalStore -import org.thoughtcrime.securesms.util.DeviceProperties import org.thoughtcrime.securesms.util.LocaleRemoteConfig import org.thoughtcrime.securesms.util.PowerManagerCompat import org.thoughtcrime.securesms.util.RemoteConfig diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt index fed94ae4e5..1c90427078 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationFactory.kt @@ -19,11 +19,11 @@ import org.signal.core.util.PendingIntentFlags import org.signal.core.util.ServiceUtil import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.logging.Log +import org.signal.emoji.EmojiStrings import org.thoughtcrime.securesms.MainActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatar import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatarDrawable -import org.thoughtcrime.securesms.components.emoji.EmojiStrings import org.thoughtcrime.securesms.conversation.ConversationIntents import org.thoughtcrime.securesms.conversation.colors.AvatarColor import org.thoughtcrime.securesms.database.SignalDatabase diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt index ee961c4d3f..1cb9c901bf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/NotificationItem.kt @@ -11,8 +11,8 @@ import androidx.core.graphics.drawable.IconCompat import org.signal.core.ui.permissions.Permissions import org.signal.core.util.Util import org.signal.core.util.logging.Log +import org.signal.emoji.EmojiStrings import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiStrings import org.thoughtcrime.securesms.contactshare.Contact import org.thoughtcrime.securesms.contactshare.ContactUtil import org.thoughtcrime.securesms.database.MentionUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditAboutFragment.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditAboutFragment.java index 0cb563856b..4cb4773c80 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditAboutFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditAboutFragment.java @@ -27,7 +27,7 @@ import org.signal.core.util.EditTextUtil; import org.signal.core.util.StringUtil; import org.signal.core.util.concurrent.LifecycleDisposable; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.components.emoji.EmojiUtil; +import org.signal.emoji.EmojiUtil; import org.thoughtcrime.securesms.reactions.any.ReactWithAnyEmojiBottomSheetDialogFragment; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.SystemWindowInsetsSetter; diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileFragment.kt index c96a2f8627..da8535a3da 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileFragment.kt @@ -26,6 +26,7 @@ import org.signal.core.models.media.Media import org.signal.core.ui.logging.LoggingFragment import org.signal.core.util.concurrent.LifecycleDisposable import org.signal.core.util.getParcelableCompat +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.AvatarPreviewActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.Avatars.getForegroundColor @@ -33,7 +34,6 @@ import org.thoughtcrime.securesms.avatar.Avatars.getTextSizeForLength import org.thoughtcrime.securesms.avatar.picker.AvatarPickerFragment import org.thoughtcrime.securesms.badges.models.Badge import org.thoughtcrime.securesms.badges.self.none.BecomeASustainerFragment.Companion.show -import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.databinding.EditProfileFragmentBinding import org.thoughtcrime.securesms.keyvalue.AccountValues import org.thoughtcrime.securesms.keyvalue.SignalStore diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsConversationView.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsConversationView.java index 846d155297..17aba829f1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsConversationView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsConversationView.java @@ -16,7 +16,7 @@ import androidx.core.content.ContextCompat; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.emoji.EmojiImageView; -import org.thoughtcrime.securesms.components.emoji.EmojiUtil; +import org.signal.emoji.EmojiUtil; import org.thoughtcrime.securesms.database.model.ReactionRecord; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsRepository.kt index e7182106ec..3cc35b589f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsRepository.kt @@ -4,7 +4,7 @@ import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.core.ObservableEmitter import io.reactivex.rxjava3.schedulers.Schedulers import org.signal.core.util.concurrent.SignalExecutors -import org.thoughtcrime.securesms.components.emoji.EmojiUtil +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.database.DatabaseObserver import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.MessageId diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiBottomSheetDialogFragment.java index 39dec6e967..7c82181b83 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiBottomSheetDialogFragment.java @@ -29,7 +29,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialog; import org.signal.core.util.concurrent.LifecycleDisposable; import org.thoughtcrime.securesms.R; import org.signal.core.ui.FixedRoundedCornerBottomSheetDialogFragment; -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener; +import org.signal.emoji.EmojiEventListener; import org.thoughtcrime.securesms.components.emoji.EmojiPageView; import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter; import org.thoughtcrime.securesms.database.model.MessageRecord; diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiPageBlock.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiPageBlock.java index d3099d1fa4..82555589ba 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiPageBlock.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiPageBlock.java @@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.reactions.any; import androidx.annotation.NonNull; import androidx.annotation.StringRes; -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel; +import org.signal.emoji.EmojiPageModel; import java.util.Objects; diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiRepository.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiRepository.java index 9f5ab5608b..40738f7e15 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiRepository.java @@ -14,8 +14,8 @@ import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel; import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.database.model.MessageId; import org.thoughtcrime.securesms.database.model.ReactionRecord; -import org.thoughtcrime.securesms.emoji.EmojiCategory; -import org.thoughtcrime.securesms.emoji.EmojiSource; +import org.signal.emoji.EmojiCategory; +import org.signal.emoji.EmojiSource; import org.thoughtcrime.securesms.reactions.ReactionDetails; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.sms.MessageSender; diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiViewModel.java index 7d84d57aaa..f4bb78e94b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiViewModel.java @@ -7,12 +7,12 @@ import androidx.annotation.Nullable; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel; +import org.signal.emoji.EmojiPageModel; import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter; import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel; import org.thoughtcrime.securesms.database.model.MessageId; import org.thoughtcrime.securesms.dependencies.AppDependencies; -import org.thoughtcrime.securesms.emoji.EmojiCategory; +import org.signal.emoji.EmojiCategory; import org.thoughtcrime.securesms.keyboard.emoji.EmojiCategoryMappingModel; import org.thoughtcrime.securesms.keyboard.emoji.RecentsMappingModel; import org.thoughtcrime.securesms.keyboard.emoji.search.EmojiSearchRepository; diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java index 8080430a02..9c2a57694e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java @@ -8,8 +8,8 @@ import androidx.annotation.Nullable; import java.util.stream.Collectors; import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.components.emoji.Emoji; -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel; +import org.signal.emoji.Emoji; +import org.signal.emoji.EmojiPageModel; import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel; import java.util.List; @@ -32,7 +32,7 @@ class ThisMessageEmojiPageModel implements EmojiPageModel { @Override public int getIconAttr() { - return R.attr.emoji_category_recent; + return org.signal.emoji.R.attr.emoji_category_recent; } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/edit/EditReactionsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/reactions/edit/EditReactionsViewModel.kt index 4f91d10a1e..636ca99d75 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/edit/EditReactionsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/edit/EditReactionsViewModel.kt @@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.reactions.edit import androidx.lifecycle.LiveData import androidx.lifecycle.ViewModel import org.signal.core.util.concurrent.SignalExecutors -import org.thoughtcrime.securesms.components.emoji.EmojiUtil +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.keyvalue.EmojiValues import org.thoughtcrime.securesms.keyvalue.SignalStore diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/about/AboutSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/about/AboutSheet.kt index bd2017f6ec..4a55ea1a80 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/about/AboutSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/about/AboutSheet.kt @@ -49,11 +49,11 @@ import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.SignalIcons import org.signal.core.util.getParcelableCompat import org.signal.core.util.isNotNullOrBlank +import org.signal.emoji.Emojifier import org.thoughtcrime.securesms.AvatarPreviewActivity import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.AvatarImage import org.thoughtcrime.securesms.components.emoji.EmojiTextView -import org.thoughtcrime.securesms.components.emoji.Emojifier import org.thoughtcrime.securesms.conversation.v2.UnverifiedProfileNameBottomSheet import org.thoughtcrime.securesms.groups.GroupId import org.thoughtcrime.securesms.groups.memberlabel.MemberLabel diff --git a/app/src/main/java/org/thoughtcrime/securesms/scribbles/RemoveEmojiTextFilter.java b/app/src/main/java/org/thoughtcrime/securesms/scribbles/RemoveEmojiTextFilter.java index b646d14089..f2d2d207b8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/scribbles/RemoveEmojiTextFilter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/scribbles/RemoveEmojiTextFilter.java @@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.scribbles; import androidx.annotation.NonNull; import org.signal.imageeditor.core.HiddenEditText; -import org.thoughtcrime.securesms.components.emoji.EmojiUtil; +import org.signal.emoji.EmojiUtil; class RemoveEmojiTextFilter implements HiddenEditText.TextFilter { @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/ActiveCallManager.kt b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/ActiveCallManager.kt index debd331061..0b475b5f0d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/ActiveCallManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/ActiveCallManager.kt @@ -28,6 +28,7 @@ import io.reactivex.rxjava3.disposables.Disposable import io.reactivex.rxjava3.kotlin.subscribeBy import io.reactivex.rxjava3.schedulers.Schedulers import org.signal.core.ui.permissions.Permissions +import org.signal.core.util.DeviceProperties import org.signal.core.util.PendingIntentFlags import org.signal.core.util.SafeForegroundService import org.signal.core.util.UnableToStartException @@ -35,7 +36,6 @@ import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.RecipientId -import org.thoughtcrime.securesms.util.DeviceProperties import org.thoughtcrime.securesms.util.TelephonyUtil import org.thoughtcrime.securesms.webrtc.CallNotificationBuilder import org.thoughtcrime.securesms.webrtc.UncaughtExceptionHandlerManager diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerSearchRepository.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerSearchRepository.java index 3633468b4a..a8ff7043cb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerSearchRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerSearchRepository.java @@ -7,12 +7,12 @@ import androidx.annotation.WorkerThread; import org.signal.core.models.database.StickerRecord; import org.signal.core.util.concurrent.SignalExecutors; -import org.thoughtcrime.securesms.components.emoji.EmojiUtil; +import org.signal.emoji.EmojiUtil; import org.thoughtcrime.securesms.database.AttachmentTable; import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.database.StickerTables; import org.thoughtcrime.securesms.database.StickerTables.StickerRecordReader; -import org.thoughtcrime.securesms.emoji.EmojiSource; +import org.signal.emoji.EmojiSource; import java.util.ArrayList; import java.util.Collections; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt index e5e952b0f5..3cff5b7ee8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/composer/StoryReplyComposer.kt @@ -18,20 +18,20 @@ import androidx.transition.AutoTransition import androidx.transition.TransitionManager import org.signal.core.util.ByteLimitInputFilter import org.signal.core.util.dp +import org.signal.emoji.Emoji +import org.signal.emoji.EmojiEventListener +import org.signal.emoji.EmojiPageModel +import org.signal.emoji.EmojiSource import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.ComposeText import org.thoughtcrime.securesms.components.InputAwareLayout import org.thoughtcrime.securesms.components.KeyboardAwareLinearLayout -import org.thoughtcrime.securesms.components.emoji.Emoji -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel import org.thoughtcrime.securesms.components.emoji.EmojiPageView import org.thoughtcrime.securesms.components.emoji.EmojiToggle import org.thoughtcrime.securesms.components.emoji.MediaKeyboard import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel import org.thoughtcrime.securesms.database.model.Mention import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList -import org.thoughtcrime.securesms.emoji.EmojiSource import org.thoughtcrime.securesms.keyboard.emoji.toMappingModels import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.reactions.any.ReactWithAnyEmojiBottomSheetDialogFragment diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyDialogFragment.kt index bfa4f62e2c..1f54be2c93 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/direct/StoryDirectReplyDialogFragment.kt @@ -11,9 +11,9 @@ import androidx.fragment.app.viewModels import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import org.signal.core.util.concurrent.LifecycleDisposable import org.signal.core.util.getParcelableCompat +import org.signal.emoji.EmojiEventListener import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.KeyboardEntryDialogFragment -import org.thoughtcrime.securesms.components.emoji.EmojiEventListener import org.thoughtcrime.securesms.components.emoji.MediaKeyboard import org.thoughtcrime.securesms.keyboard.KeyboardPage import org.thoughtcrime.securesms.keyboard.KeyboardPagerViewModel diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/MultiReactionBurstLayout.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/MultiReactionBurstLayout.kt index 5318d312b5..4bb224ceda 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/MultiReactionBurstLayout.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/reply/reaction/MultiReactionBurstLayout.kt @@ -9,8 +9,8 @@ import android.content.Context import android.util.AttributeSet import android.widget.FrameLayout import androidx.core.view.children +import org.signal.emoji.EmojiUtil import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.components.emoji.EmojiUtil import org.thoughtcrime.securesms.events.GroupCallReactionEvent import kotlin.time.Duration.Companion.seconds diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/BatterySnapshotTracker.kt b/app/src/main/java/org/thoughtcrime/securesms/util/BatterySnapshotTracker.kt index 140d6372c6..6898f95e93 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/BatterySnapshotTracker.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/BatterySnapshotTracker.kt @@ -7,6 +7,7 @@ import android.os.Build import android.os.PowerManager import android.os.Process import android.os.SystemClock +import org.signal.core.util.DeviceProperties import org.signal.core.util.bytes import org.signal.core.util.logging.Log import java.util.Locale diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/exo/SimpleExoPlayerPool.kt b/app/src/main/java/org/thoughtcrime/securesms/video/exo/SimpleExoPlayerPool.kt index 2c312f458c..b06906f17f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/exo/SimpleExoPlayerPool.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/video/exo/SimpleExoPlayerPool.kt @@ -17,10 +17,10 @@ import androidx.media3.exoplayer.mediacodec.MediaCodecUtil import androidx.media3.exoplayer.source.DefaultMediaSourceFactory import androidx.media3.exoplayer.source.MediaSource import org.signal.core.util.AppForegroundObserver +import org.signal.core.util.DeviceProperties import org.signal.video.exo.ExoPlayerPool import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.net.ContentProxySelector -import org.thoughtcrime.securesms.util.DeviceProperties import kotlin.time.Duration.Companion.seconds /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/webrtc/CallNotificationBuilder.java b/app/src/main/java/org/thoughtcrime/securesms/webrtc/CallNotificationBuilder.java index 479c4114b7..754f4c2153 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/webrtc/CallNotificationBuilder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/webrtc/CallNotificationBuilder.java @@ -21,7 +21,7 @@ import org.thoughtcrime.securesms.notifications.NotificationChannels; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.service.webrtc.ActiveCallManager; import org.thoughtcrime.securesms.util.ConversationUtil; -import org.thoughtcrime.securesms.util.DeviceProperties; +import org.signal.core.util.DeviceProperties; /** * Manages the state of the WebRtc items in the Android notification bar. diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml index 8dd5cc0ac9..59e29f3826 100644 --- a/app/src/main/res/values-af/strings.xml +++ b/app/src/main/res/values-af/strings.xml @@ -4118,15 +4118,6 @@ Onlangs Hierdie boodskap Onlangs gebruik - Gesiggies & Mense - Natuur - Kos - Aktiwiteite - Plekke - Voorwerpe - Simbole - Vlae - Emotikons Geen resultate gevind nie diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 8d591ec579..95ce49c899 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -4610,15 +4610,6 @@ الأحدث هذه الرسالة تمَّ الاستخدام مُؤخَّرًا - أوجُه سمايلي وأشخاص - الطبيعة - الطعام - الأنشطة - الأماكن - الأشياء - الرموز الخاصة - الأعلام - الرموز التعبيرية لم يتم العثور على أي نتائج diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 059d9ecac5..456a8cca3a 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -4118,15 +4118,6 @@ Sonuncular Bu mesaj Son istifadə edilən - Təbəssüm və insanlar - Təbiət - Ərzaq - Fəaliyyətlər - Məkanlar - Obyektlər - Simvollar - Bayraqlar - İfadələr Heç nə tapılmadı diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 1cf0d965a6..e172511aa1 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -4364,15 +4364,6 @@ Нядаўнія Гэта паведамленне Нядаўна выкарыстаныя - Смайлікі & людзі - Прырода - Ежа - Мерапрыемствы - Месцы - Аб\'екты - Сімвалы - Сцягі - Смайлікі Вынікаў не знойдзена diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index c5e1557a14..f9cb8d7a06 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -4118,15 +4118,6 @@ Скорошни Това съобщение Наскоро използвани - Усмивки & Хора - Природа - Храна - Дейности - Места - Обекти - Символи - Знамена - Емотикони Нищо не открихме diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index 16209b1eea..20833b8619 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -4118,15 +4118,6 @@ সাম্প্রতিক এই মেসেজ সম্প্রতি ব্যাবহৃত হয়েছে - স্মাইলি & লোকজন - প্রকৃতি - খাবার - কার্যক্রম - স্থান সমূহ - বস্তু সমূহ - প্রতীক সমূহ - পতাকা সমূহ - ইমোটিকন সমূহ কোনও ফলাফল পাওয়া যায়নি diff --git a/app/src/main/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml index 924786b3cd..adaddb0005 100644 --- a/app/src/main/res/values-bs/strings.xml +++ b/app/src/main/res/values-bs/strings.xml @@ -4364,15 +4364,6 @@ Nedavno Ova poruka Nedavno korištene - Smješko i osobe - Priroda - Hrana - Aktivnosti - Mjesta - Predmeti - Simboli - Zastave - Emotikoni Nema rezultata diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 119451e731..a6d97f6a59 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -4118,15 +4118,6 @@ Recents Aquest missatge Usat recentment - Emoticones somrients i gent - Natura - Menjar - Activitats - Llocs - Objectes - Símbols - Banderes - Emoticona No s\'ha trobat cap resultat. diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index b878b5dca7..b96532a0b2 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -4364,15 +4364,6 @@ Poslední Tato zpráva Nedávno použité - Smajlíci & Lidé - Příroda - Jídlo - Činnosti - Místa - Objekty - Symboly - Vlajky - Emotikony Nebyly nalezeny žádné výsledky diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 80fb0a5959..7233ec1f51 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -4118,15 +4118,6 @@ Nylige Denne besked Senest brugte - Smileys & personer - Natur - Mad - Aktiviteter - Steder - Objekter - Symboler - Flag - Humørikoner Ingen fundne resultater diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a2e9be8a7f..bfd7c28c88 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -4118,15 +4118,6 @@ Zuletzt verwendet Diese Nachricht Zuletzt verwendet - Smileys & Menschen - Natur - Essen - Aktivitäten - Orte - Objekte - Symbole - Flaggen - Emoticons Keine Ergebnisse gefunden diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 0298995ee1..160e98f469 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -4118,15 +4118,6 @@ Πρόσφατα Αυτό το μήνυμα Πρόσφατα χρησιμοποιημένα - Φατσούλες & Άνθρωποι - Φύση - Φαγητό - Δραστηριότητες - Τοποθεσίες - Αντικείμενα - Σύμβολα - Σημαίες - Emoticons Δε βρέθηκαν αποτελέσματα diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 99d5e0b3dc..c4cc5d73b2 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -4118,15 +4118,6 @@ Recientes Este mensaje Usados recientemente - Emoticonos y personas - Animales y naturaleza - Comida y bebida - Actividades - Viajes y destinos - Objetos - Símbolos - Banderas - Emoticonos No hay ningún resultado diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index c1072c9119..5ea71a08b3 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -4118,15 +4118,6 @@ Hiljutised See sõnum Hiljuti kasutatud - Emotikonid & inimesed - Loodus - Toit - Hobitegevused - Kohad - Objektid - Sümbolid - Lipud - Emotikonid Tulemusi ei leitud diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 47db5feb7c..a3cdf9c46c 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -4118,15 +4118,6 @@ Azkenaldikoak Mezu Hau Arestian erabilia - Emojiak & Jendea - Natura - Janaria - Aktibitateak - Tokiak - Objektuak - Ikurrak - Banderak - Emotikonoak Ez da emaitzarik aurkitu diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 59d9679b88..9f984bd4ba 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -4118,15 +4118,6 @@ تماس‌های اخیر این پیام به‌تازگی استفاده شده - لبخندها و آدم‌ها - طبیعت - غذا - فعالیت‌ها - مکان‌ها - اشیا - نمادها - پرچم‌ها - شکلک‌ها هیچ نتیجه‌ای پیدا نشد diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index ad7de40580..4f78bbc938 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -4118,15 +4118,6 @@ Äskeiset Tämä viesti Äskettäin käytetyt - Hymiöt ja ihmiset - Luonto - Ruoka - Toiminta - Paikat - Esineet - Symbolit - Liput - Hymiöt Ei tuloksia diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index ad9c2c6b57..87da3bedaf 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -4118,15 +4118,6 @@ Récents Ce message Récemment utilisés - Émoticônes et personnages - Nature - Nourriture et boissons - Activités - Voyages et lieux - Objets - Symboles - Drapeaux - Émoticônes Aucun résultat diff --git a/app/src/main/res/values-ga/strings.xml b/app/src/main/res/values-ga/strings.xml index b639f232e0..27094889d4 100644 --- a/app/src/main/res/values-ga/strings.xml +++ b/app/src/main/res/values-ga/strings.xml @@ -4487,15 +4487,6 @@ Úsáidte le déanaí An Teachtaireacht Seo Úsáidte le Déanaí - Straoiseoga ⁊ Daoine - An Dúlra - Bia - Gníomhaíochtaí - Áiteanna - Rudaí - Siombailí - Bratacha - Straoiseoga Gan toradh diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 1d08196a45..26b9596755 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -4118,15 +4118,6 @@ Recentes Esta mensaxe Usados recentemente - Riseiros & Xente - Natureza - Alimentación - Actividades - Lugares - Obxectos - Símbolos - Bandeiras - Emoticonas Sen resultados diff --git a/app/src/main/res/values-gu/strings.xml b/app/src/main/res/values-gu/strings.xml index a764b592e7..d42158053b 100644 --- a/app/src/main/res/values-gu/strings.xml +++ b/app/src/main/res/values-gu/strings.xml @@ -4118,15 +4118,6 @@ તાજેતરનું આ મેસેજ તાજેતરમાં વપરાયેલ - સ્માઇલીઝ & લોકો - પ્રકૃતિ - ખોરાક - પ્રવત્તિઓ - સ્થાનો - વસ્તુઓ - ચિહ્નો - ફ્લેગ - ઇમોટિકોન્સ કોઈ પરિણામો મળ્યાં નથી diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 1aeed240b7..3ae9c9eb57 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -4118,15 +4118,6 @@ हाल ही के यह मैसेज हाल ही में इस्तेमाल किया - स्माइली और लोग - नेचर - खान-पान - गतिविधियां - जगहें - सामान - चिह्न - झंडे - इमोजी कोई नतीजा नहीं मिला diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index a4cd5a9379..b020599cb4 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -4364,15 +4364,6 @@ Nedavno Ova poruka Nedavno korišteno - Smajlići i osobe - Priroda - Hrana - Aktivnosti - Mjesta - Objekti - Simboli - Zastave - Emotikoni Nema rezultata diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index ac45b79008..d3a8ffd692 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -4118,15 +4118,6 @@ Előzmények Jelenlegi üzenet Nemrég használt - Smiley-k és emberek - Természet - Étel - Tevékenységek - Helyek - Tárgyak - Szimbólumok - Zászlók - Emotikonok Nincs találat diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index aedc90bacd..cc063140e4 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -3995,15 +3995,6 @@ Terkini Pesan Ini Terakhir Digunakan - Smiley & Orang - Alam - Makanan - Aktivitas - Tempat - Obyek - Simbol - Bendera - Emotikon Tidak ada hasil ditemukan diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b06b4f9a67..8f31259468 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -4118,15 +4118,6 @@ Recenti Questo messaggio Usate di recente - Faccine e persone - Natura - Cibo - Attività - Luoghi - Oggetti - Simboli - Bandiere - Emoticon Nessun risultato trovato diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 4593b8eed0..b6b5bf027f 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -4364,15 +4364,6 @@ אחרונים הודעה זו בשימוש לאחרונה - פרצופונים ואנשים - טבע - אוכל - פעילויות - מקומות - חפצים - סמלים - דגלים - רגשונים תוצאות לא נמצאו diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 7a51ccccaf..8d4c9b9ca0 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -3995,15 +3995,6 @@ 最近使った絵文字 このメッセージ 最近使ったもの - スマイリーと人々 - 自然 - 食品 - アクティビティ - 場所 - オブジェクト - 記号 - 旗 - 顔文字 検索結果はありません diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml index efd3277ca3..49c80f62eb 100644 --- a/app/src/main/res/values-ka/strings.xml +++ b/app/src/main/res/values-ka/strings.xml @@ -4118,15 +4118,6 @@ ბოლოს გამოყენებული ეს შეტყობინება ბოლოს გამოყენებული - სმაილები & ადამიანები - ბუნება - საკვები - აქტივობები - ადგილები - ობიექტები - სიმბოლოები - დროშები - ემოციები ვერაფერი მოიძებნა diff --git a/app/src/main/res/values-kk/strings.xml b/app/src/main/res/values-kk/strings.xml index ee1f0b242a..acb26d8640 100644 --- a/app/src/main/res/values-kk/strings.xml +++ b/app/src/main/res/values-kk/strings.xml @@ -4118,15 +4118,6 @@ Соңғылар Осы хат Жақында қолданылғандар - Смайлдар және Адамдар - Табиғат - Азық-түлік - Іс-әрекет - Орындар - Заттар - Белгілер - Жалаушалар - Эмотикондар Бірде-бір нәтиже табылмады diff --git a/app/src/main/res/values-km/strings.xml b/app/src/main/res/values-km/strings.xml index eefb1e955f..a5f5fffe28 100644 --- a/app/src/main/res/values-km/strings.xml +++ b/app/src/main/res/values-km/strings.xml @@ -3995,15 +3995,6 @@ ថ្មីៗនេះ សារនេះ បានប្រើប្រាស់ថ្មីៗ - ញញឹម & មនុស្ស - ធម្មជាតិ - អាហារ - សកម្មភាព - ទីកន្លែង - វត្ថុ - សញ្ញា - ទង់ - រូបតំណាងអារម្មណ៍ មិនមានលទ្ធផល diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index 91893555ea..03f5effd13 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -4118,15 +4118,6 @@ ಇತ್ತೀಚಿನವುಗಳು ಈ ಸಂದೇಶ ಇತ್ತೀಚೆಗೆ ಬಳಸಲಾಗಿದೆ - ಸ್ಮೈಲೀಗಳು ಮತ್ತು ಜನರು - ಪರಿಸರ - ಆಹಾರ - ಚಟುವಟಿಕೆಗಳು - ಸ್ಥಳಗಳು - ವಸ್ತುಗಳು - ಚಿಹ್ನೆಗಳು - ಫ್ಲ್ಯಾಗ್‌ಗಳು - ಎಮೋಟಿಕಾನ್‌ಗಳು ಯಾವುದೇ ಫಲಿತಾಂಶ ಕಂಡುಬಂದಿಲ್ಲ diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 21b1551f80..d69905c9ee 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -3995,15 +3995,6 @@ 최근 이 메시지 최근 사용 - 웃는 얼굴 & 사람 - 자연 - 음식 - 활동 - 장소 - 사물 - 부호 - 국기 - 이모티콘 결과 없음 diff --git a/app/src/main/res/values-ky/strings.xml b/app/src/main/res/values-ky/strings.xml index 4009852392..f62fbb279b 100644 --- a/app/src/main/res/values-ky/strings.xml +++ b/app/src/main/res/values-ky/strings.xml @@ -4118,15 +4118,6 @@ Соңкулар Бул билдирүү Жакында колдонулгандар - Быйтыкчалар жана адамдар - Табият - Тамак-аш - Аракеттер - Жерлер - Объекттер - Символдор - Желектер - Быйтыкчалар Эч нерсе табылган жок diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 039233450a..cd2f845b8d 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -4364,15 +4364,6 @@ Paskiausi Ši žinutė Paskiausi - Šypsenėlės ir žmonės - Gamta - Maistas - Veiklos - Vietos - Objektai - Simboliai - Vėliavos - Jaustukai Nerasta jokių rezultatų diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 2f4931a20b..a630406921 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -4241,15 +4241,6 @@ Pēdējās Šī ziņa Nesen lietotie - Smaidiņi; Cilvēki - Daba - Ēdiens - Aktivitātes - Vietas - Objekti - Simboli - Karogi - Emocijikonas Nekas netika atrasts diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index f73be1a9ec..a4ae311f65 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -4118,15 +4118,6 @@ Скорешни Оваа порака Скорешни - Смајлија и луѓе - Природа - Храна - Активности - Места - Предмети - Симболи - Знамиња - Емотикони Не се пронајдени резултати diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 60f372a6fa..6597a41220 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -4118,15 +4118,6 @@ സമീപകാലത്ത് ഉപയോഗിച്ചവ ഈ സന്ദേശം അടുത്തിടെ ഉപയോഗിച്ചവ - സ്മൈലി & ആളുകൾ - പ്രകൃതി - ഭക്ഷണം - പ്രവർത്തനങ്ങൾ - സ്ഥലങ്ങൾ - വസ്തുക്കൾ - ചിഹ്നങ്ങൾ - പതാകകൾ - ഇമോട്ടിക്കോണുകൾ ഫലങ്ങളൊന്നുമില്ല. diff --git a/app/src/main/res/values-mr/strings.xml b/app/src/main/res/values-mr/strings.xml index 8debd105af..6a400a5db0 100644 --- a/app/src/main/res/values-mr/strings.xml +++ b/app/src/main/res/values-mr/strings.xml @@ -4118,15 +4118,6 @@ अलीकडील हा संदेश अलीकडील वापरलेले - स्माईली आणि व्यक्ती - निसर्ग - अन्न - क्रिया - ठिकाणे - वस्तू - चिन्ह - झेंडे - इमोटीकॉन कुठलेही परिणाम नाहीत diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index b7c14aa610..2bc2f4d288 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -3995,15 +3995,6 @@ Terkini Mesej Ini Digunakan Baru-baru Ini - Smiley & Orang - Alam Semula Jadi - Makanan - Aktiviti - Tempat - Objek - Simbol - Bendera - Emotikon Tidak ada keputusan dijumpai diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index 848d852b41..a3f55ca424 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -3995,15 +3995,6 @@ နောက်ဆုံး ၎င်းမက်ဆေ့ချ် နောက်ဆုံးသုံးခဲ့သော - အပြုံးမျက်နှာ နှင့် လူများ - သဘာဝ - အစားအစာ - လှုပ်ရှားမှုများ - နေရာများ - အရာဝတ္ထုများ - သင်္ကေတများ - အလံများ - ရုပ်ပြောင်များ ရလဒ်များ ရှာမတွေ့ပါ diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index d268b049a5..de250afd6f 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -4118,15 +4118,6 @@ Sist brukte Denne meldingen Nylig brukt - Smilefjes og mennesker - Natur - Mat - Aktiviteter - Steder - Objekter - Symboler - Flagg - Emoticons Ingen resultater diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 44f2649a81..58bba77e0c 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -4118,15 +4118,6 @@ Onlangs gebruikt Dit bericht Onlangs gebruikt - Smileys & mensen - Dieren & natuur - Eten & drinken - Activiteiten - Reizen & plaatsen - Objecten - Symbolen - Vlaggen - Emoticons Geen emoji gevonden diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 47d8f26eb6..c92d83aca5 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -4118,15 +4118,6 @@ ਹਾਲੀਆ ਇਹ ਸੁਨੇਹਾ ਤਾਜ਼ਾ ਵਰਤੇ - ਮੁਖੜੇ ਤੇ ਲੋਕ - ਕੁਦਰਤ - ਖਾਣ-ਪੀਣ - ਸਰਗਰਮੀਆਂ - ਥਾਵਾਂ - ਚੀਜ਼ਾਂ - ਚਿੰਨ੍ਹ - ਝੰਡੇ - ਜਜ਼ਬਾਤੀ-ਆਈਕਾਨ ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਲੱਭੇ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 7784cf51ca..3af6899689 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -4364,15 +4364,6 @@ Ostatnie Ta wiadomość Ostatnio używane - Buźki i osoby - Natura - Żywność - Aktywność - Miejsca - Przedmioty - Symbole - Flagi - Emotikony Nie udało się niczego znaleźć diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 52bc7bccaa..7e1d5357e3 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -4118,15 +4118,6 @@ Recentes Esta mensagem Utilizado recentemente - Emojis e pessoas - Animais e natureza - Comida e bebidas - Atividades - Viagens e lugares - Objetos - Símbolos - Bandeiras - Emoticons Nenhum resultado encontrado diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index bebdf0c5a2..2ed5071eb6 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -4118,15 +4118,6 @@ Recentes Esta mensagem Recentemente utilizados - Smileys e pessoas - Natureza - Comida - Atividades - Locais - Objetos - Símbolos - Bandeiras - Emoticons Não foram encontrados resultados diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 2061aded4d..d5444b833c 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -4241,15 +4241,6 @@ Recente Acest mesaj Utilizate Recent - Smiley-uri & Oameni - Natură - Mâncare - Activități - Locuri - Obiecte - Simboluri - Steaguri - Emoticoane Nici un rezultat găsit diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index bc29b2a404..1488fc20d3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -4364,15 +4364,6 @@ Недавние Это сообщение Недавно использованные - Смайлики и люди - Природа - Еда - Активность - Места - Предметы - Символы - Флаги - Смайлики Поиск не дал результатов diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index e4284af795..aaf282e951 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -4364,15 +4364,6 @@ Nedávno použité Táto správa Nedávno použité - Smajlíky & ľudia - Príroda - Jedlo - Aktivity - Miesta - Objekty - Symboly - Vlajky - Emotikony Neboli nájdené žiadne výsledky diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 8fa5aa8ba2..ec858d636a 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -4364,15 +4364,6 @@ Nedavno To sporočilo Nedavno uporabljeno - Smeški & Ljudje - Narava - Hrana - Dejavnosti - Kraji - Objekti - Simboli - Zastave - Emotikoni Ni rezultatov diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index 043c79856d..dd1b98756b 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -4118,15 +4118,6 @@ Së fundmi Këtë Mesazh Përdorur Së Fundi - Emotikone & Persona - Natyrë - Ushqim - Veprimtari - Vende - Objekte - Simbole - Flamuj - Emotikone S\\’u gjet përfundim diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index c7e1c65d49..b22af3c1c9 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -4118,15 +4118,6 @@ Недавно Ова порука Недавно коришћено - Смајлији и људи - Природа - Јело - Активности - Места - Објекти - Симболи - Заставе - Емотикони Нема резултата diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index d8cefd731f..cbaec33ae8 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -4118,15 +4118,6 @@ Senaste Detta meddelande Nyligen använda - Humörsymboler & personer - Natur - Mat - Aktiviteter - Platser - Objekt - Symboler - Flaggor - Uttryckssymboler Inga resultat hittades diff --git a/app/src/main/res/values-sw/strings.xml b/app/src/main/res/values-sw/strings.xml index a84b55d45c..bc23eb02be 100644 --- a/app/src/main/res/values-sw/strings.xml +++ b/app/src/main/res/values-sw/strings.xml @@ -4118,15 +4118,6 @@ Hivi karibuni Ujumbe huu Iliyotumiwa hivi majuzi - Tabasamu na Watu - Asili - Chakula - Shughuli - Maeneo - Vitu - Ishara - Bendera - Emoji za Hisia Hakuna matokeo yaliyopatikana diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 2a961fc01c..f6aa658eba 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -4118,15 +4118,6 @@ அண்மையில் இந்த செய்தி சமீபத்தில் பயன்படுத்தப்பட்டது - உணர்வு ஓவியங்கள் & மக்கள் - இயற்கை - உணவு - செயல்பாடுகள் - இடங்கள் - பொருள்கள் - சின்னங்கள் - கொடிகள் - உணர்வு ஓவியங்கள் இல்லை முடிவுகள் கிடைத்தன diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml index 2c018deb80..ed2c87d8cb 100644 --- a/app/src/main/res/values-te/strings.xml +++ b/app/src/main/res/values-te/strings.xml @@ -4118,15 +4118,6 @@ ఇటీవలివి ఈ సందేశం ఇటీవల ఉపయోగించబడింది - స్మైలీస్ & ప్రజలు - ప్రకృతి - ఆహారం - కార్యాచరణలు - స్థలాలు - వస్తువులు - చిహ్నాలు - జెండాలు - ఎమోటికాన్లు ఫలితాలు కనుగొనబడలేదు diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 9915dd9b78..d05a64f5c5 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -3995,15 +3995,6 @@ ล่าสุด ข้อความนี้ เพิ่งใช้ - หน้ายิ้ม & ผู้คน - ธรรมชาติ - อาหาร - กิจกรรม - สถานที่ - วัตถุ - สัญลักษณ์ - ธง - อีโมติคอน ไม่พบผลลัพธ์ diff --git a/app/src/main/res/values-tl/strings.xml b/app/src/main/res/values-tl/strings.xml index b11a61df9a..53be788508 100644 --- a/app/src/main/res/values-tl/strings.xml +++ b/app/src/main/res/values-tl/strings.xml @@ -4118,15 +4118,6 @@ Recents This Message Recently Used - Smileys & People - Nature - Food - Mga Aktibidad - Places - Mga Bagay - Mga Simbulo - Mga Watawat - Emoticons No results found diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 90a9690540..22603dc935 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -4118,15 +4118,6 @@ Yakınlarda Bu İleti Yakınlarda Kullanılmış - Smileyler & Kişiler - Doğa - Gıda - Etkinlikler - Mekanlar - Nesneler - Semboller - Bayraklar - His simgeleri Sonuç bulunamadı diff --git a/app/src/main/res/values-ug/strings.xml b/app/src/main/res/values-ug/strings.xml index f1ee96e02a..60e05ff316 100644 --- a/app/src/main/res/values-ug/strings.xml +++ b/app/src/main/res/values-ug/strings.xml @@ -3995,15 +3995,6 @@ يېقىنقى بۇ ئۇچۇر يېقىندا ئىشلىتىلدى - كۈلۈمسىرەش& كىشىلەر - تەبىئەت - يېمەكلىك - پائالىيەت - ئورۇن - نەرسە - بەلگە - بايراق - ھېسسىيات ئىپادىلىرى ھېچقانداق نەتىجە تېپىلمىدى diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index cb2304c68b..0b1d2cd0d5 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -4364,15 +4364,6 @@ Недавні Це повідомлення Недавні - Смайлики і люди - Природа - Їжа і напої - Заняття - Місцевості - Предмети - Символи - Прапори - Емограми Нічого не знайдено diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 416c88cac0..c0ca854b7d 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -4118,15 +4118,6 @@ حالیہ یہ پیغام حالیہ استعمال شدہ - اموجس &amp؛ لوگ - قدرت - کھانا - سرگرمیاں - مقامات - چیزیں - علامتیں - جھنڈے - ایموجیس کوئی نتیجہ نہیں diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index a63bbee973..4dfe8f6d12 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -3995,15 +3995,6 @@ Gần đây Tin nhắn này Sử dụng gần đây - Mặt cười và Con người - Thiên nhiên - Thức ăn - Hoạt động - Địa điểm - Đồ vật - Kí hiệu - Cờ - Emoticons Không tìm thấy kết quả diff --git a/app/src/main/res/values-yue/strings.xml b/app/src/main/res/values-yue/strings.xml index e74153499d..72bcdfd583 100644 --- a/app/src/main/res/values-yue/strings.xml +++ b/app/src/main/res/values-yue/strings.xml @@ -3995,15 +3995,6 @@ 最近用過 呢個訊息 最近用過 - 公仔同人像 - 大自然 - 嘢食 - 活動 - 地方 - 物件 - 符號 - 旗幟 - 表情符號 查無結果 diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index ae35ab5a29..be772fd95d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -3995,15 +3995,6 @@ 最近通话 此消息 最近使用 - 笑脸和情感 - 自然 - 食物 - 活动 - 地点 - 物品 - 符号 - 旗帜 - 颜文字 未找到结果 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index cf0c3b2b6d..ec72e88028 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -3995,15 +3995,6 @@ 最近使用 此訊息 最近使用 - 笑臉與人物 - 自然 - 食物 - 活動 - 地方 - 物件 - 符號 - 旗幟 - 表情符號 查無結果 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 2b982986d9..2a4dfc1e80 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -3995,15 +3995,6 @@ 最近使用 這個訊息 最近使用的 - 笑臉 & 人們 - 自然 - 食物 - 活動 - 地方 - 物品 - 符號 - 旗幟 - 表情符號 未找到結果 diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 7e781fdd33..7a6a242f44 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -5,16 +5,6 @@ - - - - - - - - - - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 52b5a5685d..2b76329a60 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4125,15 +4125,6 @@ Recents This Message Recently Used - Smileys & People - Nature - Food - Activities - Places - Objects - Symbols - Flags - Emoticons No results found diff --git a/app/src/test/java/org/thoughtcrime/securesms/components/settings/app/subscription/SubscriptionsConfigurationExtensionsKtTest.kt b/app/src/test/java/org/thoughtcrime/securesms/components/settings/app/subscription/SubscriptionsConfigurationExtensionsKtTest.kt index 56793dc4b0..6c3f26c37d 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/components/settings/app/subscription/SubscriptionsConfigurationExtensionsKtTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/components/settings/app/subscription/SubscriptionsConfigurationExtensionsKtTest.kt @@ -3,14 +3,17 @@ package org.thoughtcrime.securesms.components.settings.app.subscription import android.app.Application import androidx.test.core.app.ApplicationProvider import io.mockk.every +import io.mockk.mockk import io.mockk.mockkStatic import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Assert.assertTrue +import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config +import org.signal.core.util.CoreUtilDependencies import org.signal.network.util.JsonUtil import org.thoughtcrime.securesms.dependencies.AppDependencies import org.whispersystems.signalservice.internal.push.SubscriptionsConfiguration @@ -23,6 +26,11 @@ class SubscriptionsConfigurationExtensionsKtTest { private val testData: String = javaClass.classLoader!!.getResourceAsStream("donations_configuration_test_data.json").bufferedReader().readText() private val testSubject = JsonUtil.fromJson(testData, SubscriptionsConfiguration::class.java) + @Before + fun setUp() { + CoreUtilDependencies.init(ApplicationProvider.getApplicationContext(), mockk(relaxed = true), CoreUtilDependencies.BuildInfo(0, 0)) + } + @Test fun `Given all methods are available, when I getSubscriptionAmounts, then I expect all currencies`() { val subscriptionPrices = testSubject.getSubscriptionAmounts(SubscriptionsConfiguration.SUBSCRIPTION_LEVELS.first(), AllPaymentMethodsAvailability) diff --git a/app/src/test/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelEmojiValidationTest.kt b/app/src/test/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelEmojiValidationTest.kt index b04abc0058..94ddcf1f30 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelEmojiValidationTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/groups/memberlabel/MemberLabelEmojiValidationTest.kt @@ -15,7 +15,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config -import org.thoughtcrime.securesms.emoji.EmojiSource +import org.signal.emoji.EmojiSource import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule @RunWith(RobolectricTestRunner::class) diff --git a/core/util/build.gradle.kts b/core/util/build.gradle.kts index cf3a1c7f76..605cd4ef65 100644 --- a/core/util/build.gradle.kts +++ b/core/util/build.gradle.kts @@ -26,6 +26,7 @@ dependencies { testImplementation(testLibs.junit.junit) testImplementation(testLibs.assertk) + testImplementation(testLibs.mockk) testImplementation(testLibs.robolectric.robolectric) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/DeviceProperties.java b/core/util/src/main/java/org/signal/core/util/DeviceProperties.java similarity index 95% rename from app/src/main/java/org/thoughtcrime/securesms/util/DeviceProperties.java rename to core/util/src/main/java/org/signal/core/util/DeviceProperties.java index 12023c1970..9ad899e4ae 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/DeviceProperties.java +++ b/core/util/src/main/java/org/signal/core/util/DeviceProperties.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.util; +package org.signal.core.util; import android.app.ActivityManager; import android.app.ActivityManager.MemoryInfo; @@ -10,10 +10,6 @@ import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; -import org.thoughtcrime.securesms.dependencies.AppDependencies; -import org.signal.core.util.ServiceUtil; - - /** * Easy access to various properties of the device, typically to make performance-related decisions. */ @@ -35,7 +31,7 @@ public final class DeviceProperties { public static boolean isBackgroundRestricted() { if (Build.VERSION.SDK_INT >= 28) { - return isBackgroundRestricted(AppDependencies.getApplication()); + return isBackgroundRestricted(CoreUtilDependencies.getApplication()); } return false; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/FutureTaskListener.java b/core/util/src/main/java/org/signal/core/util/FutureTaskListener.java similarity index 95% rename from app/src/main/java/org/thoughtcrime/securesms/util/FutureTaskListener.java rename to core/util/src/main/java/org/signal/core/util/FutureTaskListener.java index e182dc6bc2..67fed45e11 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/FutureTaskListener.java +++ b/core/util/src/main/java/org/signal/core/util/FutureTaskListener.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.util.concurrent.ExecutionException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ListenableFutureTask.java b/core/util/src/main/java/org/signal/core/util/ListenableFutureTask.java similarity index 98% rename from app/src/main/java/org/thoughtcrime/securesms/util/ListenableFutureTask.java rename to core/util/src/main/java/org/signal/core/util/ListenableFutureTask.java index 068772aa4d..96691399ba 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ListenableFutureTask.java +++ b/core/util/src/main/java/org/signal/core/util/ListenableFutureTask.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 androidx.annotation.Nullable; @@ -49,7 +49,6 @@ public class ListenableFutureTask extends FutureTask { this.callbackExecutor = callbackExecutor; } - public ListenableFutureTask(final V result) { this(result, null); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ScreenDensity.java b/core/util/src/main/java/org/signal/core/util/ScreenDensity.java similarity index 92% rename from app/src/main/java/org/thoughtcrime/securesms/util/ScreenDensity.java rename to core/util/src/main/java/org/signal/core/util/ScreenDensity.java index f7a3692f61..22bcaed07b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ScreenDensity.java +++ b/core/util/src/main/java/org/signal/core/util/ScreenDensity.java @@ -1,12 +1,10 @@ -package org.thoughtcrime.securesms.util; +package org.signal.core.util; import android.content.Context; import android.util.DisplayMetrics; import androidx.annotation.NonNull; -import org.thoughtcrime.securesms.dependencies.AppDependencies; - import java.util.LinkedHashMap; import java.util.Map; @@ -54,7 +52,7 @@ public final class ScreenDensity { } public static @NonNull String getBestDensityBucketForDevice() { - ScreenDensity density = get(AppDependencies.getApplication()); + ScreenDensity density = get(CoreUtilDependencies.getApplication()); if (density.isKnownDensity()) { return density.bucket; diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SoftHashMap.java b/core/util/src/main/java/org/signal/core/util/SoftHashMap.java similarity index 99% rename from app/src/main/java/org/thoughtcrime/securesms/util/SoftHashMap.java rename to core/util/src/main/java/org/signal/core/util/SoftHashMap.java index 2d3396eb7c..701f2c46ee 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SoftHashMap.java +++ b/core/util/src/main/java/org/signal/core/util/SoftHashMap.java @@ -17,7 +17,7 @@ * under the License. */ -package org.thoughtcrime.securesms.util; +package org.signal.core.util; import androidx.annotation.NonNull; diff --git a/app/src/test/java/org/thoughtcrime/securesms/util/ScreenDensityTest.kt b/core/util/src/test/java/org/signal/core/util/ScreenDensityTest.kt similarity index 98% rename from app/src/test/java/org/thoughtcrime/securesms/util/ScreenDensityTest.kt rename to core/util/src/test/java/org/signal/core/util/ScreenDensityTest.kt index ba83066ccf..91c973fae8 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/util/ScreenDensityTest.kt +++ b/core/util/src/test/java/org/signal/core/util/ScreenDensityTest.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.util +package org.signal.core.util import android.content.Context import android.content.res.Resources diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 61fae2950f..3afdddd416 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -3439,6 +3439,9 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + diff --git a/lib/emoji/build.gradle.kts b/lib/emoji/build.gradle.kts new file mode 100644 index 0000000000..ee2ecc4a1e --- /dev/null +++ b/lib/emoji/build.gradle.kts @@ -0,0 +1,47 @@ +plugins { + id("signal-library") + id("com.squareup.wire") + alias(libs.plugins.compose.compiler) +} + +android { + namespace = "org.signal.emoji" + + buildFeatures { + compose = true + } + + testOptions { + unitTests { + isIncludeAndroidResources = true + } + } +} + +wire { + kotlin { + javaInterop = true + } + + sourcePath { + srcDir("src/main/protowire") + } +} + +dependencies { + implementation(project(":core:util")) + implementation(project(":core:ui")) + + implementation(libs.jackson.module.kotlin) + implementation(libs.androidx.emoji2) + implementation(libs.square.okhttp3) + implementation(libs.square.okio) + api(libs.glide.glide) + + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.androidx.compose.material3) + implementation(libs.accompanist.drawablepainter) + + testImplementation(testLibs.mockk) + testImplementation(testLibs.assertk) +} diff --git a/lib/emoji/src/main/AndroidManifest.xml b/lib/emoji/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..b2d3ea1235 --- /dev/null +++ b/lib/emoji/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/assets/emoji/Activity.webp b/lib/emoji/src/main/assets/emoji/Activity.webp similarity index 100% rename from app/src/main/assets/emoji/Activity.webp rename to lib/emoji/src/main/assets/emoji/Activity.webp diff --git a/app/src/main/assets/emoji/Flags_0.webp b/lib/emoji/src/main/assets/emoji/Flags_0.webp similarity index 100% rename from app/src/main/assets/emoji/Flags_0.webp rename to lib/emoji/src/main/assets/emoji/Flags_0.webp diff --git a/app/src/main/assets/emoji/Flags_1.webp b/lib/emoji/src/main/assets/emoji/Flags_1.webp similarity index 100% rename from app/src/main/assets/emoji/Flags_1.webp rename to lib/emoji/src/main/assets/emoji/Flags_1.webp diff --git a/app/src/main/assets/emoji/Foods.webp b/lib/emoji/src/main/assets/emoji/Foods.webp similarity index 100% rename from app/src/main/assets/emoji/Foods.webp rename to lib/emoji/src/main/assets/emoji/Foods.webp diff --git a/app/src/main/assets/emoji/Nature.webp b/lib/emoji/src/main/assets/emoji/Nature.webp similarity index 100% rename from app/src/main/assets/emoji/Nature.webp rename to lib/emoji/src/main/assets/emoji/Nature.webp diff --git a/app/src/main/assets/emoji/Objects_0.webp b/lib/emoji/src/main/assets/emoji/Objects_0.webp similarity index 100% rename from app/src/main/assets/emoji/Objects_0.webp rename to lib/emoji/src/main/assets/emoji/Objects_0.webp diff --git a/app/src/main/assets/emoji/Objects_1.webp b/lib/emoji/src/main/assets/emoji/Objects_1.webp similarity index 100% rename from app/src/main/assets/emoji/Objects_1.webp rename to lib/emoji/src/main/assets/emoji/Objects_1.webp diff --git a/app/src/main/assets/emoji/People_0.webp b/lib/emoji/src/main/assets/emoji/People_0.webp similarity index 100% rename from app/src/main/assets/emoji/People_0.webp rename to lib/emoji/src/main/assets/emoji/People_0.webp diff --git a/app/src/main/assets/emoji/People_1.webp b/lib/emoji/src/main/assets/emoji/People_1.webp similarity index 100% rename from app/src/main/assets/emoji/People_1.webp rename to lib/emoji/src/main/assets/emoji/People_1.webp diff --git a/app/src/main/assets/emoji/People_10.webp b/lib/emoji/src/main/assets/emoji/People_10.webp similarity index 100% rename from app/src/main/assets/emoji/People_10.webp rename to lib/emoji/src/main/assets/emoji/People_10.webp diff --git a/app/src/main/assets/emoji/People_2.webp b/lib/emoji/src/main/assets/emoji/People_2.webp similarity index 100% rename from app/src/main/assets/emoji/People_2.webp rename to lib/emoji/src/main/assets/emoji/People_2.webp diff --git a/app/src/main/assets/emoji/People_3.webp b/lib/emoji/src/main/assets/emoji/People_3.webp similarity index 100% rename from app/src/main/assets/emoji/People_3.webp rename to lib/emoji/src/main/assets/emoji/People_3.webp diff --git a/app/src/main/assets/emoji/People_4.webp b/lib/emoji/src/main/assets/emoji/People_4.webp similarity index 100% rename from app/src/main/assets/emoji/People_4.webp rename to lib/emoji/src/main/assets/emoji/People_4.webp diff --git a/app/src/main/assets/emoji/People_5.webp b/lib/emoji/src/main/assets/emoji/People_5.webp similarity index 100% rename from app/src/main/assets/emoji/People_5.webp rename to lib/emoji/src/main/assets/emoji/People_5.webp diff --git a/app/src/main/assets/emoji/People_6.webp b/lib/emoji/src/main/assets/emoji/People_6.webp similarity index 100% rename from app/src/main/assets/emoji/People_6.webp rename to lib/emoji/src/main/assets/emoji/People_6.webp diff --git a/app/src/main/assets/emoji/People_7.webp b/lib/emoji/src/main/assets/emoji/People_7.webp similarity index 100% rename from app/src/main/assets/emoji/People_7.webp rename to lib/emoji/src/main/assets/emoji/People_7.webp diff --git a/app/src/main/assets/emoji/People_8.webp b/lib/emoji/src/main/assets/emoji/People_8.webp similarity index 100% rename from app/src/main/assets/emoji/People_8.webp rename to lib/emoji/src/main/assets/emoji/People_8.webp diff --git a/app/src/main/assets/emoji/People_9.webp b/lib/emoji/src/main/assets/emoji/People_9.webp similarity index 100% rename from app/src/main/assets/emoji/People_9.webp rename to lib/emoji/src/main/assets/emoji/People_9.webp diff --git a/app/src/main/assets/emoji/Places.webp b/lib/emoji/src/main/assets/emoji/Places.webp similarity index 100% rename from app/src/main/assets/emoji/Places.webp rename to lib/emoji/src/main/assets/emoji/Places.webp diff --git a/app/src/main/assets/emoji/Symbols.webp b/lib/emoji/src/main/assets/emoji/Symbols.webp similarity index 100% rename from app/src/main/assets/emoji/Symbols.webp rename to lib/emoji/src/main/assets/emoji/Symbols.webp diff --git a/app/src/main/assets/emoji/emoji_data.json b/lib/emoji/src/main/assets/emoji/emoji_data.json similarity index 100% rename from app/src/main/assets/emoji/emoji_data.json rename to lib/emoji/src/main/assets/emoji/emoji_data.json diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/AnimatingImageSpan.java b/lib/emoji/src/main/java/org/signal/emoji/AnimatingImageSpan.java similarity index 86% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/AnimatingImageSpan.java rename to lib/emoji/src/main/java/org/signal/emoji/AnimatingImageSpan.java index d75af0ba5e..50d4928784 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/AnimatingImageSpan.java +++ b/lib/emoji/src/main/java/org/signal/emoji/AnimatingImageSpan.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable.Callback; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/CompositeEmojiPageModel.java b/lib/emoji/src/main/java/org/signal/emoji/CompositeEmojiPageModel.java similarity index 96% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/CompositeEmojiPageModel.java rename to lib/emoji/src/main/java/org/signal/emoji/CompositeEmojiPageModel.java index 66ee8c5689..be7e448dbb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/CompositeEmojiPageModel.java +++ b/lib/emoji/src/main/java/org/signal/emoji/CompositeEmojiPageModel.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import android.net.Uri; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/Emoji.java b/lib/emoji/src/main/java/org/signal/emoji/Emoji.java similarity index 95% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/Emoji.java rename to lib/emoji/src/main/java/org/signal/emoji/Emoji.java index 6935bf17ab..a52c0da228 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/Emoji.java +++ b/lib/emoji/src/main/java/org/signal/emoji/Emoji.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import androidx.annotation.Nullable; diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiCategory.kt b/lib/emoji/src/main/java/org/signal/emoji/EmojiCategory.kt similarity index 96% rename from app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiCategory.kt rename to lib/emoji/src/main/java/org/signal/emoji/EmojiCategory.kt index 70d7899ba2..5995fb1a9f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiCategory.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiCategory.kt @@ -1,8 +1,7 @@ -package org.thoughtcrime.securesms.emoji +package org.signal.emoji import androidx.annotation.AttrRes import androidx.annotation.StringRes -import org.thoughtcrime.securesms.R /** * All the different Emoji categories the app is aware of in the order we want to display them. diff --git a/lib/emoji/src/main/java/org/signal/emoji/EmojiDependencies.kt b/lib/emoji/src/main/java/org/signal/emoji/EmojiDependencies.kt new file mode 100644 index 0000000000..cb8f85bbc6 --- /dev/null +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiDependencies.kt @@ -0,0 +1,80 @@ +/* + * Copyright 2026 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.signal.emoji + +import android.app.Application +import okhttp3.Response +import org.signal.core.util.crypto.AttachmentSecretStore + +/** + * Application state and policy that the emoji engine depends on but does not own. + */ +object EmojiDependencies { + + private lateinit var _application: Application + private lateinit var _provider: Provider + + fun init(application: Application, provider: Provider) { + if (this::_provider.isInitialized) { + return + } + + _application = application + _provider = provider + } + + @JvmStatic + val application: Application + get() = _application + + /** Whether the user prefers their system emoji font over Signal's emoji sheets. */ + @JvmStatic + val preferSystemEmoji: Boolean + get() = _provider.providePreferSystemEmoji() + + /** Internal setting that pins the engine to the emoji bundled in assets. */ + val forceBuiltInEmoji: Boolean + get() = _provider.provideForceBuiltInEmoji() + + /** Store for the secret that downloaded emoji are encrypted with on disk. */ + val attachmentSecretStore: AttachmentSecretStore + get() = _provider.provideAttachmentSecretStore() + + /** The CDN that emoji versions, sheets, and jumbomoji are fetched from. */ + val remote: RemoteSource + get() = _provider.provideRemote() + + /** Whether current network conditions and settings permit downloading jumbomoji. */ + @JvmStatic + fun canAutoDownloadJumboEmoji(): Boolean = _provider.provideCanAutoDownloadJumboEmoji() + + /** Names of the jumbomoji sheets already downloaded for [version]. */ + fun getDownloadedJumboSheets(version: Int): Set = _provider.provideDownloadedJumboSheets(version) + + /** Records that [sheet] finished downloading for [version]. */ + fun onJumboSheetDownloaded(version: Int, sheet: String) = _provider.onJumboSheetDownloaded(version, sheet) + + interface Provider { + fun providePreferSystemEmoji(): Boolean + fun provideForceBuiltInEmoji(): Boolean + fun provideAttachmentSecretStore(): AttachmentSecretStore + fun provideRemote(): RemoteSource + fun provideCanAutoDownloadJumboEmoji(): Boolean + fun provideDownloadedJumboSheets(version: Int): Set + fun onJumboSheetDownloaded(version: Int, sheet: String) + } + + interface RemoteSource { + val staticPath: String + val dynamicPath: String + + fun getLong(endpoint: String): Long + + fun getObjectMd5(endpoint: String): ByteArray? + + fun getObject(endpoint: String): Response + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiDownloader.java b/lib/emoji/src/main/java/org/signal/emoji/EmojiDownloader.java similarity index 99% rename from app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiDownloader.java rename to lib/emoji/src/main/java/org/signal/emoji/EmojiDownloader.java index 84c9a1d362..ed89bdcd57 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiDownloader.java +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiDownloader.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.emoji; +package org.signal.emoji; import android.content.Context; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiEventListener.java b/lib/emoji/src/main/java/org/signal/emoji/EmojiEventListener.java similarity index 73% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiEventListener.java rename to lib/emoji/src/main/java/org/signal/emoji/EmojiEventListener.java index e17ef37734..bb87b55a63 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiEventListener.java +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiEventListener.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import android.view.KeyEvent; diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiFiles.kt b/lib/emoji/src/main/java/org/signal/emoji/EmojiFiles.kt similarity index 97% rename from app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiFiles.kt rename to lib/emoji/src/main/java/org/signal/emoji/EmojiFiles.kt index d0d40a60bd..518976418a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiFiles.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiFiles.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.emoji +package org.signal.emoji import android.content.Context import android.net.Uri @@ -12,12 +12,11 @@ import okio.HashingSink import okio.blackholeSink import okio.buffer import okio.source +import org.signal.core.util.PartAuthorityUris import org.signal.core.util.crypto.AttachmentSecretProvider import org.signal.core.util.crypto.ModernDecryptingPartInputStream import org.signal.core.util.crypto.ModernEncryptingPartOutputStream import org.signal.core.util.logging.Log -import org.thoughtcrime.securesms.crypto.AppAttachmentSecretStore -import org.thoughtcrime.securesms.mms.PartAuthority import java.io.File import java.io.IOException import java.io.InputStream @@ -58,15 +57,15 @@ private fun Context.getNameFile(versionUuid: UUID): File = File(File(getEmojiDir private fun Context.getJumboFile(versionUuid: UUID): File = File(File(getEmojiDirectory(), versionUuid.toString()).apply { mkdir() }, JUMBO_FILE) @Suppress("UNUSED_PARAMETER") -private fun getFilesUri(name: String, format: String): Uri = PartAuthority.getEmojiUri(name) +private fun getFilesUri(name: String, format: String): Uri = PartAuthorityUris.getEmojiUri(name) private fun getOutputStream(context: Context, outputFile: File): OutputStream { - val attachmentSecret = AttachmentSecretProvider.getInstance(context, AppAttachmentSecretStore).orCreateAttachmentSecret + val attachmentSecret = AttachmentSecretProvider.getInstance(context, EmojiDependencies.attachmentSecretStore).orCreateAttachmentSecret return ModernEncryptingPartOutputStream.createFor(attachmentSecret, outputFile, true).second } private fun getInputStream(context: Context, inputFile: File): InputStream { - val attachmentSecret = AttachmentSecretProvider.getInstance(context, AppAttachmentSecretStore).orCreateAttachmentSecret + val attachmentSecret = AttachmentSecretProvider.getInstance(context, EmojiDependencies.attachmentSecretStore).orCreateAttachmentSecret return ModernDecryptingPartInputStream.createFor(attachmentSecret, inputFile, 0) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiFilter.java b/lib/emoji/src/main/java/org/signal/emoji/EmojiFilter.java similarity index 94% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiFilter.java rename to lib/emoji/src/main/java/org/signal/emoji/EmojiFilter.java index b60650dbee..a4de8648df 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiFilter.java +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiFilter.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import android.text.InputFilter; import android.text.Spannable; diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiJsonParser.kt b/lib/emoji/src/main/java/org/signal/emoji/EmojiJsonParser.kt similarity index 93% rename from app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiJsonParser.kt rename to lib/emoji/src/main/java/org/signal/emoji/EmojiJsonParser.kt index f555b231b4..606436c122 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiJsonParser.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiJsonParser.kt @@ -1,13 +1,9 @@ -package org.thoughtcrime.securesms.emoji +package org.signal.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 java.io.InputStream import java.nio.charset.Charset diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiPage.kt b/lib/emoji/src/main/java/org/signal/emoji/EmojiPage.kt similarity index 92% rename from app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiPage.kt rename to lib/emoji/src/main/java/org/signal/emoji/EmojiPage.kt index 1d3341c914..cd6a037b87 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiPage.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiPage.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.emoji +package org.signal.emoji import android.net.Uri import com.bumptech.glide.load.Key diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiPageCache.kt b/lib/emoji/src/main/java/org/signal/emoji/EmojiPageCache.kt similarity index 91% rename from app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiPageCache.kt rename to lib/emoji/src/main/java/org/signal/emoji/EmojiPageCache.kt index de9b4eb480..17349ccf7c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiPageCache.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiPageCache.kt @@ -1,15 +1,15 @@ -package org.thoughtcrime.securesms.emoji +package org.signal.emoji import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactory import androidx.annotation.MainThread import androidx.annotation.WorkerThread +import org.signal.core.util.ListenableFutureTask +import org.signal.core.util.PartAuthorityUris +import org.signal.core.util.SoftHashMap import org.signal.core.util.concurrent.SimpleTask import org.signal.core.util.logging.Log -import org.thoughtcrime.securesms.mms.PartAuthority -import org.thoughtcrime.securesms.util.ListenableFutureTask -import org.thoughtcrime.securesms.util.SoftHashMap import java.io.IOException import java.io.InputStream @@ -69,7 +69,7 @@ object EmojiPageCache { private fun loadInternal(context: Context, emojiPageRequest: EmojiPageRequest): Bitmap? { val inputStream: InputStream = when (emojiPageRequest.emojiPage) { is EmojiPage.Asset -> context.assets.open(emojiPageRequest.emojiPage.uri.toString().replace("file:///android_asset/", "")) - is EmojiPage.Disk -> EmojiFiles.openForReading(context, PartAuthority.getEmojiFilename(emojiPageRequest.emojiPage.uri)) + is EmojiPage.Disk -> EmojiFiles.openForReading(context, PartAuthorityUris.getFilename(emojiPageRequest.emojiPage.uri)) } val bitmapOptions = BitmapFactory.Options() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageModel.java b/lib/emoji/src/main/java/org/signal/emoji/EmojiPageModel.java similarity index 84% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageModel.java rename to lib/emoji/src/main/java/org/signal/emoji/EmojiPageModel.java index 1ed6b18c49..27603d19c4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageModel.java +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiPageModel.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import android.net.Uri; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java b/lib/emoji/src/main/java/org/signal/emoji/EmojiProvider.java similarity index 92% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java rename to lib/emoji/src/main/java/org/signal/emoji/EmojiProvider.java index 431dcf226d..0b5d74dfe6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiProvider.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import android.content.Context; import android.graphics.Bitmap; @@ -18,14 +18,10 @@ import androidx.annotation.Nullable; import org.signal.core.util.ThreadUtil; import org.signal.core.util.logging.Log; -import org.thoughtcrime.securesms.components.emoji.parsing.EmojiDrawInfo; -import org.thoughtcrime.securesms.components.emoji.parsing.EmojiParser; -import org.thoughtcrime.securesms.emoji.EmojiPageCache; -import org.thoughtcrime.securesms.emoji.EmojiSource; -import org.thoughtcrime.securesms.emoji.JumboEmoji; -import org.thoughtcrime.securesms.keyvalue.SignalStore; -import org.thoughtcrime.securesms.util.DeviceProperties; -import org.thoughtcrime.securesms.util.FutureTaskListener; +import org.signal.emoji.parsing.EmojiDrawInfo; +import org.signal.emoji.parsing.EmojiParser; +import org.signal.core.util.DeviceProperties; +import org.signal.core.util.FutureTaskListener; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -50,7 +46,7 @@ public class EmojiProvider { } } - static @Nullable Spannable emojify(@Nullable EmojiParser.CandidateList matches, + public static @Nullable Spannable emojify(@Nullable EmojiParser.CandidateList matches, @Nullable CharSequence text, @NonNull TextView tv, boolean jumboEmoji) @@ -97,11 +93,11 @@ public class EmojiProvider { return builder; } - static @Nullable Drawable getEmojiDrawable(@NonNull Context context, @Nullable CharSequence emoji) { + public static @Nullable Drawable getEmojiDrawable(@NonNull Context context, @Nullable CharSequence emoji) { return getEmojiDrawable(context, emoji, false); } - static @Nullable Drawable getEmojiDrawable(@NonNull Context context, @Nullable CharSequence emoji, boolean jumboEmoji) { + public static @Nullable Drawable getEmojiDrawable(@NonNull Context context, @Nullable CharSequence emoji, boolean jumboEmoji) { if (TextUtils.isEmpty(emoji)) { return null; } @@ -122,7 +118,7 @@ public class EmojiProvider { return null; } - if (SignalStore.settings().isPreferSystemEmoji()) { + if (EmojiDependencies.getPreferSystemEmoji()) { return new SystemEmojiDrawable(drawInfo.getEmoji()); } @@ -207,7 +203,7 @@ public class EmojiProvider { return null; } - if (SignalStore.settings().isPreferSystemEmoji()) { + if (EmojiDependencies.getPreferSystemEmoji()) { return new SystemEmojiDrawable(drawInfo.getEmoji()); } @@ -261,7 +257,7 @@ public class EmojiProvider { return drawable; } - static final class EmojiDrawable extends Drawable { + public static final class EmojiDrawable extends Drawable { private final float intrinsicWidth; private final float intrinsicHeight; private final Rect emojiBounds; diff --git a/lib/emoji/src/main/java/org/signal/emoji/EmojiRemote.kt b/lib/emoji/src/main/java/org/signal/emoji/EmojiRemote.kt new file mode 100644 index 0000000000..22213e37e9 --- /dev/null +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiRemote.kt @@ -0,0 +1,63 @@ +package org.signal.emoji + +import okhttp3.Response +import java.io.IOException + +private val baseStaticBucketUri: String + get() = "${EmojiDependencies.remote.staticPath}/android/emoji" + +/** + * Responsible for communicating with the CDN to download Emoji related objects. + */ +object EmojiRemote { + + private val versionUri: String + get() = "${EmojiDependencies.remote.dynamicPath}/android/emoji/version_v3.txt" + + @JvmStatic + @Throws(IOException::class) + fun getVersion(): Int { + return EmojiDependencies.remote.getLong(versionUri).toInt() + } + + /** + * Downloads and returns the MD5 hash stored in an object's ETag + */ + @JvmStatic + fun getMd5(emojiRequest: EmojiRequest): ByteArray? { + return EmojiDependencies.remote.getObjectMd5(emojiRequest.uri) + } + + /** + * Downloads an object for the specified name. + */ + @JvmStatic + fun getObject(emojiRequest: EmojiRequest): Response { + return EmojiDependencies.remote.getObject(emojiRequest.uri) + } +} + +interface EmojiRequest { + val uri: String +} + +class EmojiJsonRequest(version: Int) : EmojiRequest { + override val uri: String = "$baseStaticBucketUri/$version/emoji_data.json" +} + +class EmojiImageRequest( + version: Int, + density: String, + name: String, + format: String +) : EmojiRequest { + override val uri: String = "$baseStaticBucketUri/$version/$density/$name.$format" +} + +class EmojiFileRequest( + version: Int, + density: String, + name: String +) : EmojiRequest { + override val uri: String = "$baseStaticBucketUri/$version/$density/$name" +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiSource.kt b/lib/emoji/src/main/java/org/signal/emoji/EmojiSource.kt similarity index 87% rename from app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiSource.kt rename to lib/emoji/src/main/java/org/signal/emoji/EmojiSource.kt index 348cf50244..204854580b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/EmojiSource.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiSource.kt @@ -1,16 +1,11 @@ -package org.thoughtcrime.securesms.emoji +package org.signal.emoji import android.net.Uri import androidx.annotation.VisibleForTesting import androidx.annotation.WorkerThread -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.components.emoji.parsing.EmojiDrawInfo -import org.thoughtcrime.securesms.components.emoji.parsing.EmojiTree -import org.thoughtcrime.securesms.dependencies.AppDependencies -import org.thoughtcrime.securesms.keyvalue.SignalStore -import org.thoughtcrime.securesms.util.ScreenDensity +import org.signal.core.util.ScreenDensity +import org.signal.emoji.parsing.EmojiDrawInfo +import org.signal.emoji.parsing.EmojiTree import java.io.InputStream import java.util.concurrent.CountDownLatch import java.util.concurrent.atomic.AtomicReference @@ -104,11 +99,11 @@ class EmojiSource( } private fun loadRemoteBasedEmojis(): EmojiSource? { - if (SignalStore.internal.forceBuiltInEmoji) { + if (EmojiDependencies.forceBuiltInEmoji) { return null } - val context = AppDependencies.application + val context = EmojiDependencies.application val version = EmojiFiles.Version.readVersion(context) ?: return null val emojiData = EmojiFiles.getLatestEmojiData(context, version)?.let { it.copy( @@ -125,7 +120,7 @@ class EmojiSource( @VisibleForTesting fun loadAssetBasedEmojis(): EmojiSource { - val emojiData: InputStream = AppDependencies.application.assets.open("emoji/emoji_data.json") + val emojiData: InputStream = EmojiDependencies.application.assets.open("emoji/emoji_data.json") emojiData.use { val parsedData: ParsedEmojiData = EmojiJsonParser.parse(it, ::getAssetsUri).getOrThrow() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiSpan.java b/lib/emoji/src/main/java/org/signal/emoji/EmojiSpan.java similarity index 91% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiSpan.java rename to lib/emoji/src/main/java/org/signal/emoji/EmojiSpan.java index c09759a119..d19608147f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiSpan.java +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiSpan.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import android.content.Context; import android.graphics.Canvas; @@ -10,7 +10,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; -import org.thoughtcrime.securesms.R; public class EmojiSpan extends AnimatingImageSpan { @@ -23,7 +22,7 @@ public class EmojiSpan extends AnimatingImageSpan { super(drawable, tv); fontMetrics = tv.getPaint().getFontMetricsInt(); size = fontMetrics != null ? Math.abs(fontMetrics.descent) + Math.abs(fontMetrics.ascent) - : tv.getResources().getDimensionPixelSize(R.dimen.conversation_item_body_text_size); + : tv.getResources().getDimensionPixelSize(R.dimen.emoji_default_text_size); getDrawable().setBounds(0, 0, size, size); } @@ -31,7 +30,7 @@ public class EmojiSpan extends AnimatingImageSpan { super(drawable, null); fontMetrics = paint.getFontMetricsInt(); size = fontMetrics != null ? Math.abs(fontMetrics.descent) + Math.abs(fontMetrics.ascent) - : context.getResources().getDimensionPixelSize(R.dimen.conversation_item_body_text_size); + : context.getResources().getDimensionPixelSize(R.dimen.emoji_default_text_size); getDrawable().setBounds(0, 0, size, size); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiStrings.java b/lib/emoji/src/main/java/org/signal/emoji/EmojiStrings.java similarity index 93% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiStrings.java rename to lib/emoji/src/main/java/org/signal/emoji/EmojiStrings.java index 3da38e6020..6437fff896 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiStrings.java +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiStrings.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; public final class EmojiStrings { public static final String BUST_IN_SILHOUETTE = "\uD83D\uDC64"; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiText.kt b/lib/emoji/src/main/java/org/signal/emoji/EmojiText.kt similarity index 95% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiText.kt rename to lib/emoji/src/main/java/org/signal/emoji/EmojiText.kt index cf560dc3db..7cdab7370e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiText.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiText.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.thoughtcrime.securesms.components.emoji +package org.signal.emoji import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiUtil.java b/lib/emoji/src/main/java/org/signal/emoji/EmojiUtil.java similarity index 94% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiUtil.java rename to lib/emoji/src/main/java/org/signal/emoji/EmojiUtil.java index 128a7a4852..e1b5491ddb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiUtil.java +++ b/lib/emoji/src/main/java/org/signal/emoji/EmojiUtil.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import android.content.Context; import android.graphics.drawable.Drawable; @@ -7,9 +7,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.signal.core.util.StringUtil; -import org.thoughtcrime.securesms.components.emoji.parsing.EmojiParser; -import org.thoughtcrime.securesms.emoji.EmojiSource; -import org.thoughtcrime.securesms.emoji.ObsoleteEmoji; +import org.signal.emoji.parsing.EmojiParser; import org.signal.core.util.Util; import java.util.HashSet; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/Emojifier.kt b/lib/emoji/src/main/java/org/signal/emoji/Emojifier.kt similarity index 93% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/Emojifier.kt rename to lib/emoji/src/main/java/org/signal/emoji/Emojifier.kt index de162dca99..9757bc463a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/Emojifier.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/Emojifier.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -package org.thoughtcrime.securesms.components.emoji +package org.signal.emoji import android.content.Context import androidx.compose.foundation.Image @@ -28,8 +28,7 @@ import androidx.compose.ui.unit.TextUnit import com.google.accompanist.drawablepainter.rememberDrawablePainter import org.signal.core.ui.compose.DayNightPreviews import org.signal.core.ui.compose.Previews -import org.thoughtcrime.securesms.components.emoji.parsing.EmojiParser -import org.thoughtcrime.securesms.keyvalue.SignalStore +import org.signal.emoji.parsing.EmojiParser /** * Applies Signal or System emoji to the given content based on user settings. @@ -39,7 +38,7 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore @Composable fun Emojifier( text: String, - useSystemEmoji: Boolean = LocalInspectionMode.current || SignalStore.settings.isPreferSystemEmoji, + useSystemEmoji: Boolean = LocalInspectionMode.current || EmojiDependencies.preferSystemEmoji, content: @Composable (AnnotatedString, Map) -> Unit = { annotatedText, inlineContent -> Text( text = annotatedText, diff --git a/app/src/main/java/org/thoughtcrime/securesms/emoji/JumboEmoji.kt b/lib/emoji/src/main/java/org/signal/emoji/JumboEmoji.kt similarity index 84% rename from app/src/main/java/org/thoughtcrime/securesms/emoji/JumboEmoji.kt rename to lib/emoji/src/main/java/org/signal/emoji/JumboEmoji.kt index 16af8a02bd..cc6e1816b4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/emoji/JumboEmoji.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/JumboEmoji.kt @@ -1,20 +1,18 @@ -package org.thoughtcrime.securesms.emoji +package org.signal.emoji import android.content.Context import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.SystemClock import androidx.annotation.MainThread +import org.signal.core.util.ListenableFutureTask +import org.signal.core.util.SoftHashMap import org.signal.core.util.ThreadUtil import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.concurrent.SimpleTask import org.signal.core.util.logging.Log -import org.thoughtcrime.securesms.components.emoji.parsing.EmojiDrawInfo -import org.thoughtcrime.securesms.emoji.protos.JumbomojiPack -import org.thoughtcrime.securesms.jobmanager.impl.AutoDownloadEmojiConstraint -import org.thoughtcrime.securesms.keyvalue.SignalStore -import org.thoughtcrime.securesms.util.ListenableFutureTask -import org.thoughtcrime.securesms.util.SoftHashMap +import org.signal.emoji.parsing.EmojiDrawInfo +import org.signal.emoji.protos.JumbomojiPack import java.io.IOException import java.util.UUID import java.util.concurrent.ExecutionException @@ -51,17 +49,17 @@ object JumboEmoji { if (EmojiFiles.getLatestEmojiData(context, version)?.format != null) { currentVersion = version.version - ThreadUtil.runOnMain { downloadedJumbos.addAll(SignalStore.emoji.getJumboEmojiSheets(version.version)) } + ThreadUtil.runOnMain { downloadedJumbos.addAll(EmojiDependencies.getDownloadedJumboSheets(version.version)) } } } } @JvmStatic @MainThread - fun canDownloadJumbo(context: Context): Boolean { + fun canDownloadJumbo(): Boolean { val now = SystemClock.elapsedRealtime() if (now - networkCheckThrottle > lastNetworkCheck) { - canDownload = AutoDownloadEmojiConstraint.canAutoDownloadJumboEmoji(context) + canDownload = EmojiDependencies.canAutoDownloadJumboEmoji() lastNetworkCheck = now } return canDownload && currentVersion >= JUMBOMOJI_SUPPORTED_VERSION @@ -108,7 +106,7 @@ object JumboEmoji { val uuid = jumbos.getUUIDForName(emojiName) if (uuid == null) { - if (!AutoDownloadEmojiConstraint.canAutoDownloadJumboEmoji(applicationContext)) { + if (!EmojiDependencies.canAutoDownloadJumboEmoji()) { throw CannotAutoDownload() } @@ -128,7 +126,7 @@ object JumboEmoji { } } - SignalStore.emoji.addJumboEmojiSheet(version.version, drawInfo.jumboSheet) + EmojiDependencies.onJumboSheetDownloaded(version.version, drawInfo.jumboSheet!!) } EmojiFiles.openForReadingJumbo(applicationContext, version, jumbos, emojiName).use { BitmapFactory.decodeStream(it, null, BitmapFactory.Options()) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/StaticEmojiPageModel.java b/lib/emoji/src/main/java/org/signal/emoji/StaticEmojiPageModel.java similarity index 93% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/StaticEmojiPageModel.java rename to lib/emoji/src/main/java/org/signal/emoji/StaticEmojiPageModel.java index 2433437f23..4233a53050 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/StaticEmojiPageModel.java +++ b/lib/emoji/src/main/java/org/signal/emoji/StaticEmojiPageModel.java @@ -1,12 +1,10 @@ -package org.thoughtcrime.securesms.components.emoji; +package org.signal.emoji; import android.net.Uri; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.thoughtcrime.securesms.emoji.EmojiCategory; - import java.util.Arrays; import java.util.Collections; import java.util.LinkedList; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SystemEmojiDrawable.kt b/lib/emoji/src/main/java/org/signal/emoji/SystemEmojiDrawable.kt similarity index 97% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/SystemEmojiDrawable.kt rename to lib/emoji/src/main/java/org/signal/emoji/SystemEmojiDrawable.kt index 3e05fba70a..1fa60944dc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/SystemEmojiDrawable.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/SystemEmojiDrawable.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji +package org.signal.emoji import android.graphics.Canvas import android.graphics.ColorFilter diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo.kt b/lib/emoji/src/main/java/org/signal/emoji/parsing/EmojiDrawInfo.kt similarity index 54% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo.kt rename to lib/emoji/src/main/java/org/signal/emoji/parsing/EmojiDrawInfo.kt index 76978f5212..33591d39b6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo.kt +++ b/lib/emoji/src/main/java/org/signal/emoji/parsing/EmojiDrawInfo.kt @@ -1,5 +1,5 @@ -package org.thoughtcrime.securesms.components.emoji.parsing +package org.signal.emoji.parsing -import org.thoughtcrime.securesms.emoji.EmojiPage +import org.signal.emoji.EmojiPage data class EmojiDrawInfo(val page: EmojiPage, val index: Int, val emoji: String, val rawEmoji: String?, val jumboSheet: String?) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiParser.java b/lib/emoji/src/main/java/org/signal/emoji/parsing/EmojiParser.java similarity index 97% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiParser.java rename to lib/emoji/src/main/java/org/signal/emoji/parsing/EmojiParser.java index a64c9f28f4..faf81052a4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiParser.java +++ b/lib/emoji/src/main/java/org/signal/emoji/parsing/EmojiParser.java @@ -18,13 +18,13 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package org.thoughtcrime.securesms.components.emoji.parsing; +package org.signal.emoji.parsing; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.thoughtcrime.securesms.emoji.JumboEmoji; +import org.signal.emoji.JumboEmoji; import java.util.Iterator; import java.util.LinkedList; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiTree.java b/lib/emoji/src/main/java/org/signal/emoji/parsing/EmojiTree.java similarity index 98% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiTree.java rename to lib/emoji/src/main/java/org/signal/emoji/parsing/EmojiTree.java index af8caa568d..aea96d9e23 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiTree.java +++ b/lib/emoji/src/main/java/org/signal/emoji/parsing/EmojiTree.java @@ -18,7 +18,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package org.thoughtcrime.securesms.components.emoji.parsing; +package org.signal.emoji.parsing; import androidx.annotation.Nullable; diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick.java b/lib/emoji/src/main/java/org/signal/emoji/parsing/Fitzpatrick.java similarity index 95% rename from app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick.java rename to lib/emoji/src/main/java/org/signal/emoji/parsing/Fitzpatrick.java index 68315a6eb6..67bf2a90bd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick.java +++ b/lib/emoji/src/main/java/org/signal/emoji/parsing/Fitzpatrick.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji.parsing; +package org.signal.emoji.parsing; public enum Fitzpatrick { diff --git a/app/src/main/protowire/Emoji.proto b/lib/emoji/src/main/protowire/Emoji.proto similarity index 73% rename from app/src/main/protowire/Emoji.proto rename to lib/emoji/src/main/protowire/Emoji.proto index 8cd0006227..7e6f6944dd 100644 --- a/app/src/main/protowire/Emoji.proto +++ b/lib/emoji/src/main/protowire/Emoji.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package signal; -option java_package = "org.thoughtcrime.securesms.emoji.protos"; +option java_package = "org.signal.emoji.protos"; option java_multiple_files = true; message JumbomojiPack { diff --git a/lib/emoji/src/main/res/values/attrs.xml b/lib/emoji/src/main/res/values/attrs.xml new file mode 100644 index 0000000000..0241066883 --- /dev/null +++ b/lib/emoji/src/main/res/values/attrs.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/lib/emoji/src/main/res/values/dimens.xml b/lib/emoji/src/main/res/values/dimens.xml new file mode 100644 index 0000000000..8541bf9966 --- /dev/null +++ b/lib/emoji/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + + + 16sp + diff --git a/lib/emoji/src/main/res/values/strings.xml b/lib/emoji/src/main/res/values/strings.xml new file mode 100644 index 0000000000..ff07b8d537 --- /dev/null +++ b/lib/emoji/src/main/res/values/strings.xml @@ -0,0 +1,13 @@ + + + + Smileys & People + Nature + Food + Activities + Places + Objects + Symbols + Flags + Emoticons + diff --git a/app/src/test/java/org/thoughtcrime/securesms/emoji/EmojiJsonParserTest.kt b/lib/emoji/src/test/java/org/signal/emoji/EmojiJsonParserTest.kt similarity index 95% rename from app/src/test/java/org/thoughtcrime/securesms/emoji/EmojiJsonParserTest.kt rename to lib/emoji/src/test/java/org/signal/emoji/EmojiJsonParserTest.kt index 3c02c61555..57be309c2f 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/emoji/EmojiJsonParserTest.kt +++ b/lib/emoji/src/test/java/org/signal/emoji/EmojiJsonParserTest.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.emoji +package org.signal.emoji import android.app.Application import android.net.Uri @@ -8,10 +8,6 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config -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 private const val INVALID_JSON = "{{}" private const val EMPTY_JSON = "{}" diff --git a/app/src/test/java/org/thoughtcrime/securesms/emoji/EmojiSourceTest.kt b/lib/emoji/src/test/java/org/signal/emoji/EmojiSourceTest.kt similarity index 87% rename from app/src/test/java/org/thoughtcrime/securesms/emoji/EmojiSourceTest.kt rename to lib/emoji/src/test/java/org/signal/emoji/EmojiSourceTest.kt index 3e213b7afe..bef6d15e42 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/emoji/EmojiSourceTest.kt +++ b/lib/emoji/src/test/java/org/signal/emoji/EmojiSourceTest.kt @@ -1,10 +1,8 @@ -package org.thoughtcrime.securesms.emoji +package org.signal.emoji import android.net.Uri import org.junit.Assert import org.junit.Test -import org.thoughtcrime.securesms.components.emoji.Emoji -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel class EmojiSourceTest { diff --git a/app/src/test/java/org/thoughtcrime/securesms/components/emoji/EmojiUtilTest_isEmoji.kt b/lib/emoji/src/test/java/org/signal/emoji/EmojiUtilTest_isEmoji.kt similarity index 91% rename from app/src/test/java/org/thoughtcrime/securesms/components/emoji/EmojiUtilTest_isEmoji.kt rename to lib/emoji/src/test/java/org/signal/emoji/EmojiUtilTest_isEmoji.kt index 7f9592ff98..a19c3b8f08 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/components/emoji/EmojiUtilTest_isEmoji.kt +++ b/lib/emoji/src/test/java/org/signal/emoji/EmojiUtilTest_isEmoji.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.components.emoji +package org.signal.emoji import android.app.Application import io.mockk.every @@ -9,15 +9,13 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.ParameterizedRobolectricTestRunner import org.robolectric.annotation.Config -import org.thoughtcrime.securesms.emoji.EmojiSource -import org.thoughtcrime.securesms.testutil.MockAppDependenciesRule @RunWith(ParameterizedRobolectricTestRunner::class) @Config(manifest = Config.NONE, application = Application::class) class EmojiUtilTest_isEmoji(private val input: String?, private val output: Boolean) { @get:Rule - val appDependencies = MockAppDependenciesRule() + val emojiDependencies = MockEmojiDependenciesRule() @Throws(Exception::class) @Test diff --git a/lib/emoji/src/test/java/org/signal/emoji/MockEmojiDependenciesRule.kt b/lib/emoji/src/test/java/org/signal/emoji/MockEmojiDependenciesRule.kt new file mode 100644 index 0000000000..6b970bf568 --- /dev/null +++ b/lib/emoji/src/test/java/org/signal/emoji/MockEmojiDependenciesRule.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2026 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +package org.signal.emoji + +import androidx.test.core.app.ApplicationProvider +import io.mockk.mockk +import org.junit.rules.ExternalResource +import org.signal.core.util.PartAuthorityUris + +/** + * Initializes [EmojiDependencies] with the Robolectric application and a relaxed provider, so that + * tests can exercise the engine without an app module behind it. + */ +class MockEmojiDependenciesRule : ExternalResource() { + override fun before() { + PartAuthorityUris.init("org.signal.emoji.test") + EmojiDependencies.init(ApplicationProvider.getApplicationContext(), mockk(relaxed = true)) + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index a20b051e07..073fdab7a9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -122,6 +122,7 @@ include(":lib:image-editor") include(":lib:debuglogs-viewer") include(":lib:blurhash") include(":lib:apng") +include(":lib:emoji") include(":lib:archive") // Feature modules