Update kotlin to 1.7.20

This commit is contained in:
Cody Henthorne
2022-12-07 15:23:48 -05:00
committed by Alex Hart
parent 66ece479f6
commit 56f6888d49
12 changed files with 215 additions and 36 deletions

View File

@@ -381,7 +381,6 @@ class MultiselectForwardFragment :
}
if (view != null && contactSet.any { it is ContactSearchKey.RecipientSearchKey && it.isStory }) {
@Suppress("NON_EXHAUSTIVE_WHEN_STATEMENT")
when (storySendRequirements) {
Stories.MediaTransform.SendRequirements.REQUIRES_CLIP -> {
displayTooltip(view, R.string.MultiselectForwardFragment__videos_will_be_trimmed)
@@ -389,6 +388,7 @@ class MultiselectForwardFragment :
Stories.MediaTransform.SendRequirements.CAN_NOT_SEND -> {
displayTooltip(view, R.string.MultiselectForwardFragment__videos_sent_to_stories_cant)
}
Stories.MediaTransform.SendRequirements.VALID_DURATION -> Unit
}
}

View File

@@ -8,7 +8,7 @@ import java.util.function.Consumer
class EmojiKeyboardPageCategoriesAdapter(private val onPageSelected: Consumer<String>) : MappingAdapter() {
init {
registerFactory(EmojiKeyboardPageCategoryMappingModel.RecentsMappingModel::class.java, LayoutFactory({ v -> KeyboardPageCategoryIconViewHolder<EmojiKeyboardPageCategoryMappingModel.RecentsMappingModel>(v, onPageSelected) }, R.layout.keyboard_pager_category_icon))
registerFactory(EmojiKeyboardPageCategoryMappingModel.EmojiCategoryMappingModel::class.java, LayoutFactory({ v -> KeyboardPageCategoryIconViewHolder<EmojiKeyboardPageCategoryMappingModel.EmojiCategoryMappingModel>(v, onPageSelected) }, R.layout.keyboard_pager_category_icon))
registerFactory(RecentsMappingModel::class.java, LayoutFactory({ v -> KeyboardPageCategoryIconViewHolder(v, onPageSelected) }, R.layout.keyboard_pager_category_icon))
registerFactory(EmojiCategoryMappingModel::class.java, LayoutFactory({ v -> KeyboardPageCategoryIconViewHolder(v, onPageSelected) }, R.layout.keyboard_pager_category_icon))
}
}

View File

@@ -2,42 +2,42 @@ package org.thoughtcrime.securesms.keyboard.emoji
import android.content.Context
import android.graphics.drawable.Drawable
import androidx.annotation.AttrRes
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.thoughtcrime.securesms.util.ThemeUtil
sealed class EmojiKeyboardPageCategoryMappingModel(
override val key: String,
@AttrRes val iconId: Int,
override val selected: Boolean
) : KeyboardPageCategoryIconMappingModel<EmojiKeyboardPageCategoryMappingModel> {
class RecentsMappingModel(override val selected: Boolean) : KeyboardPageCategoryIconMappingModel<RecentsMappingModel> {
override val key: String = RecentEmojiPageModel.KEY
override fun getIcon(context: Context): Drawable {
return requireNotNull(ThemeUtil.getThemedDrawable(context, iconId))
return requireNotNull(ThemeUtil.getThemedDrawable(context, R.attr.emoji_category_recent))
}
override fun areItemsTheSame(newItem: EmojiKeyboardPageCategoryMappingModel): Boolean {
override fun areItemsTheSame(newItem: RecentsMappingModel): Boolean {
return newItem.key == key
}
class RecentsMappingModel(selected: Boolean) : EmojiKeyboardPageCategoryMappingModel(RecentEmojiPageModel.KEY, R.attr.emoji_category_recent, selected) {
override fun areContentsTheSame(newItem: EmojiKeyboardPageCategoryMappingModel): Boolean {
return newItem is RecentsMappingModel && super.areContentsTheSame(newItem)
}
}
class EmojiCategoryMappingModel(private val emojiCategory: EmojiCategory, selected: Boolean) : EmojiKeyboardPageCategoryMappingModel(emojiCategory.key, emojiCategory.icon, selected) {
override fun areContentsTheSame(newItem: EmojiKeyboardPageCategoryMappingModel): Boolean {
return newItem is EmojiCategoryMappingModel &&
super.areContentsTheSame(newItem) &&
newItem.emojiCategory == emojiCategory
}
}
override fun areContentsTheSame(newItem: EmojiKeyboardPageCategoryMappingModel): Boolean {
override fun areContentsTheSame(newItem: RecentsMappingModel): Boolean {
return areItemsTheSame(newItem) && selected == newItem.selected
}
}
class EmojiCategoryMappingModel(private val emojiCategory: EmojiCategory, override val selected: Boolean) : KeyboardPageCategoryIconMappingModel<EmojiCategoryMappingModel> {
override val key: String = emojiCategory.key
override fun getIcon(context: Context): Drawable {
return requireNotNull(ThemeUtil.getThemedDrawable(context, emojiCategory.icon))
}
override fun areItemsTheSame(newItem: EmojiCategoryMappingModel): Boolean {
return newItem.key == key
}
override fun areContentsTheSame(newItem: EmojiCategoryMappingModel): Boolean {
return areItemsTheSame(newItem) &&
selected == newItem.selected &&
newItem.emojiCategory == emojiCategory
}
}

View File

@@ -16,6 +16,7 @@ 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
import org.thoughtcrime.securesms.keyboard.KeyboardPageCategoryIconMappingModel
import org.thoughtcrime.securesms.keyboard.KeyboardPageSelected
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.util.ThemedFragment.themedInflate
@@ -107,7 +108,7 @@ class EmojiKeyboardPageFragment : Fragment(), EmojiEventListener, EmojiPageViewG
private fun updateCategoryTab(key: String) {
emojiCategoriesRecycler.post {
val index: Int = categoriesAdapter.indexOfFirst(EmojiKeyboardPageCategoryMappingModel::class.java) { it.key == key }
val index: Int = categoriesAdapter.indexOfFirst(KeyboardPageCategoryIconMappingModel::class.java) { it.key == key }
if (index != -1) {
emojiCategoriesRecycler.smoothScrollToPosition(index)

View File

@@ -11,7 +11,6 @@ import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter.Emoj
import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.emoji.EmojiCategory
import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageCategoryMappingModel.EmojiCategoryMappingModel
import org.thoughtcrime.securesms.util.DefaultValueLiveData
import org.thoughtcrime.securesms.util.TextSecurePreferences
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList
@@ -49,7 +48,7 @@ class EmojiKeyboardPageViewModel(private val repository: EmojiKeyboardPageReposi
val list = MappingModelList()
list += models.map { m ->
if (RecentEmojiPageModel.KEY == m.key) {
EmojiKeyboardPageCategoryMappingModel.RecentsMappingModel(m.key == selectedKey)
RecentsMappingModel(m.key == selectedKey)
} else {
val category = EmojiCategory.forKey(m.key)
EmojiCategoryMappingModel(category, category.key == selectedKey)

View File

@@ -31,8 +31,8 @@ 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.database.model.MessageRecord;
import org.thoughtcrime.securesms.keyboard.KeyboardPageCategoryIconMappingModel;
import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageCategoriesAdapter;
import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageCategoryMappingModel;
import org.thoughtcrime.securesms.keyboard.emoji.KeyboardPageSearchView;
import org.thoughtcrime.securesms.reactions.edit.EditReactionsActivity;
import org.thoughtcrime.securesms.util.LifecycleDisposable;
@@ -198,7 +198,7 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends FixedRound
disposables.add(viewModel.getEmojiList().subscribe(pages -> emojiPageView.setList(pages, null)));
disposables.add(viewModel.getCategories().subscribe(categoriesAdapter::submitList));
disposables.add(viewModel.getSelectedKey().subscribe(key -> categoriesRecycler.post(() -> {
int index = categoriesAdapter.indexOfFirst(EmojiKeyboardPageCategoryMappingModel.class, m -> m.getKey().equals(key));
int index = categoriesAdapter.indexOfFirst(KeyboardPageCategoryIconMappingModel.class, m -> m.getKey().equals(key));
if (index != -1) {
categoriesRecycler.smoothScrollToPosition(index);

View File

@@ -13,7 +13,8 @@ import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel;
import org.thoughtcrime.securesms.database.model.MessageId;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.emoji.EmojiCategory;
import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageCategoryMappingModel;
import org.thoughtcrime.securesms.keyboard.emoji.EmojiCategoryMappingModel;
import org.thoughtcrime.securesms.keyboard.emoji.RecentsMappingModel;
import org.thoughtcrime.securesms.keyboard.emoji.search.EmojiSearchRepository;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.reactions.ReactionsRepository;
@@ -72,12 +73,12 @@ public final class ReactWithAnyEmojiViewModel extends ViewModel {
this.categories = Observable.combineLatest(emojiPages, this.selectedKey.distinctUntilChanged(), (pages, selectedKey) -> {
MappingModelList list = new MappingModelList();
list.add(new EmojiKeyboardPageCategoryMappingModel.RecentsMappingModel(RecentEmojiPageModel.KEY.equals(selectedKey)));
list.add(new RecentsMappingModel(RecentEmojiPageModel.KEY.equals(selectedKey)));
list.addAll(pages.stream()
.filter(p -> !RecentEmojiPageModel.KEY.equals(p.getKey()))
.map(p -> {
EmojiCategory category = EmojiCategory.forKey(p.getKey());
return new EmojiKeyboardPageCategoryMappingModel.EmojiCategoryMappingModel(category, category.getKey().equals(selectedKey));
return new EmojiCategoryMappingModel(category, category.getKey().equals(selectedKey));
})
.collect(Collectors.toList()));
return list;

View File

@@ -102,6 +102,7 @@ class StoryViewerFragment :
when (state.crossfadeSource) {
is StoryViewerState.CrossfadeSource.TextModel -> storyCrossfader.setSourceView(state.crossfadeSource.storyTextPostModel)
is StoryViewerState.CrossfadeSource.ImageUri -> storyCrossfader.setSourceView(state.crossfadeSource.imageUri, state.crossfadeSource.imageBlur)
StoryViewerState.CrossfadeSource.None -> Unit
}
if (state.crossfadeTarget is StoryViewerState.CrossfadeTarget.Record) {

View File

@@ -469,6 +469,8 @@ class StoryViewerPageFragment :
is StoryViewerDialog.GroupDirectReply -> {
onStartDirectReply(sheet.storyId, sheet.recipientId)
}
StoryViewerDialog.Delete,
StoryViewerDialog.Forward -> Unit
}
}
}

View File

@@ -112,7 +112,7 @@ public class MappingAdapter extends ListAdapter<MappingModel<?>, MappingViewHold
holder.bind(getItem(position));
}
public <T extends MappingModel<T>> int indexOfFirst(@NonNull Class<T> clazz, @NonNull Function1<T, Boolean> predicate) {
public <T> int indexOfFirst(@NonNull Class<T> clazz, @NonNull Function1<T, Boolean> predicate) {
return CollectionsKt.indexOfFirst(getCurrentList(), m -> {
//noinspection unchecked
return clazz.isAssignableFrom(m.getClass()) && predicate.invoke((T) m);