diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e8a6e3ca87..51faee0eeb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -878,13 +878,6 @@
android:exported="false"/>
-
-
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 116110f96d..c9647774f9 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
@@ -298,7 +298,7 @@ import org.thoughtcrime.securesms.safety.SafetyNumberBottomSheet
import org.thoughtcrime.securesms.sms.MessageSender
import org.thoughtcrime.securesms.stickers.StickerEventListener
import org.thoughtcrime.securesms.stickers.StickerLocator
-import org.thoughtcrime.securesms.stickers.StickerManagementActivityV2
+import org.thoughtcrime.securesms.stickers.StickerManagementActivity
import org.thoughtcrime.securesms.stickers.StickerPackInstallEvent
import org.thoughtcrime.securesms.stickers.StickerPackPreviewActivity
import org.thoughtcrime.securesms.stories.StoryViewerArgs
@@ -828,7 +828,7 @@ class ConversationFragment :
}
override fun onStickerManagementClicked() {
- startActivity(StickerManagementActivityV2.createIntent(requireContext()))
+ startActivity(StickerManagementActivity.createIntent(requireContext()))
container.hideInput()
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorStickerSelectActivity.java b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorStickerSelectActivity.java
index 48c5b5e7e9..c250415580 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorStickerSelectActivity.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorStickerSelectActivity.java
@@ -21,7 +21,7 @@ import org.thoughtcrime.securesms.keyboard.sticker.StickerSearchDialogFragment;
import org.thoughtcrime.securesms.scribbles.stickers.FeatureSticker;
import org.thoughtcrime.securesms.scribbles.stickers.ScribbleStickersFragment;
import org.thoughtcrime.securesms.stickers.StickerEventListener;
-import org.thoughtcrime.securesms.stickers.StickerManagementActivityV2;
+import org.thoughtcrime.securesms.stickers.StickerManagementActivity;
import org.thoughtcrime.securesms.util.ViewUtil;
public final class ImageEditorStickerSelectActivity extends AppCompatActivity implements StickerEventListener, MediaKeyboard.MediaKeyboardListener, StickerKeyboardPageFragment.Callback, ScribbleStickersFragment.Callback {
@@ -66,7 +66,7 @@ public final class ImageEditorStickerSelectActivity extends AppCompatActivity im
@Override
public void onStickerManagementClicked() {
- startActivity(StickerManagementActivityV2.createIntent(ImageEditorStickerSelectActivity.this));
+ startActivity(StickerManagementActivity.createIntent(ImageEditorStickerSelectActivity.this));
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.java
deleted file mode 100644
index 9f675efed4..0000000000
--- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package org.thoughtcrime.securesms.stickers;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.MenuItem;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.ViewModelProvider;
-import androidx.recyclerview.widget.ItemTouchHelper;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.bumptech.glide.Glide;
-
-import org.thoughtcrime.securesms.PassphraseRequiredActivity;
-import org.thoughtcrime.securesms.R;
-import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragment;
-import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragmentArgs;
-import org.thoughtcrime.securesms.sharing.MultiShareArgs;
-import org.thoughtcrime.securesms.util.DeviceProperties;
-import org.thoughtcrime.securesms.util.DynamicTheme;
-
-import java.util.Collections;
-
-/**
- * Allows the user to view and manage (install, uninstall, etc) their stickers.
- */
-public final class StickerManagementActivity extends PassphraseRequiredActivity implements StickerManagementAdapter.EventListener {
-
- private final DynamicTheme dynamicTheme = new DynamicTheme();
-
- private RecyclerView list;
- private StickerManagementAdapter adapter;
- private StickerManagementViewModel viewModel;
-
- public static Intent getIntent(@NonNull Context context) {
- return new Intent(context, StickerManagementActivity.class);
- }
-
- @Override
- protected void onPreCreate() {
- super.onPreCreate();
- dynamicTheme.onCreate(this);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState, boolean ready) {
- setContentView(R.layout.sticker_management_activity);
-
- initView();
- initToolbar();
- initViewModel();
-
- getSupportFragmentManager().setFragmentResultListener(MultiselectForwardFragment.RESULT_KEY, this, (requestKey, result) -> {
- if (result.getBoolean(MultiselectForwardFragment.RESULT_SENT, false)) {
- finish();
- }
- });
- }
-
- @Override
- protected void onStart() {
- super.onStart();
- viewModel.onVisible();
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- dynamicTheme.onResume(this);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == android.R.id.home) {
- onBackPressed();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
- @Override
- public void onStickerPackClicked(@NonNull String packId, @NonNull String packKey) {
- startActivity(StickerPackPreviewActivity.getIntent(packId, packKey));
- }
-
- @Override
- public void onStickerPackUninstallClicked(@NonNull String packId, @NonNull String packKey) {
- viewModel.onStickerPackUninstallClicked(packId, packKey);
- }
-
- @Override
- public void onStickerPackInstallClicked(@NonNull String packId, @NonNull String packKey) {
- viewModel.onStickerPackInstallClicked(packId, packKey);
- }
-
- @Override
- public void onStickerPackShareClicked(@NonNull String packId, @NonNull String packKey) {
- MultiselectForwardFragment.showBottomSheet(
- getSupportFragmentManager(),
- new MultiselectForwardFragmentArgs(
- Collections.singletonList(new MultiShareArgs.Builder()
- .withDraftText(StickerUrl.createShareLink(packId, packKey))
- .build()),
- R.string.MultiselectForwardFragment__share_with
- )
- );
- }
-
- private void initView() {
- this.list = findViewById(R.id.sticker_management_list);
- this.adapter = new StickerManagementAdapter(Glide.with(this), this, DeviceProperties.shouldAllowApngStickerAnimation(this));
-
- list.setLayoutManager(new LinearLayoutManager(this));
- list.setAdapter(adapter);
- new ItemTouchHelper(new StickerManagementItemTouchHelper(new ItemTouchCallback())).attachToRecyclerView(list);
- }
-
- private void initToolbar() {
- getSupportActionBar().setTitle(R.string.StickerManagementActivity_stickers);
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- }
-
- private void initViewModel() {
- StickerManagementRepository repository = StickerManagementRepository.INSTANCE;
- viewModel = new ViewModelProvider(this, new StickerManagementViewModel.Factory(getApplication(), repository)).get(StickerManagementViewModel.class);
-
- viewModel.init();
- viewModel.getStickerPacks().observe(this, packResult -> {
- if (packResult == null) return;
-
- adapter.setPackLists(packResult.getInstalledPacks(), packResult.getAvailablePacks(), packResult.getBlessedPacks());
- });
- }
-
- private class ItemTouchCallback implements StickerManagementItemTouchHelper.Callback {
- @Override
- public boolean onMove(int start, int end) {
- return adapter.onMove(start, end);
- }
-
- @Override
- public boolean isMovable(int position) {
- return adapter.isMovable(position);
- }
-
- @Override
- public void onMoveCommitted() {
- viewModel.onOrderChanged(adapter.getInstalledPacksInOrder());
- }
- }
-}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.kt
similarity index 99%
rename from app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivityV2.kt
rename to app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.kt
index 0fccec7f81..53c821ea7d 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivityV2.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.kt
@@ -98,13 +98,13 @@ import java.text.NumberFormat
/**
* Displays all of the available and installed sticker packs, enabling installation, uninstallation, and sorting.
*/
-class StickerManagementActivityV2 : PassphraseRequiredActivity() {
+class StickerManagementActivity : PassphraseRequiredActivity() {
companion object {
@JvmStatic
- fun createIntent(context: Context): Intent = Intent(context, StickerManagementActivityV2::class.java)
+ fun createIntent(context: Context): Intent = Intent(context, StickerManagementActivity::class.java)
}
- private val viewModel by viewModel { StickerManagementViewModelV2() }
+ private val viewModel by viewModel { StickerManagementViewModel() }
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
super.onCreate(savedInstanceState, ready)
@@ -311,7 +311,7 @@ private fun TopAppBar(
onSetMultiSelectModeEnabled: (Boolean) -> Unit
) {
Scaffolds.DefaultTopAppBar(
- title = stringResource(R.string.StickerManagementActivity_stickers),
+ title = stringResource(R.string.StickerManagement_title_stickers),
titleContent = { _, title -> Text(text = title, style = MaterialTheme.typography.titleLarge) },
navigationIconPainter = painterResource(R.drawable.symbol_arrow_start_24),
navigationContentDescription = stringResource(R.string.DefaultTopAppBar__navigate_up_content_description),
diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementAdapter.java
deleted file mode 100644
index 9be3242b0f..0000000000
--- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementAdapter.java
+++ /dev/null
@@ -1,357 +0,0 @@
-package org.thoughtcrime.securesms.stickers;
-
-import android.content.Context;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.Drawable;
-import android.text.SpannableString;
-import android.text.SpannableStringBuilder;
-import android.text.style.ImageSpan;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.StringRes;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.bumptech.glide.RequestManager;
-import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
-
-import org.thoughtcrime.securesms.R;
-import org.thoughtcrime.securesms.components.emoji.EmojiTextView;
-import org.thoughtcrime.securesms.database.model.StickerPackRecord;
-import org.thoughtcrime.securesms.glide.cache.ApngOptions;
-import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
-import org.thoughtcrime.securesms.util.DrawableUtil;
-import org.thoughtcrime.securesms.util.ViewUtil;
-import org.thoughtcrime.securesms.util.adapter.SectionedRecyclerViewAdapter;
-import org.thoughtcrime.securesms.util.adapter.StableIdGenerator;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-final class StickerManagementAdapter extends SectionedRecyclerViewAdapter {
-
- private static final String TAG_YOUR_STICKERS = "YourStickers";
- private static final String TAG_MESSAGE_STICKERS = "MessageStickers";
- private static final String TAG_BLESSED_STICKERS = "BlessedStickers";
-
- private final RequestManager requestManager;
- private final EventListener eventListener;
- private final boolean allowApngAnimation;
-
- private final List sections = new ArrayList(3) {{
- StickerSection yourStickers = new StickerSection(TAG_YOUR_STICKERS,
- R.string.StickerManagement_installed_stickers_header,
- R.string.StickerManagementAdapter_no_stickers_installed,
- new ArrayList<>(),
- 0);
- StickerSection messageStickers = new StickerSection(TAG_MESSAGE_STICKERS,
- R.string.StickerManagement_stickers_you_received_header,
- R.string.StickerManagementAdapter_stickers_from_incoming_messages_will_appear_here,
- new ArrayList<>(),
- yourStickers.size());
-
- add(yourStickers);
- add(messageStickers);
- }};
-
- StickerManagementAdapter(@NonNull RequestManager requestManager, @NonNull EventListener eventListener, boolean allowApngAnimation) {
- this.requestManager = requestManager;
- this.eventListener = eventListener;
- this.allowApngAnimation = allowApngAnimation;
- }
-
- @Override
- protected @NonNull List getSections() {
- return sections;
- }
-
- @Override
- protected @NonNull RecyclerView.ViewHolder createHeaderViewHolder(@NonNull ViewGroup parent) {
- return new HeaderViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.sticker_management_header_item, parent, false));
- }
-
- @Override
- protected @NonNull RecyclerView.ViewHolder createContentViewHolder(@NonNull ViewGroup parent) {
- return new StickerViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.sticker_management_sticker_item, parent, false));
- }
-
- @Override
- protected @NonNull RecyclerView.ViewHolder createEmptyViewHolder(@NonNull ViewGroup viewGroup) {
- return new EmptyViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.sticker_management_empty_item, viewGroup, false));
- }
-
- @Override
- public void bindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, @NonNull StickerSection section, int localPosition) {
- section.bindViewHolder(viewHolder, localPosition, requestManager, eventListener, allowApngAnimation);
- }
-
- @Override
- public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
- if (holder instanceof StickerViewHolder) {
- ((StickerViewHolder) holder).recycle();
- }
- }
-
- boolean onMove(int start, int end) {
- StickerSection installed = sections.get(0);
-
- if (!installed.isContent(start)) {
- return false;
- }
-
- if (!installed.isContent(end)) {
- return false;
- }
-
- installed.swap(start, end);
- notifyItemMoved(start, end);
- return true;
- }
-
- boolean isMovable(int position) {
- return sections.get(0).isContent(position);
- }
-
- @NonNull List getInstalledPacksInOrder() {
- return sections.get(0).records;
- }
-
- void setPackLists(@NonNull List installedPacks,
- @NonNull List availablePacks,
- @NonNull List blessedPacks)
- {
- StickerSection yourStickers = new StickerSection(TAG_YOUR_STICKERS,
- R.string.StickerManagement_installed_stickers_header,
- R.string.StickerManagementAdapter_no_stickers_installed,
- installedPacks,
- 0);
- StickerSection blessedStickers = new StickerSection(TAG_BLESSED_STICKERS,
- R.string.StickerManagement_signal_artist_series_header,
- 0,
- blessedPacks,
- yourStickers.size());
- StickerSection messageStickers = new StickerSection(TAG_MESSAGE_STICKERS,
- R.string.StickerManagement_stickers_you_received_header,
- R.string.StickerManagementAdapter_stickers_from_incoming_messages_will_appear_here,
- availablePacks,
- yourStickers.size() + (blessedPacks.isEmpty() ? 0 : blessedStickers.size()));
-
- sections.clear();
- sections.add(yourStickers);
-
- if (!blessedPacks.isEmpty()) {
- sections.add(blessedStickers);
- }
-
- sections.add(messageStickers);
-
- notifyDataSetChanged();
- }
-
- public static class StickerSection extends SectionedRecyclerViewAdapter.Section {
-
- private static final String STABLE_ID_HEADER = "header";
- private static final String STABLE_ID_TEXT = "text";
-
- private final String tag;
- private final int titleResId;
- private final int emptyResId;
- private final List records;
-
- StickerSection(@NonNull String tag,
- @StringRes int titleResId,
- @StringRes int emptyResId,
- @NonNull List records,
- int offset)
- {
- super(offset);
-
- this.tag = tag;
- this.titleResId = titleResId;
- this.emptyResId = emptyResId;
- this.records = records;
- }
-
- @Override
- public boolean hasEmptyState() {
- return true;
- }
-
- @Override
- public int getContentSize() {
- return records.size();
- }
-
- @Override
- public long getItemId(@NonNull StableIdGenerator idGenerator, int globalPosition) {
- int localPosition = getLocalPosition(globalPosition);
-
- if (localPosition == 0) {
- return idGenerator.getId(tag + "_" + STABLE_ID_HEADER);
- } else if (records.isEmpty()) {
- return idGenerator.getId(tag + "_" + STABLE_ID_TEXT);
- } else {
- return idGenerator.getId(records.get(localPosition - 1).packId);
- }
- }
-
- void bindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder,
- int localPosition,
- @NonNull RequestManager requestManager,
- @NonNull EventListener eventListener,
- boolean allowApngAnimation)
- {
- if (localPosition == 0) {
- ((HeaderViewHolder) viewHolder).bind(titleResId);
- } else if (records.isEmpty()) {
- ((EmptyViewHolder) viewHolder).bind(emptyResId);
- } else {
- ((StickerViewHolder) viewHolder).bind(requestManager, eventListener, records.get(localPosition - 1), localPosition == records.size(), allowApngAnimation);
- }
- }
-
- void swap(int start, int end) {
- int localStart = getLocalPosition(start) - 1;
- int localEnd = getLocalPosition(end) - 1;
-
- if (localStart < localEnd) {
- for (int i = localStart; i < localEnd; i++) {
- Collections.swap(records, i, i + 1);
- }
- } else {
- for (int i = localStart; i > localEnd; i--) {
- Collections.swap(records, i, i - 1);
- }
- }
- }
- }
-
- static class StickerViewHolder extends RecyclerView.ViewHolder {
-
- private final ImageView cover;
- private final EmojiTextView title;
- private final TextView author;
- private final View divider;
- private final View actionButton;
- private final ImageView actionButtonImage;
- private final View shareButton;
- private final ImageView shareButtonImage;
- private final CharSequence blessedBadge;
-
- StickerViewHolder(@NonNull View itemView) {
- super(itemView);
-
- this.cover = itemView.findViewById(R.id.sticker_management_cover);
- this.title = itemView.findViewById(R.id.sticker_management_title);
- this.author = itemView.findViewById(R.id.sticker_management_author);
- this.divider = itemView.findViewById(R.id.sticker_management_divider);
- this.actionButton = itemView.findViewById(R.id.sticker_management_action_button);
- this.actionButtonImage = itemView.findViewById(R.id.sticker_management_action_button_image);
- this.shareButton = itemView.findViewById(R.id.sticker_management_share_button);
- this.shareButtonImage = itemView.findViewById(R.id.sticker_management_share_button_image);
- this.blessedBadge = buildBlessedBadge(itemView.getContext());
- }
-
- void bind(@NonNull RequestManager requestManager,
- @NonNull EventListener eventListener,
- @NonNull StickerPackRecord stickerPack,
- boolean lastInList,
- boolean allowApngAnimation)
- {
- SpannableStringBuilder titleBuilder = new SpannableStringBuilder(stickerPack.titleOptional.orElse(itemView.getResources().getString(R.string.StickerManagementAdapter_untitled)));
- if (BlessedPacks.contains(stickerPack.packId)) {
- titleBuilder.append(blessedBadge);
- }
-
- title.setText(titleBuilder);
- author.setText(stickerPack.authorOptional.orElse(itemView.getResources().getString(R.string.StickerManagement_author_unknown)));
- divider.setVisibility(lastInList ? View.GONE : View.VISIBLE);
-
- requestManager.load(new DecryptableUri(stickerPack.cover.uri))
- .transition(DrawableTransitionOptions.withCrossFade())
- .fitCenter()
- .set(ApngOptions.ANIMATE, allowApngAnimation)
- .into(cover);
-
- if (stickerPack.isInstalled) {
- actionButtonImage.setImageResource(R.drawable.ic_x);
- actionButton.setOnClickListener(v -> eventListener.onStickerPackUninstallClicked(stickerPack.packId, stickerPack.packKey));
-
- shareButton.setVisibility(View.VISIBLE);
- shareButtonImage.setVisibility(View.VISIBLE);
- shareButton.setOnClickListener(v -> eventListener.onStickerPackShareClicked(stickerPack.packId, stickerPack.packKey));
- } else {
- actionButtonImage.setImageResource(R.drawable.symbol_arrow_down_24);
- actionButton.setOnClickListener(v -> eventListener.onStickerPackInstallClicked(stickerPack.packId, stickerPack.packKey));
-
- shareButton.setVisibility(View.GONE);
- shareButtonImage.setVisibility(View.GONE);
- shareButton.setOnClickListener(null);
- }
-
- itemView.setOnClickListener(v -> eventListener.onStickerPackClicked(stickerPack.packId, stickerPack.packKey));
- }
-
- void recycle() {
- actionButton.setOnClickListener(null);
- shareButton.setOnClickListener(null);
- itemView.setOnClickListener(null);
- }
-
- private static @NonNull CharSequence buildBlessedBadge(@NonNull Context context) {
- SpannableString badgeSpan = new SpannableString(" ");
- Drawable badge = ContextCompat.getDrawable(context, R.drawable.symbol_check_circle_fill_24);
-
- badge.setBounds(0, 0, ViewUtil.dpToPx(18), ViewUtil.dpToPx(18));
- DrawableUtil.tint(badge, ContextCompat.getColor(context, R.color.core_ultramarine));
- badgeSpan.setSpan(new ImageSpan(badge), 1, badgeSpan.length(), 0);
-
- return badgeSpan;
- }
- }
-
- static class HeaderViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView titleView;
-
- HeaderViewHolder(@NonNull View itemView) {
- super(itemView);
-
- this.titleView = itemView.findViewById(R.id.sticker_management_header);
- }
-
- void bind(@StringRes int title) {
- titleView.setText(title);
- }
- }
-
- static class EmptyViewHolder extends RecyclerView.ViewHolder {
-
- private final TextView text;
-
- EmptyViewHolder(@NonNull View itemView) {
- super(itemView);
-
- this.text = itemView.findViewById(R.id.sticker_management_empty_text);
- }
-
- void bind(@StringRes int title) {
- text.setText(title);
- }
- }
-
- interface EventListener {
- void onStickerPackClicked(@NonNull String packId, @NonNull String packKey);
- void onStickerPackUninstallClicked(@NonNull String packId, @NonNull String packKey);
- void onStickerPackInstallClicked(@NonNull String packId, @NonNull String packKey);
- void onStickerPackShareClicked(@NonNull String packId, @NonNull String packKey);
- }
-
- private static class NoSectionException extends IllegalStateException {}
-}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementItemTouchHelper.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementItemTouchHelper.java
deleted file mode 100644
index 186402d6ef..0000000000
--- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementItemTouchHelper.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.thoughtcrime.securesms.stickers;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.ItemTouchHelper;
-import androidx.recyclerview.widget.RecyclerView;
-
-public class StickerManagementItemTouchHelper extends ItemTouchHelper.Callback {
-
- private final Callback callback;
-
- public StickerManagementItemTouchHelper(Callback callback) {
- this.callback = callback;
- }
-
- @Override
- public boolean isLongPressDragEnabled() {
- return true;
- }
-
- @Override
- public boolean isItemViewSwipeEnabled() {
- return false;
- }
-
- @Override
- public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
- if (callback.isMovable(viewHolder.getAdapterPosition())) {
- int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
- return makeMovementFlags(dragFlags, 0);
- } else {
- return 0;
- }
- }
-
- @Override
- public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
- return callback.onMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());
- }
-
- @Override
- public void clearView(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
- super.clearView(recyclerView, viewHolder);
- callback.onMoveCommitted();
- }
-
- @Override
- public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
- }
-
- public interface Callback {
- /**
- * @return True if both the start and end positions are valid, and therefore the move will occur.
- */
- boolean onMove(int start, int end);
- void onMoveCommitted();
- boolean isMovable(int position);
- }
-}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementRepository.kt
index f59237efa4..8bae4cb676 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementRepository.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementRepository.kt
@@ -6,7 +6,6 @@
package org.thoughtcrime.securesms.stickers
import androidx.annotation.Discouraged
-import androidx.annotation.WorkerThread
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.channels.awaitClose
@@ -39,14 +38,6 @@ object StickerManagementRepository {
private val attachmentsDbTable: AttachmentTable = SignalDatabase.attachments
private val coroutineScope: CoroutineScope = CoroutineScope(Dispatchers.IO)
- @Discouraged("For Java use only. In Kotlin, use the getStickerPacks() overload that returns a Flow instead.")
- @WorkerThread
- fun getStickerPacks(callback: Callback) {
- coroutineScope.launch {
- callback.onComplete(loadStickerPacks())
- }
- }
-
/**
* Emits the sticker packs along with any updates.
*/
@@ -91,13 +82,6 @@ object StickerManagementRepository {
}
}
- @Discouraged("For Java use only. In Kotlin, use deleteOrphanedStickerPacks() instead.")
- fun deleteOrphanedStickerPacksAsync() {
- coroutineScope.launch {
- deleteOrphanedStickerPacks()
- }
- }
-
suspend fun deleteOrphanedStickerPacks() = withContext(Dispatchers.IO) {
stickersDbTable.deleteOrphanedPacks()
}
@@ -112,6 +96,7 @@ object StickerManagementRepository {
}
}
+ @Discouraged("For Java use only. In Kotlin, use installStickerPack() instead.")
fun installStickerPackAsync(packId: String, packKey: String, notify: Boolean) {
coroutineScope.launch {
installStickerPack(StickerPackId(packId), StickerPackKey(packKey), notify)
@@ -145,13 +130,6 @@ object StickerManagementRepository {
}
}
- @Discouraged("For Java use only. In Kotlin, use setStickerPackOrder() instead.")
- fun setStickerPacksOrderAsync(packsInOrder: List) {
- coroutineScope.launch {
- setStickerPacksOrder(packsInOrder)
- }
- }
-
suspend fun setStickerPacksOrder(packsInOrder: List) = withContext(Dispatchers.IO) {
stickersDbTable.updatePackOrder(packsInOrder)
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementViewModel.java
deleted file mode 100644
index 71b1dbe891..0000000000
--- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementViewModel.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package org.thoughtcrime.securesms.stickers;
-
-import android.app.Application;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.LiveData;
-import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
-import androidx.lifecycle.ViewModelProvider;
-
-import org.thoughtcrime.securesms.database.DatabaseObserver;
-import org.thoughtcrime.securesms.database.model.StickerPackRecord;
-import org.thoughtcrime.securesms.dependencies.AppDependencies;
-
-import java.util.List;
-
-final class StickerManagementViewModel extends ViewModel {
-
- private final Application application;
- private final StickerManagementRepository repository;
- private final MutableLiveData packs;
- private final DatabaseObserver.Observer observer;
-
- private StickerManagementViewModel(@NonNull Application application, @NonNull StickerManagementRepository repository) {
- this.application = application;
- this.repository = repository;
- this.packs = new MutableLiveData<>();
- this.observer = () -> {
- repository.deleteOrphanedStickerPacksAsync();
- repository.getStickerPacks(packs::postValue);
- };
-
- AppDependencies.getDatabaseObserver().registerStickerPackObserver(observer);
- }
-
- void init() {
- repository.deleteOrphanedStickerPacksAsync();
- repository.fetchUnretrievedReferencePacks();
- }
-
- void onVisible() {
- repository.deleteOrphanedStickerPacksAsync();
- }
-
- @NonNull LiveData getStickerPacks() {
- repository.getStickerPacks(packs::postValue);
- return packs;
- }
-
- void onStickerPackUninstallClicked(@NonNull String packId, @NonNull String packKey) {
- repository.uninstallStickerPackAsync(packId, packKey);
- }
-
- void onStickerPackInstallClicked(@NonNull String packId, @NonNull String packKey) {
- repository.installStickerPackAsync(packId, packKey, false);
- }
-
- void onOrderChanged(List packsInOrder) {
- repository.setStickerPacksOrderAsync(packsInOrder);
- }
-
- @Override
- protected void onCleared() {
- AppDependencies.getDatabaseObserver().unregisterObserver(observer);
- }
-
- static class Factory extends ViewModelProvider.NewInstanceFactory {
-
- private final Application application;
- private final StickerManagementRepository repository;
-
- Factory(@NonNull Application application, @NonNull StickerManagementRepository repository) {
- this.application = application;
- this.repository = repository;
- }
-
- @Override
- public @NonNull T create(@NonNull Class modelClass) {
- //noinspection ConstantConditions
- return modelClass.cast(new StickerManagementViewModel(application, repository));
- }
- }
-}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementViewModelV2.kt b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementViewModel.kt
similarity index 99%
rename from app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementViewModelV2.kt
rename to app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementViewModel.kt
index 17b5c28dfb..f0c8cb3c36 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementViewModelV2.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementViewModel.kt
@@ -21,7 +21,7 @@ import org.thoughtcrime.securesms.database.model.StickerPackKey
import org.thoughtcrime.securesms.database.model.StickerPackRecord
import org.thoughtcrime.securesms.stickers.AvailableStickerPack.DownloadStatus
-class StickerManagementViewModelV2 : ViewModel() {
+class StickerManagementViewModel : ViewModel() {
private val stickerManagementRepo = StickerManagementRepository
private val _uiState = MutableStateFlow(StickerManagementUiState())
diff --git a/app/src/main/res/drawable/sticker_management_empty_background.xml b/app/src/main/res/drawable/sticker_management_empty_background.xml
deleted file mode 100644
index 63855710d8..0000000000
--- a/app/src/main/res/drawable/sticker_management_empty_background.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/symbol_check_circle_fill_24.xml b/app/src/main/res/drawable/symbol_check_circle_fill_24.xml
deleted file mode 100644
index 424b509e30..0000000000
--- a/app/src/main/res/drawable/symbol_check_circle_fill_24.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/layout/sticker_management_activity.xml b/app/src/main/res/layout/sticker_management_activity.xml
deleted file mode 100644
index cb86910410..0000000000
--- a/app/src/main/res/layout/sticker_management_activity.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/sticker_management_empty_item.xml b/app/src/main/res/layout/sticker_management_empty_item.xml
deleted file mode 100644
index 23258536b4..0000000000
--- a/app/src/main/res/layout/sticker_management_empty_item.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/sticker_management_header_item.xml b/app/src/main/res/layout/sticker_management_header_item.xml
deleted file mode 100644
index f320ffc273..0000000000
--- a/app/src/main/res/layout/sticker_management_header_item.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
diff --git a/app/src/main/res/layout/sticker_management_sticker_item.xml b/app/src/main/res/layout/sticker_management_sticker_item.xml
deleted file mode 100644
index d2bcb3167c..0000000000
--- a/app/src/main/res/layout/sticker_management_sticker_item.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index c454c6e43a..bf8b255101 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -107,8 +107,6 @@
16dp
72dp
- 16dp
-
96dp
16dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c687862a18..b219b64a8c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -2798,10 +2798,9 @@
%s reset the secure session.
Duplicate message.
-
- Stickers
-
-
+
+ Stickers
+
- %1$s selected
- %1$s selected
@@ -2810,11 +2809,11 @@
Available
Installed
-
+
No sticker packs are available
-
+
No sticker packs are installed
-
+
Unknown
Installed stickers
@@ -2845,7 +2844,6 @@
- %1$s sticker packs removed.
-
Forward
@@ -2873,8 +2871,6 @@
Exit selection mode and clear selections
- No stickers installed
- Stickers from incoming messages will appear here
Untitled