Fix a bunch of random lint warnings.

main
Greyson Parrelli 2023-02-26 13:45:24 -05:00 zatwierdzone przez Nicholas Tinsley
rodzic ce4b7c2d7f
commit 6922886395
75 zmienionych plików z 293 dodań i 213 usunięć

Wyświetl plik

@ -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() {

Wyświetl plik

@ -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";

Wyświetl plik

@ -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);

Wyświetl plik

@ -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);

Wyświetl plik

@ -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()
)

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)

Wyświetl plik

@ -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())

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)

Wyświetl plik

@ -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))

Wyświetl plik

@ -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 {

Wyświetl plik

@ -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);

Wyświetl plik

@ -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)

Wyświetl plik

@ -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);
}

Wyświetl plik

@ -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);

Wyświetl plik

@ -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;

Wyświetl plik

@ -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);

Wyświetl plik

@ -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();
}
}
}

Wyświetl plik

@ -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);

Wyświetl plik

@ -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()
}
)
}

Wyświetl plik

@ -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)
}
}

Wyświetl plik

@ -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)
}
}

Wyświetl plik

@ -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)

Wyświetl plik

@ -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 {

Wyświetl plik

@ -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 {

Wyświetl plik

@ -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) {

Wyświetl plik

@ -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)
}
}

Wyświetl plik

@ -1313,7 +1313,6 @@ public class ConversationParentFragment extends Fragment
});
}
@TargetApi(Build.VERSION_CODES.KITKAT)
private void handleMakeDefaultSms() {
startActivityForResult(SmsUtil.getSmsRoleIntent(requireContext()), SMS_DEFAULT);
}

Wyświetl plik

@ -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
}
}

Wyświetl plik

@ -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)

Wyświetl plik

@ -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

Wyświetl plik

@ -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)!!)

Wyświetl plik

@ -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) {

Wyświetl plik

@ -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.")

Wyświetl plik

@ -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() {

Wyświetl plik

@ -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 {

Wyświetl plik

@ -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;

Wyświetl plik

@ -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()
}
}
}

Wyświetl plik

@ -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)

Wyświetl plik

@ -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
}
}

Wyświetl plik

@ -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)

Wyświetl plik

@ -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"

Wyświetl plik

@ -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) {

Wyświetl plik

@ -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)!!
}
}
}

Wyświetl plik

@ -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

Wyświetl plik

@ -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 }
}

Wyświetl plik

@ -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))

Wyświetl plik

@ -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());
}
/**

Wyświetl plik

@ -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

Wyświetl plik

@ -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
{

Wyświetl plik

@ -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);

Wyświetl plik

@ -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!!
}

Wyświetl plik

@ -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")

Wyświetl plik

@ -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)
}

Wyświetl plik

@ -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());
}
})

Wyświetl plik

@ -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)

Wyświetl plik

@ -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) }
)
}

Wyświetl plik

@ -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()
}

Wyświetl plik

@ -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()

Wyświetl plik

@ -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?) {

Wyświetl plik

@ -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

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)

Wyświetl plik

@ -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) {

Wyświetl plik

@ -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

Wyświetl plik

@ -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);
}
}

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)
)
}

Wyświetl plik

@ -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))
}
}

Wyświetl plik

@ -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)
}
}

Wyświetl plik

@ -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)
}
}

Wyświetl plik

@ -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
}
}

Wyświetl plik

@ -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,