Fix a bunch of random lint warnings.
This commit is contained in:
parent
ce4b7c2d7f
commit
6922886395
75 changed files with 293 additions and 213 deletions
|
@ -177,22 +177,23 @@ public class NewConversationActivity extends ContactSelectionActivity
|
|||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
super.onOptionsItemSelected(item);
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
super.onBackPressed();
|
||||
return true;
|
||||
case R.id.menu_refresh:
|
||||
handleManualRefresh();
|
||||
return true;
|
||||
case R.id.menu_new_group:
|
||||
handleCreateGroup();
|
||||
return true;
|
||||
case R.id.menu_invite:
|
||||
handleInvite();
|
||||
return true;
|
||||
}
|
||||
int itemId = item.getItemId();
|
||||
|
||||
return false;
|
||||
if (itemId == android.R.id.home) {
|
||||
super.onBackPressed();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_refresh) {
|
||||
handleManualRefresh();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_new_group) {
|
||||
handleCreateGroup();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_invite) {
|
||||
handleInvite();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void handleManualRefresh() {
|
||||
|
|
|
@ -13,7 +13,6 @@ import android.widget.ImageView;
|
|||
|
||||
import androidx.core.graphics.drawable.RoundedBitmapDrawable;
|
||||
|
||||
@TargetApi(21)
|
||||
abstract class CircleSquareImageViewTransition extends Transition {
|
||||
|
||||
private static final String CIRCLE_RATIO = "CIRCLE_RATIO";
|
||||
|
|
|
@ -7,7 +7,6 @@ import android.util.AttributeSet;
|
|||
/**
|
||||
* Will only transition {@link android.widget.ImageView}s that contain a {@link androidx.core.graphics.drawable.RoundedBitmapDrawable}.
|
||||
*/
|
||||
@TargetApi(21)
|
||||
public final class CircleToSquareImageViewTransition extends CircleSquareImageViewTransition {
|
||||
public CircleToSquareImageViewTransition(Context context, AttributeSet attrs) {
|
||||
super(false);
|
||||
|
|
|
@ -7,7 +7,6 @@ import android.util.AttributeSet;
|
|||
/**
|
||||
* Will only transition {@link android.widget.ImageView}s that contain a {@link androidx.core.graphics.drawable.RoundedBitmapDrawable}.
|
||||
*/
|
||||
@TargetApi(21)
|
||||
public final class SquareToCircleImageViewTransition extends CircleSquareImageViewTransition {
|
||||
public SquareToCircleImageViewTransition(Context context, AttributeSet attrs) {
|
||||
super(true);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package org.thoughtcrime.securesms.avatar
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
|
||||
/**
|
||||
* Utility class which encapsulates reading and writing Avatar objects to and from Bundles.
|
||||
|
@ -33,7 +35,7 @@ object AvatarBundler {
|
|||
}
|
||||
|
||||
fun extractPhoto(bundle: Bundle): Avatar.Photo = Avatar.Photo(
|
||||
uri = requireNotNull(bundle.getParcelable(URI)),
|
||||
uri = requireNotNull(bundle.getParcelableCompat(URI, Uri::class.java)),
|
||||
size = bundle.getLong(SIZE),
|
||||
databaseId = bundle.getDatabaseId()
|
||||
)
|
||||
|
|
|
@ -16,6 +16,7 @@ import androidx.fragment.app.viewModels
|
|||
import androidx.navigation.Navigation
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import org.signal.core.util.ThreadUtil
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.avatar.Avatar
|
||||
import org.thoughtcrime.securesms.avatar.AvatarBundler
|
||||
|
@ -147,10 +148,9 @@ class AvatarPickerFragment : Fragment(R.layout.avatar_picker_fragment) {
|
|||
ViewUtil.hideKeyboard(requireContext(), requireView())
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (requestCode == REQUEST_CODE_SELECT_IMAGE && resultCode == Activity.RESULT_OK && data != null) {
|
||||
val media: Media = requireNotNull(data.getParcelableExtra(AvatarSelectionActivity.EXTRA_MEDIA))
|
||||
val media: Media = requireNotNull(data.getParcelableExtraCompat(AvatarSelectionActivity.EXTRA_MEDIA, Media::class.java))
|
||||
viewModel.onAvatarPhotoSelectionCompleted(media)
|
||||
} else {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
|
|
|
@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.badges.gifts
|
|||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.badges.gifts.ExpiredGiftSheetConfiguration.forExpiredBadge
|
||||
import org.thoughtcrime.securesms.badges.models.Badge
|
||||
import org.thoughtcrime.securesms.components.settings.DSLSettingsAdapter
|
||||
|
@ -28,7 +29,7 @@ class ExpiredGiftSheet : DSLSettingsBottomSheetFragment() {
|
|||
}
|
||||
|
||||
private val badge: Badge
|
||||
get() = requireArguments().getParcelable(ARG_BADGE)!!
|
||||
get() = requireArguments().getParcelableCompat(ARG_BADGE, Badge::class.java)!!
|
||||
|
||||
override fun bindAdapter(adapter: DSLSettingsAdapter) {
|
||||
ExpiredGiftSheetConfiguration.register(adapter)
|
||||
|
|
|
@ -9,6 +9,7 @@ import androidx.fragment.app.Fragment
|
|||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import org.signal.core.util.getParcelableArrayListCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
|
||||
|
@ -79,7 +80,7 @@ class GiftFlowRecipientSelectionFragment : Fragment(R.layout.gift_flow_recipient
|
|||
override fun onSearchInputFocused() = Unit
|
||||
|
||||
override fun setResult(bundle: Bundle) {
|
||||
val contacts: List<ContactSearchKey.RecipientSearchKey> = bundle.getParcelableArrayList(MultiselectForwardFragment.RESULT_SELECTION)!!
|
||||
val contacts: List<ContactSearchKey.RecipientSearchKey> = bundle.getParcelableArrayListCompat(MultiselectForwardFragment.RESULT_SELECTION, ContactSearchKey.RecipientSearchKey::class.java)!!
|
||||
|
||||
if (contacts.isNotEmpty()) {
|
||||
viewModel.setSelectedContact(contacts.first())
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.os.Bundle
|
|||
import androidx.fragment.app.FragmentManager
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.badges.models.Badge
|
||||
import org.thoughtcrime.securesms.badges.models.BadgePreview
|
||||
|
@ -41,10 +42,10 @@ class GiftThanksSheet : DSLSettingsBottomSheetFragment() {
|
|||
private val lifecycleDisposable = LifecycleDisposable()
|
||||
|
||||
private val recipientId: RecipientId
|
||||
get() = requireArguments().getParcelable(ARGS_RECIPIENT_ID)!!
|
||||
get() = requireArguments().getParcelableCompat(ARGS_RECIPIENT_ID, RecipientId::class.java)!!
|
||||
|
||||
private val badge: Badge
|
||||
get() = requireArguments().getParcelable(ARGS_BADGE)!!
|
||||
get() = requireArguments().getParcelableCompat(ARGS_BADGE, Badge::class.java)!!
|
||||
|
||||
override fun bindAdapter(adapter: DSLSettingsAdapter) {
|
||||
BadgePreview.register(adapter)
|
||||
|
|
|
@ -11,6 +11,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.kotlin.subscribeBy
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.signal.libsignal.zkgroup.InvalidInputException
|
||||
import org.signal.libsignal.zkgroup.receipts.ReceiptCredentialPresentation
|
||||
|
@ -73,7 +74,7 @@ class ViewReceivedGiftBottomSheet : DSLSettingsBottomSheetFragment() {
|
|||
private val lifecycleDisposable = LifecycleDisposable()
|
||||
|
||||
private val sentFrom: RecipientId
|
||||
get() = requireArguments().getParcelable(ARG_SENT_FROM)!!
|
||||
get() = requireArguments().getParcelableCompat(ARG_SENT_FROM, RecipientId::class.java)!!
|
||||
|
||||
private val messageId: Long
|
||||
get() = requireArguments().getLong(ARG_MESSAGE_ID)
|
||||
|
|
|
@ -5,6 +5,7 @@ import androidx.fragment.app.FragmentManager
|
|||
import androidx.fragment.app.viewModels
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.badges.gifts.viewgift.ViewGiftRepository
|
||||
import org.thoughtcrime.securesms.badges.models.BadgeDisplay112
|
||||
|
@ -41,7 +42,7 @@ class ViewSentGiftBottomSheet : DSLSettingsBottomSheetFragment() {
|
|||
}
|
||||
|
||||
private val sentTo: RecipientId
|
||||
get() = requireArguments().getParcelable(ARG_SENT_TO)!!
|
||||
get() = requireArguments().getParcelableCompat(ARG_SENT_TO, RecipientId::class.java)!!
|
||||
|
||||
private val giftBadge: GiftBadge
|
||||
get() = GiftBadge.parseFrom(requireArguments().getByteArray(ARG_GIFT_BADGE))
|
||||
|
|
|
@ -11,6 +11,7 @@ import androidx.fragment.app.FragmentManager
|
|||
import androidx.fragment.app.viewModels
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.badges.BadgeRepository
|
||||
import org.thoughtcrime.securesms.badges.models.Badge
|
||||
|
@ -122,9 +123,9 @@ class ViewBadgeBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDialogFr
|
|||
}
|
||||
}
|
||||
|
||||
private fun getStartBadge(): Badge? = requireArguments().getParcelable(ARG_START_BADGE)
|
||||
private fun getStartBadge(): Badge? = requireArguments().getParcelableCompat(ARG_START_BADGE, Badge::class.java)
|
||||
|
||||
private fun getRecipientId(): RecipientId = requireNotNull(requireArguments().getParcelable(ARG_RECIPIENT_ID))
|
||||
private fun getRecipientId(): RecipientId = requireNotNull(requireArguments().getParcelableCompat(ARG_RECIPIENT_ID, RecipientId::class.java))
|
||||
|
||||
companion object {
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@ public class AlertView extends LinearLayout {
|
|||
initialize(attrs);
|
||||
}
|
||||
|
||||
@TargetApi(VERSION_CODES.HONEYCOMB)
|
||||
public AlertView(final Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
initialize(attrs);
|
||||
|
|
|
@ -12,6 +12,7 @@ import androidx.annotation.Px
|
|||
import androidx.annotation.UiThread
|
||||
import androidx.core.os.bundleOf
|
||||
import org.signal.core.util.dp
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||
import org.thoughtcrime.securesms.mms.Slide
|
||||
|
@ -95,8 +96,8 @@ class ConversationItemThumbnail @JvmOverloads constructor(
|
|||
|
||||
override fun onRestoreInstanceState(state: Parcelable) {
|
||||
if (state is Bundle && state.containsKey(STATE_STATE)) {
|
||||
val root = state.getParcelable<Parcelable>(STATE_ROOT)
|
||||
this.state = state.getParcelable(STATE_STATE)!!
|
||||
val root: Parcelable? = state.getParcelableCompat(STATE_ROOT, Parcelable::class.java)
|
||||
this.state = state.getParcelableCompat(STATE_STATE, ConversationItemThumbnailState::class.java)!!
|
||||
super.onRestoreInstanceState(root)
|
||||
} else {
|
||||
super.onRestoreInstanceState(state)
|
||||
|
|
|
@ -22,7 +22,6 @@ public class HidingLinearLayout extends LinearLayout {
|
|||
super(context, attrs);
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
public HidingLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ public class InsetAwareConstraintLayout extends ConstraintLayout {
|
|||
}
|
||||
|
||||
@Override
|
||||
@TargetApi(20)
|
||||
public WindowInsets onApplyWindowInsets(WindowInsets insets) {
|
||||
if (Build.VERSION.SDK_INT < 30) {
|
||||
return super.onApplyWindowInsets(insets);
|
||||
|
|
|
@ -133,14 +133,12 @@ public class RecentPhotoViewRail extends FrameLayout implements LoaderManager.Lo
|
|||
|
||||
}
|
||||
|
||||
@TargetApi(16)
|
||||
@SuppressWarnings("SuspiciousNameCombination")
|
||||
private String getWidthColumn(int orientation) {
|
||||
if (orientation == 0 || orientation == 180) return MediaStore.Images.ImageColumns.WIDTH;
|
||||
else return MediaStore.Images.ImageColumns.HEIGHT;
|
||||
}
|
||||
|
||||
@TargetApi(16)
|
||||
@SuppressWarnings("SuspiciousNameCombination")
|
||||
private String getHeightColumn(int orientation) {
|
||||
if (orientation == 0 || orientation == 180) return MediaStore.Images.ImageColumns.HEIGHT;
|
||||
|
|
|
@ -23,7 +23,7 @@ public class SquareFrameLayout extends FrameLayout {
|
|||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
@TargetApi(VERSION_CODES.HONEYCOMB) @SuppressWarnings("unused")
|
||||
@SuppressWarnings("unused")
|
||||
public SquareFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
package org.thoughtcrime.securesms.components;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import androidx.preference.CheckBoxPreference;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
|
||||
public class SwitchPreferenceCompat extends CheckBoxPreference {
|
||||
|
||||
private Preference.OnPreferenceClickListener listener;
|
||||
|
||||
public SwitchPreferenceCompat(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
setLayoutRes();
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
public SwitchPreferenceCompat(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
setLayoutRes();
|
||||
}
|
||||
|
||||
public SwitchPreferenceCompat(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
setLayoutRes();
|
||||
}
|
||||
|
||||
public SwitchPreferenceCompat(Context context) {
|
||||
super(context);
|
||||
setLayoutRes();
|
||||
}
|
||||
|
||||
private void setLayoutRes() {
|
||||
setWidgetLayoutResource(R.layout.switch_compat_preference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOnPreferenceClickListener(Preference.OnPreferenceClickListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onClick() {
|
||||
if (listener == null || !listener.onPreferenceClick(this)) {
|
||||
super.onClick();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -36,7 +36,6 @@ public class SignalMapView extends LinearLayout {
|
|||
initialize(context);
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
public SignalMapView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
initialize(context);
|
||||
|
|
|
@ -439,7 +439,7 @@ class InternalSettingsFragment : DSLSettingsFragment(R.string.preferences__inter
|
|||
SignalStore.donationsValues().subscriptionEndOfPeriodRedemptionStarted = 0L
|
||||
SignalStore.donationsValues().subscriptionEndOfPeriodConversionStarted = 0L
|
||||
SignalStore.donationsValues().setLastEndOfPeriod(0L)
|
||||
Toast.makeText(context, "Cleared", Toast.LENGTH_SHORT)
|
||||
Toast.makeText(context, "Cleared", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import androidx.core.content.ContextCompat
|
|||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.preference.PreferenceManager
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.settings.DSLConfiguration
|
||||
|
@ -62,10 +63,10 @@ class NotificationsSettingsFragment : DSLSettingsFragment(R.string.preferences__
|
|||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (requestCode == MESSAGE_SOUND_SELECT && resultCode == Activity.RESULT_OK && data != null) {
|
||||
val uri = data.getParcelableExtra<Uri>(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
|
||||
val uri: Uri? = data.getParcelableExtraCompat(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, Uri::class.java)
|
||||
viewModel.setMessageNotificationsSound(uri)
|
||||
} else if (requestCode == CALL_RINGTONE_SELECT && resultCode == Activity.RESULT_OK && data != null) {
|
||||
val uri = data.getParcelableExtra<Uri>(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
|
||||
val uri: Uri? = data.getParcelableExtraCompat(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, Uri::class.java)
|
||||
viewModel.setCallRingtone(uri)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import com.google.android.material.snackbar.Snackbar
|
|||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.disposables.Disposable
|
||||
import io.reactivex.rxjava3.kotlin.subscribeBy
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.signal.core.util.money.FiatMoney
|
||||
import org.signal.donations.GooglePayApi
|
||||
|
@ -73,22 +74,22 @@ class DonationCheckoutDelegate(
|
|||
registerGooglePayCallback()
|
||||
|
||||
fragment.setFragmentResultListener(GatewaySelectorBottomSheet.REQUEST_KEY) { _, bundle ->
|
||||
val response: GatewayResponse = bundle.getParcelable(GatewaySelectorBottomSheet.REQUEST_KEY)!!
|
||||
val response: GatewayResponse = bundle.getParcelableCompat(GatewaySelectorBottomSheet.REQUEST_KEY, GatewayResponse::class.java)!!
|
||||
handleGatewaySelectionResponse(response)
|
||||
}
|
||||
|
||||
fragment.setFragmentResultListener(StripePaymentInProgressFragment.REQUEST_KEY) { _, bundle ->
|
||||
val result: DonationProcessorActionResult = bundle.getParcelable(StripePaymentInProgressFragment.REQUEST_KEY)!!
|
||||
val result: DonationProcessorActionResult = bundle.getParcelableCompat(StripePaymentInProgressFragment.REQUEST_KEY, DonationProcessorActionResult::class.java)!!
|
||||
handleDonationProcessorActionResult(result)
|
||||
}
|
||||
|
||||
fragment.setFragmentResultListener(CreditCardFragment.REQUEST_KEY) { _, bundle ->
|
||||
val result: DonationProcessorActionResult = bundle.getParcelable(StripePaymentInProgressFragment.REQUEST_KEY)!!
|
||||
val result: DonationProcessorActionResult = bundle.getParcelableCompat(StripePaymentInProgressFragment.REQUEST_KEY, DonationProcessorActionResult::class.java)!!
|
||||
handleDonationProcessorActionResult(result)
|
||||
}
|
||||
|
||||
fragment.setFragmentResultListener(PayPalPaymentInProgressFragment.REQUEST_KEY) { _, bundle ->
|
||||
val result: DonationProcessorActionResult = bundle.getParcelable(PayPalPaymentInProgressFragment.REQUEST_KEY)!!
|
||||
val result: DonationProcessorActionResult = bundle.getParcelableCompat(PayPalPaymentInProgressFragment.REQUEST_KEY, DonationProcessorActionResult::class.java)!!
|
||||
handleDonationProcessorActionResult(result)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import androidx.fragment.app.viewModels
|
|||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import androidx.navigation.navGraphViewModels
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.ViewBinderDelegate
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.DonationPaymentComponent
|
||||
|
@ -56,7 +57,7 @@ class CreditCardFragment : Fragment(R.layout.credit_card_fragment) {
|
|||
DonationCheckoutDelegate.ErrorHandler().attach(this, null, errorSource)
|
||||
|
||||
setFragmentResultListener(StripePaymentInProgressFragment.REQUEST_KEY) { _, bundle ->
|
||||
val result: DonationProcessorActionResult = bundle.getParcelable(StripePaymentInProgressFragment.REQUEST_KEY)!!
|
||||
val result: DonationProcessorActionResult = bundle.getParcelableCompat(StripePaymentInProgressFragment.REQUEST_KEY, DonationProcessorActionResult::class.java)!!
|
||||
if (result.status == DonationProcessorActionResult.Status.SUCCESS) {
|
||||
findNavController().popBackStack()
|
||||
setFragmentResult(REQUEST_KEY, bundle)
|
||||
|
|
|
@ -17,6 +17,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
|||
import io.reactivex.rxjava3.core.Single
|
||||
import io.reactivex.rxjava3.kotlin.subscribeBy
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.ViewBinderDelegate
|
||||
|
@ -122,7 +123,7 @@ class PayPalPaymentInProgressFragment : DialogFragment(R.layout.donation_in_prog
|
|||
private fun routeToOneTimeConfirmation(createPaymentIntentResponse: PayPalCreatePaymentIntentResponse): Single<PayPalConfirmationResult> {
|
||||
return Single.create<PayPalConfirmationResult> { emitter ->
|
||||
val listener = FragmentResultListener { _, bundle ->
|
||||
val result: PayPalConfirmationResult? = bundle.getParcelable(PayPalConfirmationDialogFragment.REQUEST_KEY)
|
||||
val result: PayPalConfirmationResult? = bundle.getParcelableCompat(PayPalConfirmationDialogFragment.REQUEST_KEY, PayPalConfirmationResult::class.java)
|
||||
if (result != null) {
|
||||
emitter.onSuccess(result)
|
||||
} else {
|
||||
|
|
|
@ -16,6 +16,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
|||
import io.reactivex.rxjava3.core.Single
|
||||
import io.reactivex.rxjava3.kotlin.subscribeBy
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.signal.donations.StripeApi
|
||||
import org.signal.donations.StripeIntentAccessor
|
||||
|
@ -125,7 +126,7 @@ class StripePaymentInProgressFragment : DialogFragment(R.layout.donation_in_prog
|
|||
Log.d(TAG, "3DS action required. Displaying dialog...")
|
||||
Single.create<StripeIntentAccessor> { emitter ->
|
||||
val listener = FragmentResultListener { _, bundle ->
|
||||
val result: StripeIntentAccessor? = bundle.getParcelable(Stripe3DSDialogFragment.REQUEST_KEY)
|
||||
val result: StripeIntentAccessor? = bundle.getParcelableCompat(Stripe3DSDialogFragment.REQUEST_KEY, StripeIntentAccessor::class.java)
|
||||
if (result != null) {
|
||||
emitter.onSuccess(result)
|
||||
} else {
|
||||
|
|
|
@ -26,6 +26,7 @@ import com.google.android.flexbox.FlexboxLayoutManager
|
|||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.core.util.getParcelableArrayListExtraCompat
|
||||
import org.thoughtcrime.securesms.AvatarPreviewActivity
|
||||
import org.thoughtcrime.securesms.BlockUnblockDialog
|
||||
import org.thoughtcrime.securesms.InviteActivity
|
||||
|
@ -172,7 +173,7 @@ class ConversationSettingsFragment : DSLSettingsFragment(
|
|||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
when (requestCode) {
|
||||
REQUEST_CODE_ADD_MEMBERS_TO_GROUP -> if (data != null) {
|
||||
val selected: List<RecipientId> = requireNotNull(data.getParcelableArrayListExtra(PushContactSelectionActivity.KEY_SELECTED_RECIPIENTS))
|
||||
val selected: List<RecipientId> = requireNotNull(data.getParcelableArrayListExtraCompat(PushContactSelectionActivity.KEY_SELECTED_RECIPIENTS, RecipientId::class.java))
|
||||
val progress: SimpleProgressDialog.DismissibleDialog = SimpleProgressDialog.showDelayed(requireContext())
|
||||
|
||||
viewModel.onAddToGroupComplete(selected) {
|
||||
|
|
|
@ -11,6 +11,7 @@ import androidx.activity.result.ActivityResult
|
|||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.fragment.app.viewModels
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.settings.DSLConfiguration
|
||||
|
@ -67,7 +68,7 @@ class CustomNotificationsSettingsFragment : DSLSettingsFragment(R.string.CustomN
|
|||
val data = result.data
|
||||
|
||||
if (resultCode == Activity.RESULT_OK && data != null) {
|
||||
val uri: Uri? = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
|
||||
val uri: Uri? = data.getParcelableExtraCompat(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, Uri::class.java)
|
||||
resultHandler(uri)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1313,7 +1313,6 @@ public class ConversationParentFragment extends Fragment
|
|||
});
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
private void handleMakeDefaultSms() {
|
||||
startActivityForResult(SmsUtil.getSmsRoleIntent(requireContext()), SMS_DEFAULT);
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@ import androidx.appcompat.widget.Toolbar
|
|||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import org.signal.core.util.getParcelableArrayListExtraCompat
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.FragmentWrapperActivity
|
||||
|
@ -22,7 +24,7 @@ open class MultiselectForwardActivity : FragmentWrapperActivity(), MultiselectFo
|
|||
private const val ARGS = "args"
|
||||
}
|
||||
|
||||
private val args: MultiselectForwardFragmentArgs get() = intent.getParcelableExtra(ARGS)!!
|
||||
private val args: MultiselectForwardFragmentArgs get() = intent.getParcelableExtraCompat(ARGS, MultiselectForwardFragmentArgs::class.java)!!
|
||||
|
||||
override val contentViewId: Int = R.layout.multiselect_forward_activity
|
||||
|
||||
|
@ -73,7 +75,7 @@ open class MultiselectForwardActivity : FragmentWrapperActivity(), MultiselectFo
|
|||
} else if (intent == null || !intent.hasExtra(RESULT_SELECTION)) {
|
||||
throw IllegalStateException("Selection contract requires a selection.")
|
||||
} else {
|
||||
val selection: List<ContactSearchKey.RecipientSearchKey> = intent.getParcelableArrayListExtra(RESULT_SELECTION)!!
|
||||
val selection: List<ContactSearchKey.RecipientSearchKey> = intent.getParcelableArrayListExtraCompat(RESULT_SELECTION, ContactSearchKey.RecipientSearchKey::class.java)!!
|
||||
selection
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,8 @@ import androidx.fragment.app.setFragmentResultListener
|
|||
import androidx.fragment.app.viewModels
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import org.signal.core.util.getParcelableArrayListCompat
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.color.ViewColorSet
|
||||
|
@ -103,7 +105,7 @@ class MultiselectForwardFragment :
|
|||
}
|
||||
|
||||
private val args: MultiselectForwardFragmentArgs by lazy {
|
||||
requireArguments().getParcelable(ARGS)!!
|
||||
requireArguments().getParcelableCompat(ARGS, MultiselectForwardFragmentArgs::class.java)!!
|
||||
}
|
||||
|
||||
override fun onGetLayoutInflater(savedInstanceState: Bundle?): LayoutInflater {
|
||||
|
@ -251,13 +253,13 @@ class MultiselectForwardFragment :
|
|||
}
|
||||
|
||||
setFragmentResultListener(CreateStoryWithViewersFragment.REQUEST_KEY) { _, bundle ->
|
||||
val recipientId: RecipientId = bundle.getParcelable(CreateStoryWithViewersFragment.STORY_RECIPIENT)!!
|
||||
val recipientId: RecipientId = bundle.getParcelableCompat(CreateStoryWithViewersFragment.STORY_RECIPIENT, RecipientId::class.java)!!
|
||||
contactSearchMediator.setKeysSelected(setOf(ContactSearchKey.RecipientSearchKey(recipientId, true)))
|
||||
contactFilterView.clear()
|
||||
}
|
||||
|
||||
setFragmentResultListener(ChooseGroupStoryBottomSheet.GROUP_STORY) { _, bundle ->
|
||||
val groups: Set<RecipientId> = bundle.getParcelableArrayList<RecipientId>(ChooseGroupStoryBottomSheet.RESULT_SET)?.toSet() ?: emptySet()
|
||||
val groups: Set<RecipientId> = bundle.getParcelableArrayListCompat(ChooseGroupStoryBottomSheet.RESULT_SET, RecipientId::class.java)?.toSet() ?: emptySet()
|
||||
val keys: Set<ContactSearchKey.RecipientSearchKey> = groups.map { ContactSearchKey.RecipientSearchKey(it, true) }.toSet()
|
||||
contactSearchMediator.addToVisibleGroupStories(keys)
|
||||
contactSearchMediator.setKeysSelected(keys)
|
||||
|
|
|
@ -575,28 +575,38 @@ public class ConversationListFragment extends MainFragment implements ActionMode
|
|||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
super.onOptionsItemSelected(item);
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_new_group:
|
||||
handleCreateGroup(); return true;
|
||||
case R.id.menu_settings:
|
||||
handleDisplaySettings(); return true;
|
||||
case R.id.menu_clear_passphrase:
|
||||
handleClearPassphrase(); return true;
|
||||
case R.id.menu_mark_all_read:
|
||||
handleMarkAllRead(); return true;
|
||||
case R.id.menu_invite:
|
||||
handleInvite(); return true;
|
||||
case R.id.menu_insights:
|
||||
handleInsights(); return true;
|
||||
case R.id.menu_notification_profile:
|
||||
handleNotificationProfile(); return true;
|
||||
case R.id.menu_filter_unread_chats:
|
||||
handleFilterUnreadChats(); return true;
|
||||
case R.id.menu_clear_unread_filter:
|
||||
onClearFilterClick(); return true;
|
||||
}
|
||||
int itemId = item.getItemId();
|
||||
|
||||
return false;
|
||||
if (itemId == R.id.menu_new_group) {
|
||||
handleCreateGroup();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_settings) {
|
||||
handleDisplaySettings();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_clear_passphrase) {
|
||||
handleClearPassphrase();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_mark_all_read) {
|
||||
handleMarkAllRead();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_invite) {
|
||||
handleInvite();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_insights) {
|
||||
handleInsights();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_notification_profile) {
|
||||
handleNotificationProfile();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_filter_unread_chats) {
|
||||
handleFilterUnreadChats();
|
||||
return true;
|
||||
} else if (itemId == R.id.menu_clear_unread_filter) {
|
||||
onClearFilterClick();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -14,6 +14,7 @@ import androidx.core.content.ContextCompat
|
|||
import androidx.core.os.bundleOf
|
||||
import androidx.core.view.doOnNextLayout
|
||||
import com.google.android.material.animation.ArgbEvaluatorCompat
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.animation.AnimationCompleteListener
|
||||
import org.thoughtcrime.securesms.databinding.ConversationListFilterPullViewBinding
|
||||
|
@ -89,7 +90,7 @@ class ConversationListFilterPullView @JvmOverloads constructor(
|
|||
|
||||
override fun onRestoreInstanceState(state: Parcelable?) {
|
||||
val bundle = state as Bundle
|
||||
val root: Parcelable? = bundle.getParcelable(INSTANCE_STATE_ROOT)
|
||||
val root: Parcelable? = bundle.getParcelableCompat(INSTANCE_STATE_ROOT, Parcelable::class.java)
|
||||
super.onRestoreInstanceState(root)
|
||||
|
||||
val restoredState: FilterPullState = FilterPullState.valueOf(bundle.getString(INSTANCE_STATE_STATE)!!)
|
||||
|
|
|
@ -34,7 +34,6 @@ import org.signal.core.util.withinTransaction
|
|||
import org.signal.libsignal.zkgroup.groups.GroupMasterKey
|
||||
import org.signal.storageservice.protos.groups.Member
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroup
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedRequestingMember
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchSortOrder
|
||||
import org.thoughtcrime.securesms.contacts.paged.collections.ContactSearchIterator
|
||||
import org.thoughtcrime.securesms.crypto.SenderKeyUtil
|
||||
|
@ -670,7 +669,7 @@ class GroupTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseT
|
|||
* There was a point in time where we weren't properly responding to group creates on linked devices. This would result in us having a Recipient entry for the
|
||||
* group, but we'd either be missing the group entry, or that entry would be missing a master key. This method fixes this scenario.
|
||||
*/
|
||||
fun fixMissingMasterKey(authServiceId: ServiceId?, groupMasterKey: GroupMasterKey) {
|
||||
fun fixMissingMasterKey(groupMasterKey: GroupMasterKey) {
|
||||
val groupId = GroupId.v2(groupMasterKey)
|
||||
if (getGroupV1ByExpectedV2(groupId).isPresent) {
|
||||
Log.w(TAG, "There already exists a V1 group that should be migrated into this group. But if the recipient already exists, there's not much we can do here.")
|
||||
|
@ -1206,7 +1205,7 @@ class GroupTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseT
|
|||
|
||||
if (memberLevel.isAbsent()) {
|
||||
memberLevel = DecryptedGroupUtil.findRequestingByUuid(decryptedGroup.requestingMembersList, serviceId.get().uuid())
|
||||
.map { m: DecryptedRequestingMember? -> MemberLevel.REQUESTING_MEMBER }
|
||||
.map { _ -> MemberLevel.REQUESTING_MEMBER }
|
||||
}
|
||||
|
||||
return if (memberLevel.isPresent) {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.thoughtcrime.securesms.keyvalue
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.preference.PreferenceManager
|
||||
|
@ -358,6 +359,8 @@ internal class AccountValues internal constructor(store: KeyValueStore) : Signal
|
|||
}
|
||||
|
||||
/** Do not alter. If you need to migrate more stuff, create a new method. */
|
||||
@SuppressLint("ApplySharedPref")
|
||||
@Suppress("DEPRECATION")
|
||||
private fun migrateFromSharedPrefsV2(context: Context) {
|
||||
Log.i(TAG, "[V2] Migrating account values from shared prefs.")
|
||||
|
||||
|
|
|
@ -87,16 +87,15 @@ public final class KbsSplashFragment extends Fragment {
|
|||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_pin_learn_more:
|
||||
onLearnMore();
|
||||
return true;
|
||||
case R.id.menu_pin_skip:
|
||||
onPinSkipped();
|
||||
return true;
|
||||
if (item.getItemId() == R.id.menu_pin_learn_more) {
|
||||
onLearnMore();
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_pin_skip) {
|
||||
onPinSkipped();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void setUpRegLockEnabled() {
|
||||
|
|
|
@ -7,6 +7,7 @@ import android.os.Bundle
|
|||
import android.os.Parcelable
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import org.signal.core.util.dp
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.attachments.DatabaseAttachment
|
||||
import org.thoughtcrime.securesms.database.MediaTable
|
||||
import org.thoughtcrime.securesms.database.MediaTable.MediaRecord
|
||||
|
@ -45,7 +46,7 @@ object MediaIntentFactory {
|
|||
) : Parcelable
|
||||
|
||||
@JvmStatic
|
||||
fun requireArguments(bundle: Bundle): MediaPreviewArgs = bundle.getParcelable(ARGS_KEY)!!
|
||||
fun requireArguments(bundle: Bundle): MediaPreviewArgs = bundle.getParcelableCompat(ARGS_KEY, MediaPreviewArgs::class.java)!!
|
||||
|
||||
@JvmStatic
|
||||
fun create(context: Context, args: MediaPreviewArgs): Intent {
|
||||
|
|
|
@ -308,14 +308,12 @@ public class MediaRepository {
|
|||
return media.size() > 0 ? Optional.of(media.get(0)) : Optional.empty();
|
||||
}
|
||||
|
||||
@TargetApi(16)
|
||||
@SuppressWarnings("SuspiciousNameCombination")
|
||||
private String getWidthColumn(int orientation) {
|
||||
if (orientation == 0 || orientation == 180) return Images.Media.WIDTH;
|
||||
else return Images.Media.HEIGHT;
|
||||
}
|
||||
|
||||
@TargetApi(16)
|
||||
@SuppressWarnings("SuspiciousNameCombination")
|
||||
private String getHeightColumn(int orientation) {
|
||||
if (orientation == 0 || orientation == 180) return Images.Media.HEIGHT;
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.os.Parcelable
|
|||
import kotlinx.parcelize.Parceler
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import kotlinx.parcelize.TypeParceler
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.thoughtcrime.securesms.conversation.MessageSendType
|
||||
import org.thoughtcrime.securesms.database.model.Mention
|
||||
import org.thoughtcrime.securesms.database.model.StoryType
|
||||
|
@ -43,7 +44,7 @@ class MediaSendActivityResult(
|
|||
|
||||
@JvmStatic
|
||||
fun fromData(data: Intent): MediaSendActivityResult {
|
||||
return data.getParcelableExtra(EXTRA_RESULT) ?: throw IllegalArgumentException()
|
||||
return data.getParcelableExtraCompat(EXTRA_RESULT, MediaSendActivityResult::class.java) ?: throw IllegalArgumentException()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,8 @@ import androidx.transition.AutoTransition
|
|||
import androidx.transition.TransitionManager
|
||||
import com.google.android.material.animation.ArgbEvaluatorCompat
|
||||
import org.signal.core.util.BreakIteratorCompat
|
||||
import org.signal.core.util.getParcelableArrayListExtraCompat
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.PassphraseRequiredActivity
|
||||
import org.thoughtcrime.securesms.R
|
||||
|
@ -89,8 +91,8 @@ class MediaSelectionActivity :
|
|||
WindowUtil.setNavigationBarColor(this, 0x01000000)
|
||||
WindowUtil.setStatusBarColor(window, Color.TRANSPARENT)
|
||||
|
||||
val sendType: MessageSendType = requireNotNull(intent.getParcelableExtra(MESSAGE_SEND_TYPE))
|
||||
val initialMedia: List<Media> = intent.getParcelableArrayListExtra(MEDIA) ?: listOf()
|
||||
val sendType: MessageSendType = requireNotNull(intent.getParcelableExtraCompat(MESSAGE_SEND_TYPE, MessageSendType::class.java))
|
||||
val initialMedia: List<Media> = intent.getParcelableArrayListExtraCompat(MEDIA, Media::class.java) ?: listOf()
|
||||
val message: CharSequence? = if (shareToTextStory) null else draftText
|
||||
val isReply: Boolean = intent.getBooleanExtra(IS_REPLY, false)
|
||||
val isAddToGroupStoryFlow: Boolean = intent.getBooleanExtra(IS_ADD_TO_GROUP_STORY_FLOW, false)
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package org.thoughtcrime.securesms.mediasend.v2
|
||||
|
||||
import android.os.Bundle
|
||||
import org.signal.core.util.getParcelableArrayListCompat
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
|
||||
|
@ -89,9 +91,9 @@ sealed class MediaSelectionDestination {
|
|||
return when {
|
||||
bundle.containsKey(WALLPAPER) -> Wallpaper
|
||||
bundle.containsKey(AVATAR) -> Avatar
|
||||
bundle.containsKey(RECIPIENT) -> SingleRecipient(requireNotNull(bundle.getParcelable(RECIPIENT)))
|
||||
bundle.containsKey(STORY) -> SingleStory(requireNotNull(bundle.getParcelable(STORY)))
|
||||
bundle.containsKey(RECIPIENT_LIST) -> MultipleRecipients.fromParcel(requireNotNull(bundle.getParcelableArrayList(RECIPIENT_LIST)))
|
||||
bundle.containsKey(RECIPIENT) -> SingleRecipient(requireNotNull(bundle.getParcelableCompat(RECIPIENT, RecipientId::class.java)))
|
||||
bundle.containsKey(STORY) -> SingleStory(requireNotNull(bundle.getParcelableCompat(STORY, RecipientId::class.java)))
|
||||
bundle.containsKey(RECIPIENT_LIST) -> MultipleRecipients.fromParcel(requireNotNull(bundle.getParcelableArrayListCompat(RECIPIENT_LIST, ContactSearchKey.RecipientSearchKey::class.java)))
|
||||
else -> ChooseAfterMediaSelection
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,8 @@ import io.reactivex.rxjava3.subjects.BehaviorSubject
|
|||
import io.reactivex.rxjava3.subjects.PublishSubject
|
||||
import io.reactivex.rxjava3.subjects.Subject
|
||||
import org.signal.core.util.BreakIteratorCompat
|
||||
import org.signal.core.util.getParcelableArrayListCompat
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.components.mention.MentionAnnotation
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
|
||||
import org.thoughtcrime.securesms.conversation.MessageSendType
|
||||
|
@ -408,16 +410,16 @@ class MediaSelectionViewModel(
|
|||
}
|
||||
|
||||
fun onRestoreState(savedInstanceState: Bundle) {
|
||||
val selection: List<Media> = savedInstanceState.getParcelableArrayList(STATE_SELECTION) ?: emptyList()
|
||||
val focused: Media? = savedInstanceState.getParcelable(STATE_FOCUSED)
|
||||
val selection: List<Media> = savedInstanceState.getParcelableArrayListCompat(STATE_SELECTION, Media::class.java) ?: emptyList()
|
||||
val focused: Media? = savedInstanceState.getParcelableCompat(STATE_FOCUSED, Media::class.java)
|
||||
val quality: SentMediaQuality = SentMediaQuality.fromCode(savedInstanceState.getInt(STATE_QUALITY))
|
||||
val message: CharSequence? = savedInstanceState.getCharSequence(STATE_MESSAGE)
|
||||
val viewOnce: MediaSelectionState.ViewOnceToggleState = MediaSelectionState.ViewOnceToggleState.fromCode(savedInstanceState.getInt(STATE_VIEW_ONCE))
|
||||
val touchEnabled: Boolean = savedInstanceState.getBoolean(STATE_TOUCH_ENABLED)
|
||||
val sent: Boolean = savedInstanceState.getBoolean(STATE_SENT)
|
||||
val cameraFirstCapture: Media? = savedInstanceState.getParcelable(STATE_CAMERA_FIRST_CAPTURE)
|
||||
val cameraFirstCapture: Media? = savedInstanceState.getParcelableCompat(STATE_CAMERA_FIRST_CAPTURE, Media::class.java)
|
||||
|
||||
val editorStates: List<Bundle> = savedInstanceState.getParcelableArrayList(STATE_EDITORS) ?: emptyList()
|
||||
val editorStates: List<Bundle> = savedInstanceState.getParcelableArrayListCompat(STATE_EDITORS, Bundle::class.java) ?: emptyList()
|
||||
val editorStateMap = editorStates.associate { it.toAssociation() }
|
||||
|
||||
selectedMediaSubject.onNext(selection)
|
||||
|
@ -438,7 +440,7 @@ class MediaSelectionViewModel(
|
|||
}
|
||||
|
||||
private fun Bundle.toAssociation(): Pair<Uri, Any> {
|
||||
val key: Uri = requireNotNull(getParcelable(BUNDLE_URI))
|
||||
val key: Uri = requireNotNull(getParcelableCompat(BUNDLE_URI, Uri::class.java))
|
||||
|
||||
val value: Any = if (getBoolean(BUNDLE_IS_IMAGE)) {
|
||||
ImageEditorFragment.Data(this)
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.mediasend.MediaSendGifFragment
|
||||
import org.thoughtcrime.securesms.mediasend.v2.HudCommand
|
||||
|
@ -49,7 +50,7 @@ class MediaReviewGifPageFragment : Fragment(R.layout.fragment_container) {
|
|||
}
|
||||
}
|
||||
|
||||
private fun requireUri(): Uri = requireNotNull(requireArguments().getParcelable(ARG_URI))
|
||||
private fun requireUri(): Uri = requireNotNull(requireArguments().getParcelableCompat(ARG_URI, Uri::class.java))
|
||||
|
||||
companion object {
|
||||
private const val ARG_URI = "arg.uri"
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.view.View
|
|||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import io.reactivex.rxjava3.disposables.Disposable
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.mediasend.v2.HudCommand
|
||||
import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionViewModel
|
||||
|
@ -97,7 +98,7 @@ class MediaReviewImagePageFragment : Fragment(R.layout.fragment_container), Imag
|
|||
}
|
||||
}
|
||||
|
||||
private fun requireUri(): Uri = requireNotNull(requireArguments().getParcelable(ARG_URI))
|
||||
private fun requireUri(): Uri = requireNotNull(requireArguments().getParcelableCompat(ARG_URI, Uri::class.java))
|
||||
|
||||
override fun onTouchEventsNeeded(needed: Boolean) {
|
||||
if (isResumed) {
|
||||
|
|
|
@ -13,6 +13,7 @@ import androidx.core.widget.doAfterTextChanged
|
|||
import androidx.fragment.app.setFragmentResult
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.core.util.getParcelableArrayListCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchAdapter
|
||||
|
@ -159,7 +160,7 @@ class ChooseGroupStoryBottomSheet : FixedRoundedCornerBottomSheetDialogFragment(
|
|||
|
||||
object ResultContract {
|
||||
fun getRecipientIds(bundle: Bundle): List<RecipientId> {
|
||||
return bundle.getParcelableArrayList(RESULT_SET)!!
|
||||
return bundle.getParcelableArrayListCompat(RESULT_SET, RecipientId::class.java)!!
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import androidx.activity.result.contract.ActivityResultContract
|
|||
import androidx.fragment.app.FragmentManager
|
||||
import com.bumptech.glide.Glide
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import org.signal.core.util.getParcelableArrayListExtraCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchConfiguration
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
|
||||
|
@ -34,7 +35,7 @@ class StoriesMultiselectForwardActivity : MultiselectForwardActivity() {
|
|||
|
||||
val preview1View: ImageView = findViewById(R.id.preview_media_1)
|
||||
val preview2View: ImageView = findViewById(R.id.preview_media_2)
|
||||
val previewMedia: List<Uri> = intent.getParcelableArrayListExtra(PREVIEW_MEDIA)!!
|
||||
val previewMedia: List<Uri> = intent.getParcelableArrayListExtraCompat(PREVIEW_MEDIA, Uri::class.java)!!
|
||||
|
||||
preview1View.visible = previewMedia.isNotEmpty()
|
||||
preview2View.visible = previewMedia.size > 1
|
||||
|
|
|
@ -15,6 +15,7 @@ import io.reactivex.rxjava3.disposables.CompositeDisposable
|
|||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
import io.reactivex.rxjava3.subjects.BehaviorSubject
|
||||
import io.reactivex.rxjava3.subjects.Subject
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||
|
@ -67,7 +68,7 @@ class TextStoryPostCreationViewModel(private val repository: TextStoryPostSendRe
|
|||
|
||||
fun restoreFromInstanceState(inState: Bundle) {
|
||||
if (inState.containsKey(TEXT_STORY_INSTANCE_STATE)) {
|
||||
val state: TextStoryPostCreationState = inState.getParcelable(TEXT_STORY_INSTANCE_STATE)!!
|
||||
val state: TextStoryPostCreationState = inState.getParcelableCompat(TEXT_STORY_INSTANCE_STATE, TextStoryPostCreationState::class.java)!!
|
||||
textFontSubject.onNext(store.state.textFont)
|
||||
store.update { state }
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.os.Bundle
|
|||
import android.view.View
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.mediasend.VideoEditorFragment
|
||||
import org.thoughtcrime.securesms.mediasend.v2.HudCommand
|
||||
|
@ -99,7 +100,7 @@ class MediaReviewVideoPageFragment : Fragment(R.layout.fragment_container), Vide
|
|||
}
|
||||
}
|
||||
|
||||
private fun requireUri(): Uri = requireNotNull(requireArguments().getParcelable(ARG_URI))
|
||||
private fun requireUri(): Uri = requireNotNull(requireArguments().getParcelableCompat(ARG_URI, Uri::class.java))
|
||||
private fun requireMaxCompressedVideoSize(): Long = sharedViewModel.getMediaConstraints().getCompressedVideoMaxSize(requireContext()).toLong()
|
||||
private fun requireMaxAttachmentSize(): Long = sharedViewModel.getMediaConstraints().getVideoMaxSize(requireContext()).toLong()
|
||||
private fun requireIsVideoGif(): Boolean = requireNotNull(requireArguments().getBoolean(ARG_IS_VIDEO_GIF))
|
||||
|
|
|
@ -825,7 +825,7 @@ public final class MessageContentProcessor {
|
|||
warn(content.getTimestamp(), "Group message missing destination uuid, defaulting to ACI");
|
||||
authServiceId = SignalStore.account().requireAci();
|
||||
}
|
||||
SignalDatabase.groups().fixMissingMasterKey(authServiceId, group.getMasterKey());
|
||||
SignalDatabase.groups().fixMissingMasterKey(group.getMasterKey());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -55,17 +55,15 @@ public class IncomingLollipopMmsConnection extends LollipopMmsConnection impleme
|
|||
super(context, ACTION);
|
||||
}
|
||||
|
||||
@TargetApi(VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
public synchronized void onResult(Context context, Intent intent) {
|
||||
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP_MR1) {
|
||||
if (VERSION.SDK_INT >= 22) {
|
||||
Log.i(TAG, "HTTP status: " + intent.getIntExtra(SmsManager.EXTRA_MMS_HTTP_STATUS, -1));
|
||||
}
|
||||
Log.i(TAG, "code: " + getResultCode() + ", result string: " + getResultData());
|
||||
}
|
||||
|
||||
@Override
|
||||
@TargetApi(VERSION_CODES.LOLLIPOP)
|
||||
public synchronized @Nullable RetrieveConf retrieve(@NonNull String contentLocation,
|
||||
byte[] transactionId,
|
||||
int subscriptionId) throws MmsException
|
||||
|
|
|
@ -50,10 +50,10 @@ public class OutgoingLollipopMmsConnection extends LollipopMmsConnection impleme
|
|||
super(context, ACTION);
|
||||
}
|
||||
|
||||
@TargetApi(VERSION_CODES.LOLLIPOP_MR1)
|
||||
@TargetApi(22)
|
||||
@Override
|
||||
public synchronized void onResult(Context context, Intent intent) {
|
||||
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP_MR1) {
|
||||
if (VERSION.SDK_INT >= 22) {
|
||||
Log.i(TAG, "HTTP status: " + intent.getIntExtra(SmsManager.EXTRA_MMS_HTTP_STATUS, -1));
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,6 @@ public class OutgoingLollipopMmsConnection extends LollipopMmsConnection impleme
|
|||
}
|
||||
|
||||
@Override
|
||||
@TargetApi(VERSION_CODES.LOLLIPOP)
|
||||
public @Nullable synchronized SendConf send(@NonNull byte[] pduBytes, int subscriptionId)
|
||||
throws UndeliverableMessageException
|
||||
{
|
||||
|
|
|
@ -204,7 +204,6 @@ public class Camera implements CameraControl, CameraVideoCapturer.CameraSwitchHa
|
|||
cameraEventListener.onCameraSwitchCompleted(new CameraState(getActiveDirection(), getCount()));
|
||||
}
|
||||
|
||||
@TargetApi(21)
|
||||
private static class FilteredCamera2Enumerator extends Camera2Enumerator {
|
||||
|
||||
private static final String TAG = Log.tag(Camera2Enumerator.class);
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.safety
|
|||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
|
||||
import org.thoughtcrime.securesms.conversation.ui.error.SafetyNumberChangeDialog
|
||||
import org.thoughtcrime.securesms.database.model.IdentityRecord
|
||||
|
@ -126,7 +127,7 @@ object SafetyNumberBottomSheet {
|
|||
* @throws IllegalArgumentException if the bundle does not contain the correct parcelized arguments.
|
||||
*/
|
||||
fun getArgsFromBundle(bundle: Bundle): SafetyNumberBottomSheetArgs {
|
||||
val args = bundle.getParcelable<SafetyNumberBottomSheetArgs>(ARGS)
|
||||
val args: SafetyNumberBottomSheetArgs? = bundle.getParcelableCompat(ARGS, SafetyNumberBottomSheetArgs::class.java)
|
||||
Preconditions.checkArgument(args != null)
|
||||
return args!!
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import androidx.appcompat.content.res.AppCompatResources
|
|||
import androidx.appcompat.widget.AppCompatSeekBar
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import com.airbnb.lottie.SimpleColorFilter
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.imageeditor.core.HiddenEditText
|
||||
import org.signal.imageeditor.core.model.EditorElement
|
||||
import org.signal.imageeditor.core.renderers.MultiLineTextRenderer
|
||||
|
@ -42,7 +43,7 @@ class TextEntryDialogFragment : KeyboardEntryDialogFragment(R.layout.v2_media_im
|
|||
dismissAllowingStateLoss()
|
||||
}
|
||||
|
||||
val element: EditorElement = requireNotNull(requireArguments().getParcelable("element"))
|
||||
val element: EditorElement = requireNotNull(requireArguments().getParcelableCompat("element", EditorElement::class.java))
|
||||
val incognito = requireArguments().getBoolean("incognito")
|
||||
val selectAll = requireArguments().getBoolean("selectAll")
|
||||
|
||||
|
|
|
@ -14,6 +14,9 @@ import androidx.core.content.ContextCompat
|
|||
import androidx.core.content.pm.ShortcutManagerCompat
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import org.signal.core.util.Result
|
||||
import org.signal.core.util.getParcelableArrayListCompat
|
||||
import org.signal.core.util.getParcelableArrayListExtraCompat
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.MainActivity
|
||||
import org.thoughtcrime.securesms.PassphraseRequiredActivity
|
||||
|
@ -135,7 +138,7 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C
|
|||
throw AssertionError("Expected a recipient selection!")
|
||||
}
|
||||
|
||||
val contactSearchKeys: List<ContactSearchKey.RecipientSearchKey> = bundle.getParcelableArrayList(MultiselectForwardFragment.RESULT_SELECTION)!!
|
||||
val contactSearchKeys: List<ContactSearchKey.RecipientSearchKey> = bundle.getParcelableArrayListCompat(MultiselectForwardFragment.RESULT_SELECTION, ContactSearchKey.RecipientSearchKey::class.java)!!
|
||||
|
||||
viewModel.onContactSelectionConfirmed(contactSearchKeys)
|
||||
}
|
||||
|
@ -161,12 +164,12 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C
|
|||
} ?: Result.failure(IntentError.SEND_MULTIPLE_TEXT)
|
||||
}
|
||||
intent.action == Intent.ACTION_SEND_MULTIPLE && intent.hasExtra(Intent.EXTRA_STREAM) -> {
|
||||
intent.getParcelableArrayListExtra<Uri>(Intent.EXTRA_STREAM)?.let {
|
||||
intent.getParcelableArrayListExtraCompat(Intent.EXTRA_STREAM, Uri::class.java)?.let {
|
||||
Result.success(UnresolvedShareData.ExternalMultiShare(it))
|
||||
} ?: Result.failure(IntentError.SEND_MULTIPLE_STREAM)
|
||||
}
|
||||
intent.action == Intent.ACTION_SEND && intent.hasExtra(Intent.EXTRA_STREAM) -> {
|
||||
intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)?.let {
|
||||
intent.getParcelableExtraCompat(Intent.EXTRA_STREAM, Uri::class.java)?.let {
|
||||
Result.success(UnresolvedShareData.ExternalSingleShare(it, intent.type))
|
||||
} ?: extractSingleExtraTextFromIntent(IntentError.SEND_STREAM)
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ public final class GroupV2RecordProcessor extends DefaultStorageRecordProcessor<
|
|||
return StorageSyncModels.localToRemoteRecord(settings);
|
||||
} else {
|
||||
Log.w(TAG, "No local master key. Assuming it matches remote since the groupIds match. Enqueuing a fetch to fix the bad state.");
|
||||
groupDatabase.fixMissingMasterKey(null, record.getMasterKeyOrThrow());
|
||||
groupDatabase.fixMissingMasterKey(record.getMasterKeyOrThrow());
|
||||
return StorageSyncModels.localToRemoteRecord(settings, record.getMasterKeyOrThrow());
|
||||
}
|
||||
})
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.view.View
|
|||
import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.blurhash.BlurHash
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||
|
@ -135,7 +136,7 @@ class StorySlateView @JvmOverloads constructor(
|
|||
|
||||
override fun onRestoreInstanceState(state: Parcelable?) {
|
||||
if (state is Bundle) {
|
||||
val rootState: Parcelable? = state.getParcelable("ROOT")
|
||||
val rootState: Parcelable? = state.getParcelableCompat("ROOT", Parcelable::class.java)
|
||||
this.state = State.fromCode(state.getInt("STATE", State.HIDDEN.code))
|
||||
this.postId = state.getLong("ID")
|
||||
super.onRestoreInstanceState(rootState)
|
||||
|
|
|
@ -16,6 +16,7 @@ import com.bumptech.glide.load.ResourceDecoder
|
|||
import com.bumptech.glide.load.engine.Resource
|
||||
import com.bumptech.glide.load.resource.SimpleResource
|
||||
import org.signal.core.util.concurrent.safeBlockingGet
|
||||
import org.signal.core.util.readParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.conversation.colors.ChatColors
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase
|
||||
|
@ -80,7 +81,7 @@ data class StoryTextPostModel(
|
|||
return StoryTextPostModel(
|
||||
storyTextPost = StoryTextPost.parseFrom(ParcelUtil.readByteArray(parcel)),
|
||||
storySentAtMillis = parcel.readLong(),
|
||||
storyAuthor = parcel.readParcelable(RecipientId::class.java.classLoader)!!,
|
||||
storyAuthor = parcel.readParcelableCompat(RecipientId::class.java)!!,
|
||||
bodyRanges = ParcelUtil.readByteArray(parcel)?.let { BodyRangeList.parseFrom(it) }
|
||||
)
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ import androidx.window.layout.WindowMetricsCalculator
|
|||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.MemoryCategory
|
||||
import org.signal.core.util.dp
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.signal.core.util.sp
|
||||
import org.thoughtcrime.securesms.PassphraseRequiredActivity
|
||||
import org.thoughtcrime.securesms.R
|
||||
|
@ -45,7 +47,7 @@ class StoryViewerActivity : PassphraseRequiredActivity(), VoiceNoteMediaControll
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
|
||||
if (savedInstanceState != null) {
|
||||
val cache: StoryViewStateCache? = savedInstanceState.getParcelable(DATA_CACHE)
|
||||
val cache: StoryViewStateCache? = savedInstanceState.getParcelableCompat(DATA_CACHE, StoryViewStateCache::class.java)
|
||||
if (cache != null) {
|
||||
storyViewStateViewModel.storyViewStateCache.putAll(cache)
|
||||
}
|
||||
|
@ -125,7 +127,7 @@ class StoryViewerActivity : PassphraseRequiredActivity(), VoiceNoteMediaControll
|
|||
supportFragmentManager.beginTransaction()
|
||||
.replace(
|
||||
R.id.fragment_container,
|
||||
StoryViewerFragment.create(intent.getParcelableExtra(ARGS)!!)
|
||||
StoryViewerFragment.create(intent.getParcelableExtraCompat(ARGS, StoryViewerArgs::class.java)!!)
|
||||
)
|
||||
.commit()
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@ import androidx.fragment.app.Fragment
|
|||
import androidx.fragment.app.viewModels
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import org.signal.core.util.getParcelableArrayListCompat
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
|
@ -42,7 +44,7 @@ class StoryViewerFragment :
|
|||
|
||||
private val lifecycleDisposable = LifecycleDisposable()
|
||||
|
||||
private val storyViewerArgs: StoryViewerArgs by lazy { requireArguments().getParcelable(ARGS)!! }
|
||||
private val storyViewerArgs: StoryViewerArgs by lazy { requireArguments().getParcelableCompat(ARGS, StoryViewerArgs::class.java)!! }
|
||||
|
||||
private lateinit var storyCrossfader: StoriesSharedElementCrossFaderView
|
||||
|
||||
|
@ -120,7 +122,7 @@ class StoryViewerFragment :
|
|||
}
|
||||
|
||||
if (savedInstanceState != null && savedInstanceState.containsKey(HIDDEN)) {
|
||||
val ids: List<RecipientId> = savedInstanceState.getParcelableArrayList(HIDDEN)!!
|
||||
val ids: List<RecipientId> = savedInstanceState.getParcelableArrayListCompat(HIDDEN, RecipientId::class.java)!!
|
||||
viewModel.addHiddenAndRefresh(ids.toSet())
|
||||
} else {
|
||||
viewModel.refresh()
|
||||
|
|
|
@ -36,6 +36,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
|||
import io.reactivex.rxjava3.core.Observable
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.signal.core.util.dp
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.animation.AnimationCompleteListener
|
||||
|
@ -153,7 +154,9 @@ class StoryViewerPageFragment :
|
|||
|
||||
private var sendingProgressDrawable: IndeterminateDrawable<CircularProgressIndicatorSpec>? = null
|
||||
|
||||
private val storyViewerPageArgs: StoryViewerPageArgs by lazy(LazyThreadSafetyMode.NONE) { requireArguments().getParcelable(ARGS)!! }
|
||||
private val storyViewerPageArgs: StoryViewerPageArgs by lazy(LazyThreadSafetyMode.NONE) {
|
||||
requireArguments().getParcelableCompat(ARGS, StoryViewerPageArgs::class.java)!!
|
||||
}
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -9,6 +9,7 @@ import androidx.fragment.app.DialogFragment
|
|||
import androidx.fragment.app.setFragmentResult
|
||||
import androidx.fragment.app.viewModels
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.KeyboardEntryDialogFragment
|
||||
import org.thoughtcrime.securesms.components.emoji.EmojiEventListener
|
||||
|
@ -60,7 +61,7 @@ class StoryDirectReplyDialogFragment :
|
|||
get() = requireArguments().getLong(ARG_STORY_ID)
|
||||
|
||||
private val recipientId: RecipientId?
|
||||
get() = requireArguments().getParcelable(ARG_RECIPIENT_ID)
|
||||
get() = requireArguments().getParcelableCompat(ARG_RECIPIENT_ID, RecipientId::class.java)
|
||||
|
||||
override val withDim: Boolean = true
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ import androidx.fragment.app.DialogFragment
|
|||
import androidx.fragment.app.viewModels
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
|
@ -34,7 +35,7 @@ class StoryGroupReplyBottomSheetDialogFragment : FixedRoundedCornerBottomSheetDi
|
|||
get() = requireArguments().getLong(ARG_STORY_ID)
|
||||
|
||||
private val groupRecipientId: RecipientId
|
||||
get() = requireArguments().getParcelable(ARG_GROUP_RECIPIENT_ID)!!
|
||||
get() = requireArguments().getParcelableCompat(ARG_GROUP_RECIPIENT_ID, RecipientId::class.java)!!
|
||||
|
||||
private val isFromNotification: Boolean
|
||||
get() = requireArguments().getBoolean(ARG_IS_FROM_NOTIFICATION, false)
|
||||
|
|
|
@ -18,6 +18,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.kotlin.subscribeBy
|
||||
import org.signal.core.util.concurrent.SignalExecutors
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment
|
||||
|
@ -132,7 +133,7 @@ class StoryGroupReplyFragment :
|
|||
get() = requireArguments().getLong(ARG_STORY_ID)
|
||||
|
||||
private val groupRecipientId: RecipientId
|
||||
get() = requireArguments().getParcelable(ARG_GROUP_RECIPIENT_ID)!!
|
||||
get() = requireArguments().getParcelableCompat(ARG_GROUP_RECIPIENT_ID, RecipientId::class.java)!!
|
||||
|
||||
private val isFromNotification: Boolean
|
||||
get() = requireArguments().getBoolean(ARG_IS_FROM_NOTIFICATION, false)
|
||||
|
|
|
@ -15,6 +15,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
|
@ -41,7 +42,7 @@ class StoryViewsAndRepliesDialogFragment : FixedRoundedCornerBottomSheetDialogFr
|
|||
get() = requireArguments().getLong(ARG_STORY_ID)
|
||||
|
||||
private val groupRecipientId: RecipientId
|
||||
get() = requireArguments().getParcelable(ARG_GROUP_RECIPIENT_ID)!!
|
||||
get() = requireArguments().getParcelableCompat(ARG_GROUP_RECIPIENT_ID, RecipientId::class.java)!!
|
||||
|
||||
private val startPageIndex: Int
|
||||
get() = requireArguments().getInt(ARG_START_PAGE)
|
||||
|
|
|
@ -392,7 +392,6 @@ public class Util {
|
|||
}
|
||||
}
|
||||
|
||||
@TargetApi(VERSION_CODES.LOLLIPOP)
|
||||
public static boolean isMmsCapable(Context context) {
|
||||
return (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) || OutgoingLegacyMmsConnection.isConnectionPossible(context);
|
||||
}
|
||||
|
@ -418,12 +417,10 @@ public class Util {
|
|||
else return Uri.parse(uri);
|
||||
}
|
||||
|
||||
@TargetApi(VERSION_CODES.KITKAT)
|
||||
public static boolean isLowMemory(Context context) {
|
||||
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
||||
|
||||
return (VERSION.SDK_INT >= VERSION_CODES.KITKAT && activityManager.isLowRamDevice()) ||
|
||||
activityManager.getLargeMemoryClass() <= 64;
|
||||
return activityManager.isLowRamDevice() || activityManager.getLargeMemoryClass() <= 64;
|
||||
}
|
||||
|
||||
public static int clamp(int value, int min, int max) {
|
||||
|
|
|
@ -14,6 +14,7 @@ import androidx.core.content.withStyledAttributes
|
|||
import com.google.android.material.button.MaterialButton
|
||||
import com.google.android.material.progressindicator.CircularProgressIndicator
|
||||
import com.google.android.material.theme.overlay.MaterialThemeOverlay
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.util.visible
|
||||
import kotlin.math.max
|
||||
|
@ -76,7 +77,7 @@ class CircularProgressMaterialButton @JvmOverloads constructor(
|
|||
|
||||
override fun onRestoreInstanceState(state: Parcelable) {
|
||||
val stateBundle = state as Bundle
|
||||
val superState: Parcelable? = stateBundle.getParcelable(SUPER_STATE)
|
||||
val superState: Parcelable? = stateBundle.getParcelableCompat(SUPER_STATE, Parcelable::class.java)
|
||||
super.onRestoreInstanceState(superState)
|
||||
|
||||
currentState = if (materialButton.visibility == INVISIBLE) State.PROGRESS else State.BUTTON
|
||||
|
|
|
@ -284,15 +284,14 @@ public class VerifyDisplayFragment extends Fragment implements ViewTreeObserver.
|
|||
public boolean onContextItemSelected(MenuItem item) {
|
||||
if (fingerprint == null) return super.onContextItemSelected(item);
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_copy:
|
||||
handleCopyToClipboard(fingerprint, codes.length);
|
||||
return true;
|
||||
case R.id.menu_compare:
|
||||
handleCompareWithClipboard(fingerprint);
|
||||
return true;
|
||||
default:
|
||||
return super.onContextItemSelected(item);
|
||||
if (item.getItemId() == R.id.menu_copy) {
|
||||
handleCopyToClipboard(fingerprint, codes.length);
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_compare) {
|
||||
handleCompareWithClipboard(fingerprint);
|
||||
return true;
|
||||
} else {
|
||||
return super.onContextItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import android.widget.Toast
|
|||
import androidx.core.os.bundleOf
|
||||
import androidx.fragment.app.Fragment
|
||||
import org.signal.core.util.ThreadUtil
|
||||
import org.signal.core.util.getParcelableCompat
|
||||
import org.signal.qr.kitkat.ScanListener
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.WrapperDialogFragment
|
||||
|
@ -84,10 +85,10 @@ class VerifyIdentityFragment : Fragment(R.layout.fragment_container), ScanListen
|
|||
}
|
||||
|
||||
private val recipientId: RecipientId
|
||||
get() = requireArguments().getParcelable(EXTRA_RECIPIENT)!!
|
||||
get() = requireArguments().getParcelableCompat(EXTRA_RECIPIENT, RecipientId::class.java)!!
|
||||
|
||||
private val remoteIdentity: IdentityKeyParcelable
|
||||
get() = requireArguments().getParcelable(EXTRA_IDENTITY)!!
|
||||
get() = requireArguments().getParcelableCompat(EXTRA_IDENTITY, IdentityKeyParcelable::class.java)!!
|
||||
|
||||
private val isVerified: Boolean
|
||||
get() = requireArguments().getBoolean(EXTRA_VERIFIED)
|
||||
|
|
|
@ -3,6 +3,8 @@ package org.thoughtcrime.securesms.webrtc.audio
|
|||
import android.net.Uri
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
import org.signal.core.util.readParcelableCompat
|
||||
import org.signal.core.util.readSerializableCompat
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.util.ParcelUtil
|
||||
|
||||
|
@ -36,7 +38,7 @@ sealed class AudioManagerCommand : Parcelable {
|
|||
@JvmField
|
||||
val CREATOR: Parcelable.Creator<StartIncomingRinger> = ParcelCheat { parcel ->
|
||||
StartIncomingRinger(
|
||||
ringtoneUri = parcel.readParcelable(Uri::class.java.classLoader)!!,
|
||||
ringtoneUri = parcel.readParcelableCompat(Uri::class.java)!!,
|
||||
vibrate = ParcelUtil.readBoolean(parcel)
|
||||
)
|
||||
}
|
||||
|
@ -83,7 +85,12 @@ sealed class AudioManagerCommand : Parcelable {
|
|||
|
||||
companion object {
|
||||
@JvmField
|
||||
val CREATOR: Parcelable.Creator<SetUserDevice> = ParcelCheat { SetUserDevice(it.readParcelable(RecipientId::class.java.classLoader), it.readSerializable() as SignalAudioManager.AudioDevice) }
|
||||
val CREATOR: Parcelable.Creator<SetUserDevice> = ParcelCheat {
|
||||
SetUserDevice(
|
||||
it.readParcelableCompat(RecipientId::class.java),
|
||||
it.readSerializableCompat(SignalAudioManager.AudioDevice::class.java)!!
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,8 +105,8 @@ sealed class AudioManagerCommand : Parcelable {
|
|||
@JvmField
|
||||
val CREATOR: Parcelable.Creator<SetDefaultDevice> = ParcelCheat { parcel ->
|
||||
SetDefaultDevice(
|
||||
recipientId = parcel.readParcelable(RecipientId::class.java.classLoader),
|
||||
device = parcel.readSerializable() as SignalAudioManager.AudioDevice,
|
||||
recipientId = parcel.readParcelableCompat(RecipientId::class.java),
|
||||
device = parcel.readSerializableCompat(SignalAudioManager.AudioDevice::class.java)!!,
|
||||
clearUserEarpieceSelection = ParcelUtil.readBoolean(parcel)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.stories.dialogs
|
|||
import android.app.Application
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import org.junit.Assert.assertEquals
|
||||
|
@ -15,6 +16,7 @@ import org.mockito.kotlin.mock
|
|||
import org.mockito.kotlin.verify
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
import org.signal.core.util.getParcelableExtraCompat
|
||||
import org.thoughtcrime.securesms.attachments.AttachmentId
|
||||
import org.thoughtcrime.securesms.database.FakeMessageRecords
|
||||
import org.thoughtcrime.securesms.database.model.StoryType
|
||||
|
@ -61,8 +63,8 @@ class StoryContextMenuTest {
|
|||
// THEN
|
||||
verify(fragment).startActivity(intentCaptor.capture())
|
||||
val chooserIntent: Intent = intentCaptor.firstValue
|
||||
val targetIntent: Intent = chooserIntent.getParcelableExtra(Intent.EXTRA_INTENT)!!
|
||||
assertEquals(PartAuthority.getAttachmentPublicUri(PartAuthority.getAttachmentDataUri(attachmentId)), targetIntent.getParcelableExtra(Intent.EXTRA_STREAM))
|
||||
val targetIntent: Intent = chooserIntent.getParcelableExtraCompat(Intent.EXTRA_INTENT, Intent::class.java)!!
|
||||
assertEquals(PartAuthority.getAttachmentPublicUri(PartAuthority.getAttachmentDataUri(attachmentId)), targetIntent.getParcelableExtraCompat(Intent.EXTRA_STREAM, Uri::class.java))
|
||||
assertEquals(MediaUtil.IMAGE_JPEG, targetIntent.type)
|
||||
assertTrue(Intent.FLAG_GRANT_READ_URI_PERMISSION and chooserIntent.flags == Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||
}
|
||||
|
@ -82,7 +84,7 @@ class StoryContextMenuTest {
|
|||
// THEN
|
||||
verify(fragment).startActivity(intentCaptor.capture())
|
||||
val chooserIntent: Intent = intentCaptor.firstValue
|
||||
val targetIntent: Intent = chooserIntent.getParcelableExtra(Intent.EXTRA_INTENT)!!
|
||||
val targetIntent: Intent = chooserIntent.getParcelableExtraCompat(Intent.EXTRA_INTENT, Intent::class.java)!!
|
||||
assertEquals(expected, targetIntent.getStringExtra(Intent.EXTRA_TEXT))
|
||||
}
|
||||
|
||||
|
@ -102,7 +104,7 @@ class StoryContextMenuTest {
|
|||
// THEN
|
||||
verify(fragment).startActivity(intentCaptor.capture())
|
||||
val chooserIntent: Intent = intentCaptor.firstValue
|
||||
val targetIntent: Intent = chooserIntent.getParcelableExtra(Intent.EXTRA_INTENT)!!
|
||||
val targetIntent: Intent = chooserIntent.getParcelableExtraCompat(Intent.EXTRA_INTENT, Intent::class.java)!!
|
||||
assertEquals(expected, targetIntent.getStringExtra(Intent.EXTRA_TEXT))
|
||||
}
|
||||
|
||||
|
@ -124,7 +126,7 @@ class StoryContextMenuTest {
|
|||
// THEN
|
||||
verify(fragment).startActivity(intentCaptor.capture())
|
||||
val chooserIntent: Intent = intentCaptor.firstValue
|
||||
val targetIntent: Intent = chooserIntent.getParcelableExtra(Intent.EXTRA_INTENT)!!
|
||||
val targetIntent: Intent = chooserIntent.getParcelableExtraCompat(Intent.EXTRA_INTENT, Intent::class.java)!!
|
||||
assertEquals(expected, targetIntent.getStringExtra(Intent.EXTRA_TEXT))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package org.signal.core.util
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Parcelable
|
||||
|
||||
fun <T : Parcelable> Bundle.getParcelableCompat(key: String, clazz: Class<T>): T? {
|
||||
return if (Build.VERSION.SDK_INT >= 33) {
|
||||
this.getParcelable(key, clazz)
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
this.getParcelable(key)
|
||||
}
|
||||
}
|
||||
|
||||
fun <T : Parcelable> Bundle.getParcelableArrayListCompat(key: String, clazz: Class<T>): ArrayList<T>? {
|
||||
return if (Build.VERSION.SDK_INT >= 33) {
|
||||
this.getParcelableArrayList(key, clazz)
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
this.getParcelableArrayList(key)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.signal.core.util
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.Parcelable
|
||||
|
||||
fun <T : Parcelable> Intent.getParcelableExtraCompat(key: String, clazz: Class<T>): T? {
|
||||
return if (Build.VERSION.SDK_INT >= 33) {
|
||||
this.getParcelableExtra(key, clazz)
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
this.getParcelableExtra(key)
|
||||
}
|
||||
}
|
||||
|
||||
fun <T : Parcelable> Intent.getParcelableArrayListExtraCompat(key: String, clazz: Class<T>): ArrayList<T>? {
|
||||
return if (Build.VERSION.SDK_INT >= 33) {
|
||||
this.getParcelableArrayListExtra(key, clazz)
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
this.getParcelableArrayListExtra(key)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package org.signal.core.util
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Parcel
|
||||
import android.os.Parcelable
|
||||
|
||||
fun <T : Parcelable> Parcel.readParcelableCompat(clazz: Class<T>): T? {
|
||||
return if (Build.VERSION.SDK_INT >= 33) {
|
||||
this.readParcelable(clazz.classLoader, clazz)
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
this.readParcelable(clazz.classLoader)
|
||||
}
|
||||
}
|
||||
|
||||
fun <T : java.io.Serializable> Parcel.readSerializableCompat(clazz: Class<T>): T? {
|
||||
return if (Build.VERSION.SDK_INT >= 33) {
|
||||
this.readSerializable(clazz.classLoader, clazz)
|
||||
} else {
|
||||
@Suppress("DEPRECATION", "UNCHECKED_CAST")
|
||||
this.readSerializable() as T
|
||||
}
|
||||
}
|
|
@ -1,15 +1,23 @@
|
|||
package org.signal.lint;
|
||||
|
||||
import com.android.tools.lint.client.api.IssueRegistry;
|
||||
import com.android.tools.lint.client.api.Vendor;
|
||||
import com.android.tools.lint.detector.api.ApiKt;
|
||||
import com.android.tools.lint.detector.api.Issue;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@SuppressWarnings("UnstableApiUsage")
|
||||
public final class Registry extends IssueRegistry {
|
||||
|
||||
@Override
|
||||
public Vendor getVendor() {
|
||||
return new Vendor("Signal", "Signal", "Signal", "Signal");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Issue> getIssues() {
|
||||
return Arrays.asList(SignalLogDetector.LOG_NOT_SIGNAL,
|
||||
|
|
Loading…
Add table
Reference in a new issue