From 26bebb98110e56152688b9eaaac3cc87fde52f20 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 13 Sep 2022 11:16:01 -0300 Subject: [PATCH] Upgrade several AndroidX Libraries. AppCompat 1.2.0 to 1.5.1 Lifecycle 2.3.1 to 2.5.1 Navigation 2.3.5 to 2.5.2 Fragment 1.3.5 to 1.5.2 Annotations 1.2.0 to 1.4.0 Window 1.0.0-alpha09 to 1.0.0 AAPT2 to 7.0.4 Fragment-Testing 1.3.5 to 1.5.2 (matching Fragment) --- app/build.gradle | 11 +- .../securesms/MediaPreviewActivity.java | 4 +- .../securesms/WebRtcCallActivity.java | 35 +- .../blocked/BlockedUsersActivity.java | 4 +- .../blocked/BlockedUsersFragment.java | 4 +- .../CallParticipantsListDialog.java | 4 +- .../ContactShareEditActivity.java | 4 +- .../ui/mentions/MentionsPickerFragment.java | 4 +- .../DeleteAccountCountryPickerFragment.java | 4 +- .../DeviceTransferSetupFragment.java | 4 +- .../securesms/giph/mp4/GiphyMp4Fragment.java | 4 +- .../securesms/giph/ui/GiphyActivity.java | 4 +- .../ui/addmembers/AddMembersActivity.java | 5 +- .../ui/addtogroup/AddToGroupsActivity.java | 5 +- .../chooseadmin/ChooseNewAdminActivity.java | 4 +- .../details/AddGroupDetailsFragment.java | 4 +- ...nviteFriendsBottomSheetDialogFragment.java | 4 +- .../invited/PendingMemberInvitesFragment.java | 4 +- .../GroupJoinBottomSheetDialogFragment.java | 4 +- ...igrationInfoBottomSheetDialogFragment.java | 4 +- ...onInitiationBottomSheetDialogFragment.java | 4 +- .../securesms/help/HelpFragment.java | 4 +- .../InsightsDashboardDialogFragment.java | 4 +- .../insights/InsightsModalDialogFragment.java | 4 +- .../jobs/RetrieveRemoteAnnouncementsJob.kt | 2 +- .../jobs/StoryOnboardingDownloadJob.kt | 2 +- .../lock/v2/ConfirmKbsPinFragment.java | 4 +- .../lock/v2/CreateKbsPinFragment.java | 4 +- .../logsubmit/SubmitDebugLogActivity.java | 4 +- .../mediaoverview/MediaOverviewViewModel.java | 4 +- .../securesms/mediasend/Camera1Fragment.java | 2 +- .../CameraContactSelectionFragment.java | 7 +- .../securesms/mediasend/CameraDisplay.kt | 10 +- .../securesms/mediasend/CameraXFragment.java | 2 +- .../mediasend/v2/MediaSelectionActivity.kt | 2 +- .../mediasend/v2/MediaSelectionViewModel.kt | 7 +- .../gallery/MediaSelectionGalleryFragment.kt | 9 +- .../v2/review/MediaReviewFragment.kt | 6 +- .../QualitySelectorBottomSheetDialog.java | 4 +- .../v2/text/TextStoryPostCreationFragment.kt | 2 +- .../MessageDetailsFragment.java | 4 +- ...alleeMustAcceptMessageRequestActivity.java | 4 +- ...PaymentsRecoveryPhraseConfirmFragment.java | 4 +- .../entry/PaymentsRecoveryEntryFragment.java | 4 +- .../PaymentsRecoveryPhraseFragment.java | 4 +- .../confirm/ConfirmPaymentFragment.java | 4 +- .../deactivate/DeactivateWalletFragment.java | 4 +- .../preferences/PaymentsHomeFragment.java | 4 +- .../PaymentsPagerItemFragment.java | 4 +- .../preferences/SetCurrencyFragment.java | 4 +- .../addmoney/PaymentsAddMoneyFragment.java | 4 +- .../details/PaymentDetailsFragment.java | 4 +- .../pin/PinRestoreEntryFragment.java | 4 +- .../ApplicationPreferencesViewModel.java | 4 +- .../preferences/EditProxyFragment.java | 4 +- .../profiles/manage/EditAboutFragment.java | 4 +- .../manage/EditProfileNameFragment.java | 4 +- .../spoofing/ReviewCardDialogFragment.java | 4 +- .../proxy/ProxyBottomSheetFragment.java | 4 +- ...WithAnyEmojiBottomSheetDialogFragment.java | 11 +- .../qr/GroupLinkShareQrDialogFragment.java | 4 +- .../fragments/CaptchaFragment.java | 5 +- .../fragments/ChooseBackupFragment.java | 2 - .../fragments/EnterSmsCodeFragment.java | 4 +- .../fragments/WelcomeFragment.java | 4 +- .../revealable/ViewOnceMessageActivity.java | 5 +- .../ImageEditorStickerSelectActivity.java | 4 +- .../stickers/StickerManagementActivity.java | 4 +- .../stickers/StickerPackPreviewActivity.java | 8 +- .../group/GroupStorySettingsViewModel.kt | 2 +- .../thoughtcrime/securesms/util/LocaleUtil.kt | 2 +- .../wallpaper/ChatWallpaperActivity.java | 4 +- .../wallpaper/ChatWallpaperFragment.java | 4 +- .../ChatWallpaperSelectionFragment.java | 4 +- .../wallpaper/crop/WallpaperCropActivity.java | 4 +- .../res/layout/conversation_input_panel.xml | 10 +- .../res/layout/conversation_scroll_to.xml | 7 +- .../main/res/layout/item_editable_contact.xml | 9 +- .../res/layout/microphone_recorder_view.xml | 12 +- .../res/layout/submit_debug_log_activity.xml | 4 +- .../res/layout/unverified_banner_view.xml | 2 +- build.gradle | 8 +- dependencies.gradle | 42 +- gradle/verification-metadata.xml | 1307 +++++++++++++++-- qr/lib/build.gradle | 2 +- signalModuleApp.gradle | 3 +- 86 files changed, 1398 insertions(+), 362 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 138628e72..5ef71c06c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -417,10 +417,11 @@ dependencies { implementation (libs.androidx.appcompat) { version { - strictly '1.2.0' + strictly '1.5.1' } } - implementation libs.androidx.window + implementation libs.androidx.window.window + implementation libs.androidx.window.java implementation libs.androidx.recyclerview implementation libs.material.material implementation libs.androidx.legacy.support @@ -433,7 +434,9 @@ dependencies { implementation libs.androidx.multidex implementation libs.androidx.navigation.fragment.ktx implementation libs.androidx.navigation.ui.ktx - implementation libs.androidx.lifecycle.extensions + implementation libs.androidx.lifecycle.viewmodel.ktx + implementation libs.androidx.lifecycle.livedata.ktx + implementation libs.androidx.lifecycle.process implementation libs.androidx.lifecycle.viewmodel.savedstate implementation libs.androidx.lifecycle.common.java8 implementation libs.androidx.lifecycle.reactivestreams.ktx @@ -561,7 +564,7 @@ dependencies { androidTestImplementation testLibs.mockito.kotlin androidTestImplementation testLibs.square.okhttp.mockserver - instrumentationImplementation (testLibs.androidx.fragment.testing) { + instrumentationImplementation (libs.androidx.fragment.testing) { exclude group: 'androidx.test', module: 'core' } diff --git a/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java b/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java index d514e6a87..53fcd3836 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java @@ -44,7 +44,7 @@ import androidx.core.view.ViewCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.loader.app.LoaderManager; import androidx.loader.content.Loader; import androidx.recyclerview.widget.LinearLayoutManager; @@ -168,7 +168,7 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity setSupportActionBar(findViewById(R.id.toolbar)); voiceNoteMediaController = new VoiceNoteMediaController(this); - viewModel = ViewModelProviders.of(this).get(MediaPreviewViewModel.class); + viewModel = new ViewModelProvider(this).get(MediaPreviewViewModel.class); fullscreenHelper = new FullscreenHelper(this); diff --git a/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java b/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java index a8e02a6e0..b2ffe90ed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/WebRtcCallActivity.java @@ -40,9 +40,11 @@ import androidx.appcompat.app.AppCompatDelegate; import androidx.core.content.ContextCompat; import androidx.core.util.Consumer; import androidx.lifecycle.ViewModelProvider; -import androidx.window.DisplayFeature; -import androidx.window.FoldingFeature; -import androidx.window.WindowLayoutInfo; +import androidx.window.java.layout.WindowInfoTrackerCallbackAdapter; +import androidx.window.layout.DisplayFeature; +import androidx.window.layout.FoldingFeature; +import androidx.window.layout.WindowInfoTracker; +import androidx.window.layout.WindowLayoutInfo; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -114,15 +116,15 @@ public class WebRtcCallActivity extends BaseActivity implements SafetyNumberChan private WifiToCellularPopupWindow wifiToCellularPopupWindow; private DeviceOrientationMonitor deviceOrientationMonitor; - private FullscreenHelper fullscreenHelper; - private WebRtcCallView callScreen; - private TooltipPopup videoTooltip; - private WebRtcCallViewModel viewModel; - private boolean enableVideoIfAvailable; - private boolean hasWarnedAboutBluetooth; - private androidx.window.WindowManager windowManager; - private WindowLayoutInfoConsumer windowLayoutInfoConsumer; - private ThrottledDebouncer requestNewSizesThrottle; + private FullscreenHelper fullscreenHelper; + private WebRtcCallView callScreen; + private TooltipPopup videoTooltip; + private WebRtcCallViewModel viewModel; + private boolean enableVideoIfAvailable; + private boolean hasWarnedAboutBluetooth; + private WindowLayoutInfoConsumer windowLayoutInfoConsumer; + private WindowInfoTrackerCallbackAdapter windowInfoTrackerCallbackAdapter; + private ThrottledDebouncer requestNewSizesThrottle; private Disposable ephemeralStateDisposable = Disposable.empty(); @@ -160,10 +162,10 @@ public class WebRtcCallActivity extends BaseActivity implements SafetyNumberChan enableVideoIfAvailable = getIntent().getBooleanExtra(EXTRA_ENABLE_VIDEO_IF_AVAILABLE, false); getIntent().removeExtra(EXTRA_ENABLE_VIDEO_IF_AVAILABLE); - windowManager = new androidx.window.WindowManager(this); windowLayoutInfoConsumer = new WindowLayoutInfoConsumer(); - windowManager.registerLayoutChangeCallback(SignalExecutors.BOUNDED, windowLayoutInfoConsumer); + windowInfoTrackerCallbackAdapter = new WindowInfoTrackerCallbackAdapter(WindowInfoTracker.getOrCreate(this)); + windowInfoTrackerCallbackAdapter.addWindowLayoutInfoListener(this, SignalExecutors.BOUNDED, windowLayoutInfoConsumer); requestNewSizesThrottle = new ThrottledDebouncer(TimeUnit.SECONDS.toMillis(1)); } @@ -250,7 +252,7 @@ public class WebRtcCallActivity extends BaseActivity implements SafetyNumberChan @Override protected void onDestroy() { super.onDestroy(); - windowManager.unregisterLayoutChangeCallback(windowLayoutInfoConsumer); + windowInfoTrackerCallbackAdapter.removeWindowLayoutInfoListener(windowLayoutInfoConsumer); EventBus.getDefault().unregister(this); } @@ -273,7 +275,8 @@ public class WebRtcCallActivity extends BaseActivity implements SafetyNumberChan } @Override - public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) { + public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) { + super.onPictureInPictureModeChanged(isInPictureInPictureMode); viewModel.setIsInPipMode(isInPictureInPictureMode); participantUpdateWindow.setEnabled(!isInPictureInPictureMode); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersActivity.java b/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersActivity.java index aea750455..8f45e7791 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersActivity.java @@ -10,7 +10,7 @@ import androidx.annotation.StringRes; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.snackbar.Snackbar; @@ -48,7 +48,7 @@ public class BlockedUsersActivity extends PassphraseRequiredActivity implements BlockedUsersRepository repository = new BlockedUsersRepository(this); BlockedUsersViewModel.Factory factory = new BlockedUsersViewModel.Factory(repository); - viewModel = ViewModelProviders.of(this, factory).get(BlockedUsersViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(BlockedUsersViewModel.class); Toolbar toolbar = findViewById(R.id.toolbar); ContactFilterView contactFilterView = findViewById(R.id.contact_filter_edit_text); diff --git a/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersFragment.java b/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersFragment.java index d231f6575..79f7d16f1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/blocked/BlockedUsersFragment.java @@ -9,7 +9,7 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; import org.thoughtcrime.securesms.BlockUnblockDialog; @@ -59,7 +59,7 @@ public class BlockedUsersFragment extends Fragment { } }); - viewModel = ViewModelProviders.of(requireActivity()).get(BlockedUsersViewModel.class); + viewModel = new ViewModelProvider(requireActivity()).get(BlockedUsersViewModel.class); viewModel.getRecipients().observe(getViewLifecycleOwner(), list -> { if (list.isEmpty()) { empty.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/participantslist/CallParticipantsListDialog.java b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/participantslist/CallParticipantsListDialog.java index 9d2e9c3e3..1fb9bb7ee 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/participantslist/CallParticipantsListDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/participantslist/CallParticipantsListDialog.java @@ -11,7 +11,7 @@ import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -72,7 +72,7 @@ public class CallParticipantsListDialog extends BottomSheetDialogFragment { public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - final WebRtcCallViewModel viewModel = ViewModelProviders.of(requireActivity()).get(WebRtcCallViewModel.class); + final WebRtcCallViewModel viewModel = new ViewModelProvider(requireActivity()).get(WebRtcCallViewModel.class); initializeList(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactShareEditActivity.java b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactShareEditActivity.java index abb5bdb9b..5f6327e4a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactShareEditActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contactshare/ContactShareEditActivity.java @@ -16,7 +16,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.core.view.ViewCompat; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -94,7 +94,7 @@ public class ContactShareEditActivity extends PassphraseRequiredActivity impleme SharedContactRepository contactRepository = new SharedContactRepository(this, AsyncTask.THREAD_POOL_EXECUTOR); - viewModel = ViewModelProviders.of(this, new Factory(contactUris, contactRepository)).get(ContactShareEditViewModel.class); + viewModel = new ViewModelProvider(this, new Factory(contactUris, contactRepository)).get(ContactShareEditViewModel.class); viewModel.getContacts().observe(this, contacts -> { contactAdapter.setContacts(contacts); contactList.post(() -> contactList.scrollToPosition(0)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/mentions/MentionsPickerFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/mentions/MentionsPickerFragment.java index 609e275e2..bdf8eae83 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/mentions/MentionsPickerFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/mentions/MentionsPickerFragment.java @@ -9,7 +9,7 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -48,7 +48,7 @@ public class MentionsPickerFragment extends LoggingFragment { @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - viewModel = ViewModelProviders.of(requireActivity()).get(MentionsPickerViewModel.class); + viewModel = new ViewModelProvider(requireActivity()).get(MentionsPickerViewModel.class); initializeList(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountCountryPickerFragment.java b/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountCountryPickerFragment.java index 41e173b7b..c10240c9c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountCountryPickerFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountCountryPickerFragment.java @@ -12,7 +12,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; import org.thoughtcrime.securesms.R; @@ -49,7 +49,7 @@ public class DeleteAccountCountryPickerFragment extends DialogFragment { toolbar.setNavigationOnClickListener(unused -> dismiss()); - viewModel = ViewModelProviders.of(requireActivity()).get(DeleteAccountViewModel.class); + viewModel = new ViewModelProvider(requireActivity()).get(DeleteAccountViewModel.class); viewModel.getFilteredCountries().observe(getViewLifecycleOwner(), adapter::submitList); searchFilter.addTextChangedListener(new AfterTextChanged(this::onQueryChanged)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/DeviceTransferSetupFragment.java b/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/DeviceTransferSetupFragment.java index e1504ed28..2b7a8358e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/DeviceTransferSetupFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/DeviceTransferSetupFragment.java @@ -19,7 +19,7 @@ import androidx.annotation.StringRes; import androidx.appcompat.app.AlertDialog; import androidx.constraintlayout.widget.Group; import androidx.core.content.ContextCompat; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.fragment.NavHostFragment; import com.google.android.material.button.MaterialButton; @@ -83,7 +83,7 @@ public abstract class DeviceTransferSetupFragment extends LoggingFragment { MaterialButton verifyNo = view.findViewById(R.id.device_transfer_setup_fragment_sas_verify_no); MaterialButton verifyYes = view.findViewById(R.id.device_transfer_setup_fragment_sas_verify_yes); - viewModel = ViewModelProviders.of(this).get(DeviceTransferSetupViewModel.class); + viewModel = new ViewModelProvider(this).get(DeviceTransferSetupViewModel.class); viewModel.getState().observe(getViewLifecycleOwner(), state -> { SetupStep step = state.getCurrentSetupStep(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/giph/mp4/GiphyMp4Fragment.java b/app/src/main/java/org/thoughtcrime/securesms/giph/mp4/GiphyMp4Fragment.java index d77121a32..a9d88b49c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/giph/mp4/GiphyMp4Fragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/giph/mp4/GiphyMp4Fragment.java @@ -9,7 +9,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.widget.ContentLoadingProgressBar; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; @@ -45,7 +45,7 @@ public class GiphyMp4Fragment extends Fragment { RecyclerView recycler = view.findViewById(R.id.giphy_recycler); ContentLoadingProgressBar progressBar = view.findViewById(R.id.content_loading); TextView nothingFound = view.findViewById(R.id.nothing_found); - GiphyMp4ViewModel viewModel = ViewModelProviders.of(requireActivity(), new GiphyMp4ViewModel.Factory(isForMms)).get(GiphyMp4ViewModel.class); + GiphyMp4ViewModel viewModel = new ViewModelProvider(requireActivity(), new GiphyMp4ViewModel.Factory(isForMms)).get(GiphyMp4ViewModel.class); GiphyMp4Adapter adapter = new GiphyMp4Adapter(viewModel::saveToBlob); List holders = GiphyMp4ProjectionPlayerHolder.injectVideoViews(requireContext(), getViewLifecycleOwner().getLifecycle(), diff --git a/app/src/main/java/org/thoughtcrime/securesms/giph/ui/GiphyActivity.java b/app/src/main/java/org/thoughtcrime/securesms/giph/ui/GiphyActivity.java index f7ba42ad9..0c18dcc16 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/giph/ui/GiphyActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/giph/ui/GiphyActivity.java @@ -9,7 +9,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.thoughtcrime.securesms.PassphraseRequiredActivity; import org.thoughtcrime.securesms.R; @@ -65,7 +65,7 @@ public class GiphyActivity extends PassphraseRequiredActivity implements Keyboar sendType = getIntent().getParcelableExtra(EXTRA_TRANSPORT); text = getIntent().getCharSequenceExtra(EXTRA_TEXT); - giphyMp4ViewModel = ViewModelProviders.of(this, new GiphyMp4ViewModel.Factory(forMms)).get(GiphyMp4ViewModel.class); + giphyMp4ViewModel = new ViewModelProvider(this, new GiphyMp4ViewModel.Factory(forMms)).get(GiphyMp4ViewModel.class); giphyMp4ViewModel.getSaveResultEvents().observe(this, this::handleGiphyMp4SaveResult); initializeToolbar(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addmembers/AddMembersActivity.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addmembers/AddMembersActivity.java index 82e76f5d9..85bf306c3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addmembers/AddMembersActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addmembers/AddMembersActivity.java @@ -7,7 +7,7 @@ import android.view.View; import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -60,8 +60,7 @@ public class AddMembersActivity extends PushContactSelectionActivity { AddMembersViewModel.Factory factory = new AddMembersViewModel.Factory(getGroupId()); done = findViewById(R.id.done); - viewModel = ViewModelProviders.of(this, factory) - .get(AddMembersViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(AddMembersViewModel.class); done.setOnClickListener(v -> viewModel.getDialogStateForSelectedContacts(contactsFragment.getSelectedContacts(), this::displayAlertMessage) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivity.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivity.java index dd3bac6c3..3c55b64be 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/addtogroup/AddToGroupsActivity.java @@ -8,7 +8,7 @@ import android.view.View; import android.widget.Toast; import androidx.annotation.NonNull; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.annimon.stream.Stream; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -73,8 +73,7 @@ public final class AddToGroupsActivity extends ContactSelectionActivity { next.setOnClickListener(v -> handleNextPressed()); AddToGroupViewModel.Factory factory = new AddToGroupViewModel.Factory(getRecipientId()); - viewModel = ViewModelProviders.of(this, factory) - .get(AddToGroupViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(AddToGroupViewModel.class); viewModel.getEvents().observe(this, event -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminActivity.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminActivity.java index 8170c3008..ba45479c7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/chooseadmin/ChooseNewAdminActivity.java @@ -9,7 +9,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.widget.Toolbar; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.annimon.stream.Collectors; import com.annimon.stream.Stream; @@ -101,7 +101,7 @@ public final class ChooseNewAdminActivity extends PassphraseRequiredActivity { } private void initializeViewModel() { - viewModel = ViewModelProviders.of(this, new ChooseNewAdminViewModel.Factory(groupId)).get(ChooseNewAdminViewModel.class); + viewModel = new ViewModelProvider(this, new ChooseNewAdminViewModel.Factory(groupId)).get(ChooseNewAdminViewModel.class); viewModel.getNonAdminFullMembers().observe(this, groupList::setMembers); viewModel.getSelection().observe(this, selection -> done.setVisibility(selection.isEmpty() ? View.GONE : View.VISIBLE)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java index adcc108ec..6a78ae19a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java @@ -20,7 +20,7 @@ import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; @@ -200,7 +200,7 @@ public class AddGroupDetailsFragment extends LoggingFragment { AddGroupDetailsRepository repository = new AddGroupDetailsRepository(requireContext()); AddGroupDetailsViewModel.Factory factory = new AddGroupDetailsViewModel.Factory(Arrays.asList(args.getRecipientIds()), repository); - viewModel = ViewModelProviders.of(this, factory).get(AddGroupDetailsViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(AddGroupDetailsViewModel.class); viewModel.getGroupCreateResult().observe(getViewLifecycleOwner(), this::handleGroupCreateResult); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invite/GroupLinkInviteFriendsBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invite/GroupLinkInviteFriendsBottomSheetDialogFragment.java index f8f625c72..383727f79 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invite/GroupLinkInviteFriendsBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invite/GroupLinkInviteFriendsBottomSheetDialogFragment.java @@ -13,7 +13,7 @@ import androidx.appcompat.widget.SwitchCompat; import androidx.constraintlayout.widget.Group; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; @@ -85,7 +85,7 @@ public final class GroupLinkInviteFriendsBottomSheetDialogFragment extends Botto GroupId.V2 groupId = getGroupId(); GroupLinkInviteFriendsViewModel.Factory factory = new GroupLinkInviteFriendsViewModel.Factory(requireContext().getApplicationContext(), groupId); - GroupLinkInviteFriendsViewModel viewModel = ViewModelProviders.of(this, factory).get(GroupLinkInviteFriendsViewModel.class); + GroupLinkInviteFriendsViewModel viewModel = new ViewModelProvider(this, factory).get(GroupLinkInviteFriendsViewModel.class); viewModel.getGroupInviteLinkAndStatus() .observe(getViewLifecycleOwner(), groupLinkUrlAndStatus -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invited/PendingMemberInvitesFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invited/PendingMemberInvitesFragment.java index 7229f3e06..a4aa07105 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invited/PendingMemberInvitesFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/invited/PendingMemberInvitesFragment.java @@ -8,7 +8,7 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.groups.GroupId; @@ -113,7 +113,7 @@ public class PendingMemberInvitesFragment extends Fragment { PendingMemberInvitesViewModel.Factory factory = new PendingMemberInvitesViewModel.Factory(requireContext(), groupId); - viewModel = ViewModelProviders.of(requireActivity(), factory).get(PendingMemberInvitesViewModel.class); + viewModel = new ViewModelProvider(requireActivity(), factory).get(PendingMemberInvitesViewModel.class); viewModel.getWhoYouInvited().observe(getViewLifecycleOwner(), invitees -> { youInvited.setMembers(invitees); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java index e609e5b12..9f1e9ddce 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java @@ -15,7 +15,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; @@ -97,7 +97,7 @@ public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogF GroupJoinViewModel.Factory factory = new GroupJoinViewModel.Factory(requireContext().getApplicationContext(), getGroupInviteLinkUrl()); - GroupJoinViewModel viewModel = ViewModelProviders.of(this, factory).get(GroupJoinViewModel.class); + GroupJoinViewModel viewModel = new ViewModelProvider(this, factory).get(GroupJoinViewModel.class); viewModel.getGroupDetails().observe(getViewLifecycleOwner(), details -> { groupName.setText(details.getGroupName()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInfoBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInfoBottomSheetDialogFragment.java index 40fe437b5..1496e73e8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInfoBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInfoBottomSheetDialogFragment.java @@ -10,7 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; @@ -78,7 +78,7 @@ public final class GroupsV1MigrationInfoBottomSheetDialogFragment extends Bottom //noinspection ConstantConditions GroupMigrationMembershipChange membershipChange = GroupMigrationMembershipChange.deserialize(getArguments().getString(KEY_MEMBERSHIP_CHANGE)); - this.viewModel = ViewModelProviders.of(this, new GroupsV1MigrationInfoViewModel.Factory(membershipChange)).get(GroupsV1MigrationInfoViewModel.class); + this.viewModel = new ViewModelProvider(this, new GroupsV1MigrationInfoViewModel.Factory(membershipChange)).get(GroupsV1MigrationInfoViewModel.class); viewModel.getPendingMembers().observe(getViewLifecycleOwner(), this::onPendingMembersChanged); viewModel.getDroppedMembers().observe(getViewLifecycleOwner(), this::onDroppedMembersChanged); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java index 8a501a8b5..7b7b2ead1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/migration/GroupsV1MigrationInitiationBottomSheetDialogFragment.java @@ -12,7 +12,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; @@ -86,7 +86,7 @@ public final class GroupsV1MigrationInitiationBottomSheetDialogFragment extends RecipientId groupRecipientId = getArguments().getParcelable(KEY_GROUP_RECIPIENT_ID); //noinspection ConstantConditions - viewModel = ViewModelProviders.of(this, new GroupsV1MigrationInitiationViewModel.Factory(groupRecipientId)).get(GroupsV1MigrationInitiationViewModel.class); + viewModel = new ViewModelProvider(this, new GroupsV1MigrationInitiationViewModel.Factory(groupRecipientId)).get(GroupsV1MigrationInitiationViewModel.class); viewModel.getMigrationState().observe(getViewLifecycleOwner(), this::onMigrationStateChanged); upgradeButton.setEnabled(false); diff --git a/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java b/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java index 3fe581df6..d4ad6b263 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java @@ -18,7 +18,7 @@ import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.annimon.stream.Stream; @@ -74,7 +74,7 @@ public class HelpFragment extends LoggingFragment { } private void initializeViewModels() { - helpViewModel = ViewModelProviders.of(this).get(HelpViewModel.class); + helpViewModel = new ViewModelProvider(this).get(HelpViewModel.class); } private void initializeViews(@NonNull View view) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsDashboardDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsDashboardDialogFragment.java index 7536c5d4b..2ca2855f6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsDashboardDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsDashboardDialogFragment.java @@ -16,7 +16,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.DialogFragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; import com.airbnb.lottie.LottieAnimationView; @@ -125,7 +125,7 @@ public final class InsightsDashboardDialogFragment extends DialogFragment { final InsightsDashboardViewModel.Repository repository = new InsightsRepository(requireContext()); final InsightsDashboardViewModel.Factory factory = new InsightsDashboardViewModel.Factory(repository); - viewModel = ViewModelProviders.of(this, factory).get(InsightsDashboardViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(InsightsDashboardViewModel.class); viewModel.getState().observe(getViewLifecycleOwner(), state -> { updateInsecurePercent(state.getData()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsModalDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsModalDialogFragment.java index 3f4e31d06..af918f090 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsModalDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/insights/InsightsModalDialogFragment.java @@ -14,7 +14,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.ArcProgressBar; @@ -77,7 +77,7 @@ public final class InsightsModalDialogFragment extends DialogFragment { private void initializeViewModel() { final InsightsModalViewModel.Repository repository = new InsightsRepository(requireContext()); final InsightsModalViewModel.Factory factory = new InsightsModalViewModel.Factory(repository); - final InsightsModalViewModel viewModel = ViewModelProviders.of(this, factory).get(InsightsModalViewModel.class); + final InsightsModalViewModel viewModel = new ViewModelProvider(this, factory).get(InsightsModalViewModel.class); viewModel.getState().observe(getViewLifecycleOwner(), state -> { updateInsecurePercent(state.getData()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveRemoteAnnouncementsJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveRemoteAnnouncementsJob.kt index 8d4af0d04..99a2b5eb8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveRemoteAnnouncementsJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RetrieveRemoteAnnouncementsJob.kt @@ -345,7 +345,7 @@ class RetrieveRemoteAnnouncementsJob private constructor(private val force: Bool } for (index in 0 until localeList.size()) { - val locale: Locale = localeList.get(index) + val locale: Locale = localeList.get(index) ?: continue if (locale.language.isNotEmpty()) { if (locale.country.isNotEmpty()) { potentialNoteUrls += "$this/${locale.language}_${locale.country}.json" diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StoryOnboardingDownloadJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/StoryOnboardingDownloadJob.kt index 4f75a4a86..91f11fd78 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StoryOnboardingDownloadJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StoryOnboardingDownloadJob.kt @@ -174,7 +174,7 @@ class StoryOnboardingDownloadJob private constructor(parameters: Parameters) : B } for (index in 0 until localeList.size()) { - val locale: Locale = localeList.get(index) + val locale: Locale = localeList.get(index) ?: continue if (locale.language.isNotEmpty()) { if (locale.country.isNotEmpty()) { potentialOnboardingUrlLanguages += "${locale.language}_${locale.country}" diff --git a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java index 1382f8518..ca06afb6c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java @@ -10,7 +10,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.autofill.HintConstants; import androidx.core.content.ContextCompat; import androidx.core.view.ViewCompat; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.airbnb.lottie.LottieAnimationView; import com.airbnb.lottie.LottieDrawable; @@ -50,7 +50,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment onConfirmPin(e.getUserEntry(), e.getKeyboard(), args.getIsPinChange())); diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogActivity.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogActivity.java index 60b7e0332..7e201f397 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/SubmitDebugLogActivity.java @@ -21,7 +21,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.SearchView; import androidx.core.app.ShareCompat; import androidx.core.text.util.LinkifyCompat; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -69,7 +69,7 @@ public class SubmitDebugLogActivity extends BaseActivity implements SubmitDebugL getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle(R.string.HelpSettingsFragment__debug_log); - this.viewModel = ViewModelProviders.of(this, new SubmitDebugLogViewModel.Factory()).get(SubmitDebugLogViewModel.class); + this.viewModel = new ViewModelProvider(this, new SubmitDebugLogViewModel.Factory()).get(SubmitDebugLogViewModel.class); initView(); initViewModel(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewViewModel.java index e5cd0c22d..659a08750 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewViewModel.java @@ -7,7 +7,7 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.SavedStateHandle; import androidx.lifecycle.SavedStateViewModelFactory; import androidx.lifecycle.ViewModel; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.thoughtcrime.securesms.database.MediaDatabase.Sorting; @@ -40,6 +40,6 @@ public class MediaOverviewViewModel extends ViewModel { static MediaOverviewViewModel getMediaOverviewViewModel(@NonNull FragmentActivity activity) { SavedStateViewModelFactory savedStateViewModelFactory = new SavedStateViewModelFactory(activity.getApplication(), activity); - return ViewModelProviders.of(activity, savedStateViewModelFactory).get(MediaOverviewViewModel.class); + return new ViewModelProvider(activity, savedStateViewModelFactory).get(MediaOverviewViewModel.class); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/Camera1Fragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/Camera1Fragment.java index 5edf19609..b8c93c6cd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/Camera1Fragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/Camera1Fragment.java @@ -359,7 +359,7 @@ public class Camera1Fragment extends LoggingFragment implements CameraFragment, private void initializeViewFinderAndControlsPositioning() { CardView cameraCard = requireView().findViewById(R.id.camera_preview_parent); View controls = requireView().findViewById(R.id.camera_controls_container); - CameraDisplay cameraDisplay = CameraDisplay.getDisplay(requireView()); + CameraDisplay cameraDisplay = CameraDisplay.getDisplay(requireActivity()); if (!cameraDisplay.getRoundViewFinderCorners()) { cameraCard.setRadius(0f); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactSelectionFragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactSelectionFragment.java index e19491436..e593b5a3d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactSelectionFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraContactSelectionFragment.java @@ -18,7 +18,7 @@ import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.Toolbar; import androidx.constraintlayout.widget.Group; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -59,8 +59,9 @@ public class CameraContactSelectionFragment extends LoggingFragment implements C super.onCreate(savedInstanceState); setHasOptionsMenu(true); - this.contactViewModel = ViewModelProviders.of(requireActivity(), new CameraContactSelectionViewModel.Factory(new CameraContactsRepository(requireContext()))) - .get(CameraContactSelectionViewModel.class); + CameraContactSelectionViewModel.Factory factory = new CameraContactSelectionViewModel.Factory(new CameraContactsRepository(requireContext())); + + this.contactViewModel = new ViewModelProvider(requireActivity(), factory).get(CameraContactSelectionViewModel.class); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraDisplay.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraDisplay.kt index 28352c004..8e76de6ec 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraDisplay.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraDisplay.kt @@ -1,10 +1,10 @@ package org.thoughtcrime.securesms.mediasend +import android.app.Activity import android.content.res.Resources -import android.view.View import androidx.annotation.Dimension import androidx.annotation.Px -import androidx.window.WindowManager +import androidx.window.layout.WindowMetricsCalculator import org.signal.core.util.dp import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.stories.Stories @@ -110,9 +110,9 @@ enum class CameraDisplay( } @JvmStatic - fun getDisplay(view: View): CameraDisplay { - val windowManager = WindowManager(view.context) - val windowMetrics = windowManager.getCurrentWindowMetrics() + fun getDisplay(activity: Activity): CameraDisplay { + val windowMetricsCalculator = WindowMetricsCalculator.getOrCreate() + val windowMetrics = windowMetricsCalculator.computeCurrentWindowMetrics(activity) val width = windowMetrics.bounds.width() val height = windowMetrics.bounds.height() val aspectRatio = width.toFloat() / height diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraXFragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraXFragment.java index f047e9343..1a3f25f7c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraXFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/CameraXFragment.java @@ -281,7 +281,7 @@ public class CameraXFragment extends LoggingFragment implements CameraFragment { private void initializeViewFinderAndControlsPositioning() { CardView cameraCard = requireView().findViewById(R.id.camerax_camera_parent); View controls = requireView().findViewById(R.id.camerax_controls_container); - CameraDisplay cameraDisplay = CameraDisplay.getDisplay(requireView()); + CameraDisplay cameraDisplay = CameraDisplay.getDisplay(requireActivity()); if (!cameraDisplay.getRoundViewFinderCorners()) { cameraCard.setRadius(0f); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt index 63f630091..f102b59e6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionActivity.kt @@ -97,7 +97,7 @@ class MediaSelectionActivity : viewModel = ViewModelProvider(this, factory)[MediaSelectionViewModel::class.java] val textStoryToggle: ConstraintLayout = findViewById(R.id.switch_widget) - val cameraDisplay = CameraDisplay.getDisplay(textStoryToggle) + val cameraDisplay = CameraDisplay.getDisplay(this) textStoryToggle.updateLayoutParams { bottomMargin = cameraDisplay.getToggleBottomMargin() diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionViewModel.kt index 23e472800..dff93601e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionViewModel.kt @@ -25,7 +25,6 @@ import org.thoughtcrime.securesms.mms.SentMediaQuality import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.scribbles.ImageEditorFragment import org.thoughtcrime.securesms.stories.Stories -import org.thoughtcrime.securesms.util.SingleLiveEvent import org.thoughtcrime.securesms.util.Util import org.thoughtcrime.securesms.util.livedata.Store import java.util.Collections @@ -60,7 +59,7 @@ class MediaSelectionViewModel( private val internalHudCommands = PublishSubject.create() - val mediaErrors: SingleLiveEvent = SingleLiveEvent() + val mediaErrors: PublishSubject = PublishSubject.create() val hudCommands: Observable = internalHudCommands private val disposables = CompositeDisposable() @@ -154,7 +153,7 @@ class MediaSelectionViewModel( } if (filterResult.filterError != null) { - mediaErrors.postValue(filterResult.filterError) + mediaErrors.onNext(filterResult.filterError) } } ) @@ -230,7 +229,7 @@ class MediaSelectionViewModel( } if (newMediaList.isEmpty() && !suppressEmptyError) { - mediaErrors.postValue(MediaValidator.FilterError.NoItems()) + mediaErrors.onNext(MediaValidator.FilterError.NoItems()) } selectedMediaSubject.onNext(newMediaList) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaSelectionGalleryFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaSelectionGalleryFragment.kt index 79b415cd7..47589bf61 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaSelectionGalleryFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaSelectionGalleryFragment.kt @@ -9,6 +9,7 @@ import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.ItemTouchHelper import app.cash.exhaustive.Exhaustive +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.mediasend.Media import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionNavigator @@ -17,6 +18,7 @@ import org.thoughtcrime.securesms.mediasend.v2.MediaSelectionViewModel import org.thoughtcrime.securesms.mediasend.v2.MediaValidator import org.thoughtcrime.securesms.mediasend.v2.review.MediaSelectionItemTouchHelper import org.thoughtcrime.securesms.permissions.Permissions +import org.thoughtcrime.securesms.util.LifecycleDisposable private const val MEDIA_GALLERY_TAG = "MEDIA_GALLERY" @@ -24,6 +26,8 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med private lateinit var mediaGalleryFragment: MediaGalleryFragment + private val lifecycleDisposable = LifecycleDisposable() + private val navigator = MediaSelectionNavigator( toCamera = R.id.action_mediaGalleryFragment_to_mediaCaptureFragment ) @@ -52,7 +56,10 @@ class MediaSelectionGalleryFragment : Fragment(R.layout.fragment_container), Med ) } - sharedViewModel.mediaErrors.observe(viewLifecycleOwner, this::handleError) + lifecycleDisposable.bindTo(viewLifecycleOwner) + lifecycleDisposable += sharedViewModel.mediaErrors + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(this::handleError) } private fun handleError(error: MediaValidator.FilterError) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt index ca7a9a12b..85dc34c3e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt @@ -23,6 +23,7 @@ import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import app.cash.exhaustive.Exhaustive +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey import org.thoughtcrime.securesms.conversation.MessageSendType @@ -238,7 +239,10 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) { computeViewStateAndAnimate(state) } - sharedViewModel.mediaErrors.observe(viewLifecycleOwner, this::handleMediaValidatorFilterError) + disposables.bindTo(viewLifecycleOwner) + disposables += sharedViewModel.mediaErrors + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(this::handleMediaValidatorFilterError) requireActivity().onBackPressedDispatcher.addCallback( viewLifecycleOwner, diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/QualitySelectorBottomSheetDialog.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/QualitySelectorBottomSheetDialog.java index 52e1a35d6..602142ff6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/QualitySelectorBottomSheetDialog.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/QualitySelectorBottomSheetDialog.java @@ -10,7 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; @@ -63,7 +63,7 @@ public final class QualitySelectorBottomSheetDialog extends BottomSheetDialogFra standard.setOnClickListener(listener); high.setOnClickListener(listener); - viewModel = ViewModelProviders.of(requireActivity()).get(MediaSelectionViewModel.class); + viewModel = new ViewModelProvider(requireActivity()).get(MediaSelectionViewModel.class); viewModel.getState().observe(getViewLifecycleOwner(), this::updateQuality); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/TextStoryPostCreationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/TextStoryPostCreationFragment.kt index 84f484fab..d633d3fb9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/TextStoryPostCreationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/text/TextStoryPostCreationFragment.kt @@ -181,7 +181,7 @@ class TextStoryPostCreationFragment : Fragment(R.layout.stories_text_post_creati } private fun initializeScenePositioning() { - val cameraDisplay = CameraDisplay.getDisplay(requireView()) + val cameraDisplay = CameraDisplay.getDisplay(requireActivity()) if (!cameraDisplay.roundViewFinderCorners) { binding.storyTextPostCard.radius = 0f diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsFragment.java b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsFragment.java index 6bc527c10..ecb7fab57 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageDetailsFragment.java @@ -8,7 +8,7 @@ import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; import org.thoughtcrime.securesms.R; @@ -106,7 +106,7 @@ public final class MessageDetailsFragment extends FullScreenDialogFragment { final Long messageId = requireArguments().getLong(MESSAGE_ID_EXTRA, -1); final Factory factory = new Factory(recipientId, type, messageId); - viewModel = ViewModelProviders.of(this, factory).get(MessageDetailsViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(MessageDetailsViewModel.class); viewModel.getMessageDetails().observe(this, details -> { if (details == null) { dismissAllowingStateLoss(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/CalleeMustAcceptMessageRequestActivity.java b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/CalleeMustAcceptMessageRequestActivity.java index 24259b78b..9d2956780 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/CalleeMustAcceptMessageRequestActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/CalleeMustAcceptMessageRequestActivity.java @@ -12,7 +12,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.thoughtcrime.securesms.BaseActivity; import org.thoughtcrime.securesms.R; @@ -66,7 +66,7 @@ public class CalleeMustAcceptMessageRequestActivity extends BaseActivity { RecipientId recipientId = getIntent().getParcelableExtra(RECIPIENT_ID_EXTRA); CalleeMustAcceptMessageRequestViewModel.Factory factory = new CalleeMustAcceptMessageRequestViewModel.Factory(recipientId); - CalleeMustAcceptMessageRequestViewModel viewModel = ViewModelProviders.of(this, factory).get(CalleeMustAcceptMessageRequestViewModel.class); + CalleeMustAcceptMessageRequestViewModel viewModel = new ViewModelProvider(this, factory).get(CalleeMustAcceptMessageRequestViewModel.class); viewModel.getRecipient().observe(this, recipient -> { description.setText(getString(R.string.CalleeMustAcceptMessageRequestDialogFragment__s_will_get_a_message_request_from_you, recipient.getDisplayName(this))); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/confirm/PaymentsRecoveryPhraseConfirmFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/confirm/PaymentsRecoveryPhraseConfirmFragment.java index d49027206..7b6609363 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/confirm/PaymentsRecoveryPhraseConfirmFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/confirm/PaymentsRecoveryPhraseConfirmFragment.java @@ -15,7 +15,7 @@ import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import com.google.android.material.textfield.TextInputLayout; @@ -57,7 +57,7 @@ public class PaymentsRecoveryPhraseConfirmFragment extends Fragment { DrawableCompat.setTint(validWordCheckMark, ContextCompat.getColor(requireContext(), R.color.signal_accent_green)); DrawableCompat.setTint(invalidWordX, ContextCompat.getColor(requireContext(), R.color.signal_alert_primary)); - PaymentsRecoveryPhraseConfirmViewModel viewModel = ViewModelProviders.of(requireActivity()).get(PaymentsRecoveryPhraseConfirmViewModel.class); + PaymentsRecoveryPhraseConfirmViewModel viewModel = new ViewModelProvider(requireActivity()).get(PaymentsRecoveryPhraseConfirmViewModel.class); toolbar.setNavigationOnClickListener(v -> Navigation.findNavController(requireView()).popBackStack()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/entry/PaymentsRecoveryEntryFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/entry/PaymentsRecoveryEntryFragment.java index 6e4953a23..46a864123 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/entry/PaymentsRecoveryEntryFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/entry/PaymentsRecoveryEntryFragment.java @@ -10,7 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import com.google.android.material.textfield.MaterialAutoCompleteTextView; @@ -35,7 +35,7 @@ public class PaymentsRecoveryEntryFragment extends Fragment { TextInputLayout wrapper = view.findViewById(R.id.payments_recovery_entry_fragment_word_wrapper); MaterialAutoCompleteTextView word = view.findViewById(R.id.payments_recovery_entry_fragment_word); View next = view.findViewById(R.id.payments_recovery_entry_fragment_next); - PaymentsRecoveryEntryViewModel viewModel = ViewModelProviders.of(this).get(PaymentsRecoveryEntryViewModel.class); + PaymentsRecoveryEntryViewModel viewModel = new ViewModelProvider(this).get(PaymentsRecoveryEntryViewModel.class); toolbar.setNavigationOnClickListener(t -> Navigation.findNavController(view).popBackStack(R.id.paymentsHome, false)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseFragment.java index 7f22de226..2e74dc8f9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/backup/phrase/PaymentsRecoveryPhraseFragment.java @@ -15,7 +15,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -110,7 +110,7 @@ public class PaymentsRecoveryPhraseFragment extends Fragment { edit.setVisibility(View.VISIBLE); copy.setVisibility(View.GONE); - PaymentsRecoveryPhraseViewModel viewModel = ViewModelProviders.of(this).get(PaymentsRecoveryPhraseViewModel.class); + PaymentsRecoveryPhraseViewModel viewModel = new ViewModelProvider(this).get(PaymentsRecoveryPhraseViewModel.class); next.setOnClickListener(v -> viewModel.onSubmit(words)); edit.setOnClickListener(v -> Navigation.findNavController(v).popBackStack()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java index 20936cd7b..708a4caf5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/confirm/ConfirmPaymentFragment.java @@ -21,7 +21,7 @@ import androidx.biometric.BiometricManager; import androidx.biometric.BiometricPrompt; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.fragment.NavHostFragment; import androidx.recyclerview.widget.RecyclerView; @@ -96,7 +96,7 @@ public class ConfirmPaymentFragment extends BottomSheetDialogFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { ConfirmPaymentViewModel.Factory factory = new ConfirmPaymentViewModel.Factory(ConfirmPaymentFragmentArgs.fromBundle(requireArguments()).getCreatePaymentDetails()); - viewModel = ViewModelProviders.of(this, factory).get(ConfirmPaymentViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(ConfirmPaymentViewModel.class); RecyclerView list = view.findViewById(R.id.confirm_payment_fragment_list); ConfirmPaymentAdapter adapter = new ConfirmPaymentAdapter(new Callbacks()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/deactivate/DeactivateWalletFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/deactivate/DeactivateWalletFragment.java index 442c04806..74fa2329f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/deactivate/DeactivateWalletFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/deactivate/DeactivateWalletFragment.java @@ -12,7 +12,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -41,7 +41,7 @@ public class DeactivateWalletFragment extends Fragment { notice.setLearnMoreVisible(true); notice.setLink(getString(R.string.DeactivateWalletFragment__learn_more__we_recommend_transferring_your_funds)); - DeactivateWalletViewModel viewModel = ViewModelProviders.of(this).get(DeactivateWalletViewModel.class); + DeactivateWalletViewModel viewModel = new ViewModelProvider(this).get(DeactivateWalletViewModel.class); viewModel.getBalance().observe(getViewLifecycleOwner(), balance::setMoney); viewModel.getDeactivationResults().observe(getViewLifecycleOwner(), r -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeFragment.java index 63d23a945..52544a573 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsHomeFragment.java @@ -13,7 +13,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import androidx.navigation.fragment.NavHostFragment; import androidx.recyclerview.widget.RecyclerView; @@ -119,7 +119,7 @@ public class PaymentsHomeFragment extends LoggingFragment { PaymentsHomeAdapter adapter = new PaymentsHomeAdapter(new HomeCallbacks()); recycler.setAdapter(adapter); - viewModel = ViewModelProviders.of(this, new PaymentsHomeViewModel.Factory()).get(PaymentsHomeViewModel.class); + viewModel = new ViewModelProvider(this, new PaymentsHomeViewModel.Factory()).get(PaymentsHomeViewModel.class); viewModel.getList().observe(getViewLifecycleOwner(), list -> { boolean hadPaymentItems = Stream.of(adapter.getCurrentList()).anyMatch(model -> model instanceof PaymentItem); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsPagerItemFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsPagerItemFragment.java index 0a176e3c7..30762809e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsPagerItemFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/PaymentsPagerItemFragment.java @@ -6,7 +6,7 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.fragment.NavHostFragment; import androidx.recyclerview.widget.RecyclerView; @@ -50,7 +50,7 @@ public class PaymentsPagerItemFragment extends LoggingFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { PaymentsPagerItemViewModel.Factory factory = new PaymentsPagerItemViewModel.Factory(PaymentCategory.forCode(requireArguments().getString(PAYMENT_CATEGORY))); - viewModel = ViewModelProviders.of(this, factory).get(PaymentsPagerItemViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(PaymentsPagerItemViewModel.class); RecyclerView recycler = view.findViewById(R.id.payments_activity_pager_item_fragment_recycler); PaymentsHomeAdapter adapter = new PaymentsHomeAdapter(new Callbacks()); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyFragment.java index 836fdcd02..e48103447 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/SetCurrencyFragment.java @@ -6,7 +6,7 @@ import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import androidx.recyclerview.widget.RecyclerView; @@ -31,7 +31,7 @@ public final class SetCurrencyFragment extends LoggingFragment { toolbar.setNavigationOnClickListener(v -> Navigation.findNavController(v).popBackStack()); - SetCurrencyViewModel viewModel = ViewModelProviders.of(this, new SetCurrencyViewModel.Factory()).get(SetCurrencyViewModel.class); + SetCurrencyViewModel viewModel = new ViewModelProvider(this, new SetCurrencyViewModel.Factory()).get(SetCurrencyViewModel.class); BaseSettingsAdapter adapter = new BaseSettingsAdapter(); adapter.configureSingleSelect(selection -> viewModel.select((Currency) selection)); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/addmoney/PaymentsAddMoneyFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/addmoney/PaymentsAddMoneyFragment.java index f83733046..913473e4c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/addmoney/PaymentsAddMoneyFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/addmoney/PaymentsAddMoneyFragment.java @@ -11,7 +11,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import org.thoughtcrime.securesms.LoggingFragment; @@ -28,7 +28,7 @@ public final class PaymentsAddMoneyFragment extends LoggingFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - PaymentsAddMoneyViewModel viewModel = ViewModelProviders.of(this, new PaymentsAddMoneyViewModel.Factory()).get(PaymentsAddMoneyViewModel.class); + PaymentsAddMoneyViewModel viewModel = new ViewModelProvider(this, new PaymentsAddMoneyViewModel.Factory()).get(PaymentsAddMoneyViewModel.class); Toolbar toolbar = view.findViewById(R.id.payments_add_money_toolbar); QrView qrImageView = view.findViewById(R.id.payments_add_money_qr_image); diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/details/PaymentDetailsFragment.java b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/details/PaymentDetailsFragment.java index 65cc38b22..2df664400 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/details/PaymentDetailsFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/preferences/details/PaymentDetailsFragment.java @@ -17,7 +17,7 @@ import androidx.appcompat.widget.Toolbar; import androidx.constraintlayout.widget.Group; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentActivity; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import org.signal.core.util.logging.Log; @@ -99,7 +99,7 @@ public final class PaymentDetailsFragment extends LoggingFragment { sentFeeAmount.setVisibility(View.VISIBLE); } } else { - PaymentsDetailsViewModel viewModel = ViewModelProviders.of(this, new PaymentsDetailsViewModel.Factory(details.requireUuid())).get(PaymentsDetailsViewModel.class); + PaymentsDetailsViewModel viewModel = new ViewModelProvider(this, new PaymentsDetailsViewModel.Factory(details.requireUuid())).get(PaymentsDetailsViewModel.class); viewModel.getViewState() .observe(getViewLifecycleOwner(), state -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java b/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java index 864cc75af..1bdcb0087 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/pin/PinRestoreEntryFragment.java @@ -18,7 +18,7 @@ import androidx.annotation.StringRes; import androidx.appcompat.app.AlertDialog; import androidx.autofill.HintConstants; import androidx.core.view.ViewCompat; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import org.signal.core.util.logging.Log; @@ -111,7 +111,7 @@ public class PinRestoreEntryFragment extends LoggingFragment { } private void initViewModel() { - viewModel = ViewModelProviders.of(this).get(PinRestoreViewModel.class); + viewModel = new ViewModelProvider(this).get(PinRestoreViewModel.class); viewModel.getTriesRemaining().observe(getViewLifecycleOwner(), this::presentTriesRemaining); viewModel.getEvent().observe(getViewLifecycleOwner(), this::presentEvent); diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/ApplicationPreferencesViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/ApplicationPreferencesViewModel.java index 0e89c6360..1e287dc2c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/ApplicationPreferencesViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/ApplicationPreferencesViewModel.java @@ -8,7 +8,7 @@ import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.signal.core.util.concurrent.SignalExecutors; import org.thoughtcrime.securesms.R; @@ -27,7 +27,7 @@ public class ApplicationPreferencesViewModel extends ViewModel { } static ApplicationPreferencesViewModel getApplicationPreferencesViewModel(@NonNull FragmentActivity activity) { - return ViewModelProviders.of(activity).get(ApplicationPreferencesViewModel.class); + return new ViewModelProvider(activity).get(ApplicationPreferencesViewModel.class); } void refreshStorageBreakdown(@NonNull Context context) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java index 6f3e77517..2539a165e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java @@ -14,7 +14,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.widget.SwitchCompat; import androidx.core.app.ShareCompat; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.contactshare.SimpleTextWatcher; @@ -89,7 +89,7 @@ public class EditProxyFragment extends Fragment { } private void initViewModel() { - viewModel = ViewModelProviders.of(this).get(EditProxyViewModel.class); + viewModel = new ViewModelProvider(this).get(EditProxyViewModel.class); viewModel.getUiState().observe(getViewLifecycleOwner(), this::presentUiState); viewModel.getProxyState().observe(getViewLifecycleOwner(), this::presentProxyState); diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditAboutFragment.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditAboutFragment.java index f0f1e4a7d..8f527b957 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditAboutFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditAboutFragment.java @@ -16,7 +16,7 @@ import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.ListAdapter; @@ -144,7 +144,7 @@ public class EditAboutFragment extends Fragment implements ManageProfileActivity } private void initializeViewModel() { - this.viewModel = ViewModelProviders.of(this).get(EditAboutViewModel.class); + this.viewModel = new ViewModelProvider(this).get(EditAboutViewModel.class); viewModel.getSaveState().observe(getViewLifecycleOwner(), this::presentSaveState); viewModel.getEvents().observe(getViewLifecycleOwner(), this::presentEvent); diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameFragment.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameFragment.java index 4108f7a5f..f12ffbdd8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/manage/EditProfileNameFragment.java @@ -13,7 +13,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import org.signal.core.util.EditTextUtil; @@ -76,7 +76,7 @@ public class EditProfileNameFragment extends Fragment { } private void initializeViewModel() { - this.viewModel = ViewModelProviders.of(this).get(EditProfileNameViewModel.class); + this.viewModel = new ViewModelProvider(this).get(EditProfileNameViewModel.class); viewModel.getSaveState().observe(getViewLifecycleOwner(), this::presentSaveState); viewModel.getEvents().observe(getViewLifecycleOwner(), this::presentEvent); diff --git a/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardDialogFragment.java index fae3b8310..542bf28e8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/profiles/spoofing/ReviewCardDialogFragment.java @@ -12,7 +12,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.PluralsRes; import androidx.annotation.StringRes; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; import org.thoughtcrime.securesms.R; @@ -99,7 +99,7 @@ public class ReviewCardDialogFragment extends FullScreenDialogFragment { ReviewCardRepository repository = getRepository(); ReviewCardViewModel.Factory factory = new ReviewCardViewModel.Factory(repository, getGroupId()); - viewModel = ViewModelProviders.of(this, factory).get(ReviewCardViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(ReviewCardViewModel.class); } private @StringRes int getDescriptionResId() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/proxy/ProxyBottomSheetFragment.java b/app/src/main/java/org/thoughtcrime/securesms/proxy/ProxyBottomSheetFragment.java index b47229e80..2acc6e42c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/proxy/ProxyBottomSheetFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/proxy/ProxyBottomSheetFragment.java @@ -12,7 +12,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -78,7 +78,7 @@ public final class ProxyBottomSheetFragment extends BottomSheetDialogFragment { } private void initViewModel() { - this.viewModel = ViewModelProviders.of(this).get(EditProxyViewModel.class); + this.viewModel = new ViewModelProvider(this).get(EditProxyViewModel.class); viewModel.getSaveState().observe(getViewLifecycleOwner(), this::presentSaveState); viewModel.getEvents().observe(getViewLifecycleOwner(), this::presentEvents); diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiBottomSheetDialogFragment.java index 2b544c1a6..172b93fb5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ReactWithAnyEmojiBottomSheetDialogFragment.java @@ -16,20 +16,14 @@ import android.widget.FrameLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.core.view.ViewCompat; import androidx.fragment.app.DialogFragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.loader.app.LoaderManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.google.android.material.bottomsheet.BottomSheetDialog; -import com.google.android.material.bottomsheet.BottomSheetDialogFragment; -import com.google.android.material.shape.CornerFamily; -import com.google.android.material.shape.MaterialShapeDrawable; -import com.google.android.material.shape.ShapeAppearanceModel; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment; @@ -41,7 +35,6 @@ import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageCategoriesAdap import org.thoughtcrime.securesms.keyboard.emoji.EmojiKeyboardPageCategoryMappingModel; import org.thoughtcrime.securesms.keyboard.emoji.KeyboardPageSearchView; import org.thoughtcrime.securesms.reactions.edit.EditReactionsActivity; -import org.thoughtcrime.securesms.util.FullscreenHelper; import org.thoughtcrime.securesms.util.LifecycleDisposable; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.ViewUtil; @@ -245,7 +238,7 @@ public final class ReactWithAnyEmojiBottomSheetDialogFragment extends FixedRound ReactWithAnyEmojiRepository repository = new ReactWithAnyEmojiRepository(requireContext(), args.getString(ARG_RECENT_KEY, REACTION_STORAGE_KEY)); ReactWithAnyEmojiViewModel.Factory factory = new ReactWithAnyEmojiViewModel.Factory(repository, args.getLong(ARG_MESSAGE_ID), args.getBoolean(ARG_IS_MMS)); - viewModel = ViewModelProviders.of(this, factory).get(ReactWithAnyEmojiViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(ReactWithAnyEmojiViewModel.class); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/qr/GroupLinkShareQrDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/qr/GroupLinkShareQrDialogFragment.java index 137e8ba00..e3cf416bf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/qr/GroupLinkShareQrDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/qr/GroupLinkShareQrDialogFragment.java @@ -16,7 +16,7 @@ import androidx.appcompat.widget.Toolbar; import androidx.core.app.ShareCompat; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentManager; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; @@ -78,7 +78,7 @@ public class GroupLinkShareQrDialogFragment extends DialogFragment { GroupId.V2 groupId = GroupId.parseOrThrow(Objects.requireNonNull(arguments.getString(ARG_GROUP_ID))).requireV2(); GroupLinkShareQrViewModel.Factory factory = new GroupLinkShareQrViewModel.Factory(groupId); - viewModel = ViewModelProviders.of(this, factory).get(GroupLinkShareQrViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(GroupLinkShareQrViewModel.class); } private void initializeViews(@NonNull View view) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/CaptchaFragment.java b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/CaptchaFragment.java index 414bd1c1b..0b158b1e8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/CaptchaFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/CaptchaFragment.java @@ -10,7 +10,7 @@ import android.webkit.WebViewClient; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.fragment.NavHostFragment; import org.thoughtcrime.securesms.BuildConfig; @@ -64,7 +64,8 @@ public final class CaptchaFragment extends LoggingFragment { } if (provider == null) { - viewModel = ViewModelProviders.of(requireActivity()).get(RegistrationViewModel.class); + viewModel = new ViewModelProvider( + requireActivity()).get(RegistrationViewModel.class); } else { viewModel = provider.get(this); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/ChooseBackupFragment.java b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/ChooseBackupFragment.java index 1115d6e10..d5591e759 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/ChooseBackupFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/ChooseBackupFragment.java @@ -15,7 +15,6 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.RequiresApi; import androidx.core.text.HtmlCompat; import androidx.navigation.Navigation; @@ -60,7 +59,6 @@ public class ChooseBackupFragment extends LoggingFragment { } } - @RequiresApi(21) private void onChooseBackupSelected(@NonNull View view) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/EnterSmsCodeFragment.java b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/EnterSmsCodeFragment.java index 0f0cd5994..70f0aa087 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/EnterSmsCodeFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/fragments/EnterSmsCodeFragment.java @@ -1,7 +1,7 @@ package org.thoughtcrime.securesms.registration.fragments; import androidx.annotation.NonNull; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import androidx.navigation.fragment.NavHostFragment; @@ -24,7 +24,7 @@ public final class EnterSmsCodeFragment extends BaseEnterSmsCodeFragment { if (message == null) return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorStickerSelectActivity.java b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorStickerSelectActivity.java index f827683b9..fa283071b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorStickerSelectActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorStickerSelectActivity.java @@ -9,7 +9,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatDelegate; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.signal.core.util.concurrent.SignalExecutors; import org.thoughtcrime.securesms.R; @@ -37,7 +37,7 @@ public final class ImageEditorStickerSelectActivity extends AppCompatActivity im super.onCreate(savedInstanceState); setContentView(R.layout.scribble_select_new_sticker_activity); - KeyboardPagerViewModel keyboardPagerViewModel = ViewModelProviders.of(this).get(KeyboardPagerViewModel.class); + KeyboardPagerViewModel keyboardPagerViewModel = new ViewModelProvider(this).get(KeyboardPagerViewModel.class); keyboardPagerViewModel.setOnlyPage(KeyboardPage.STICKER); MediaKeyboard mediaKeyboard = findViewById(R.id.emoji_drawer); diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.java index 09ec330a2..593fa5630 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerManagementActivity.java @@ -6,7 +6,7 @@ import android.os.Bundle; import android.view.MenuItem; import androidx.annotation.NonNull; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -124,7 +124,7 @@ public final class StickerManagementActivity extends PassphraseRequiredActivity private void initViewModel() { StickerManagementRepository repository = new StickerManagementRepository(this); - viewModel = ViewModelProviders.of(this, new StickerManagementViewModel.Factory(getApplication(), repository)).get(StickerManagementViewModel.class); + viewModel = new ViewModelProvider(this, new StickerManagementViewModel.Factory(getApplication(), repository)).get(StickerManagementViewModel.class); viewModel.init(); viewModel.getStickerPacks().observe(this, packResult -> { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java index 5d00174a0..327ee729d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerPackPreviewActivity.java @@ -12,7 +12,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -175,10 +175,10 @@ public final class StickerPackPreviewActivity extends PassphraseRequiredActivity } private void initViewModel(@NonNull String packId, @NonNull String packKey) { - viewModel = ViewModelProviders.of(this, new StickerPackPreviewViewModel.Factory(getApplication(), + viewModel = new ViewModelProvider(this, new StickerPackPreviewViewModel.Factory(getApplication(), new StickerPackPreviewRepository(this), - new StickerManagementRepository(this))) - .get(StickerPackPreviewViewModel.class); + new StickerManagementRepository(this)) + ).get(StickerPackPreviewViewModel.class); viewModel.getStickerManifest(packId, packKey).observe(this, manifest -> { if (manifest == null) return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/group/GroupStorySettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/group/GroupStorySettingsViewModel.kt index 2fc8f5603..85233790b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/settings/group/GroupStorySettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/settings/group/GroupStorySettingsViewModel.kt @@ -38,7 +38,7 @@ class GroupStorySettingsViewModel(private val groupId: GroupId) : ViewModel() { } class Factory(private val parcelableGroupId: ParcelableGroupId) : ViewModelProvider.Factory { - override fun create(modelClass: Class): T { + override fun create(modelClass: Class): T { return modelClass.cast(GroupStorySettingsViewModel(ParcelableGroupId.get(parcelableGroupId)!!)) as T } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/LocaleUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/util/LocaleUtil.kt index 0cf2a6dd3..652dd230c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/LocaleUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/LocaleUtil.kt @@ -25,7 +25,7 @@ object LocaleUtil { } for (index in 0 until localeList.size()) { - locales += localeList.get(index) + locales += localeList.get(index) ?: continue } return locales diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperActivity.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperActivity.java index 5965d4236..8c551d3b8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperActivity.java @@ -6,7 +6,7 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.NavGraph; import androidx.navigation.Navigation; @@ -35,7 +35,7 @@ public final class ChatWallpaperActivity extends PassphraseRequiredActivity { @Override protected void onCreate(Bundle savedInstanceState, boolean ready) { ChatWallpaperViewModel.Factory factory = new ChatWallpaperViewModel.Factory(getIntent().getParcelableExtra(EXTRA_RECIPIENT_ID)); - ViewModelProviders.of(this, factory).get(ChatWallpaperViewModel.class); + new ViewModelProvider(this, factory).get(ChatWallpaperViewModel.class); dynamicTheme.onCreate(this); setContentView(R.layout.chat_wallpaper_activity); diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperFragment.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperFragment.java index f84ccd0b5..556c777c0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperFragment.java @@ -20,7 +20,7 @@ import androidx.core.content.ContextCompat; import androidx.core.widget.ImageViewCompat; import androidx.core.widget.TextViewCompat; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -50,7 +50,7 @@ public class ChatWallpaperFragment extends Fragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - viewModel = ViewModelProviders.of(requireActivity()).get(ChatWallpaperViewModel.class); + viewModel = new ViewModelProvider(requireActivity()).get(ChatWallpaperViewModel.class); AvatarImageView portrait = view.findViewById(R.id.chat_wallpaper_preview_top_bar_portrait); Toolbar toolbar = view.findViewById(R.id.toolbar); diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperSelectionFragment.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperSelectionFragment.java index 16f0714d0..6c630ccd3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperSelectionFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/ChatWallpaperSelectionFragment.java @@ -13,7 +13,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; import androidx.recyclerview.widget.RecyclerView; @@ -52,7 +52,7 @@ public class ChatWallpaperSelectionFragment extends Fragment { recyclerView.setAdapter(adapter); - viewModel = ViewModelProviders.of(requireActivity()).get(ChatWallpaperViewModel.class); + viewModel = new ViewModelProvider(requireActivity()).get(ChatWallpaperViewModel.class); viewModel.getWallpapers().observe(getViewLifecycleOwner(), adapter::submitList); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/crop/WallpaperCropActivity.java b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/crop/WallpaperCropActivity.java index d9bc54686..79292e688 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/wallpaper/crop/WallpaperCropActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/wallpaper/crop/WallpaperCropActivity.java @@ -20,7 +20,7 @@ import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.widget.SwitchCompat; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import org.signal.core.util.logging.Log; import org.signal.imageeditor.core.ImageEditorView; @@ -84,7 +84,7 @@ public final class WallpaperCropActivity extends BaseActivity { Log.i(TAG, "Cropping wallpaper for " + (recipientId == null ? "default wallpaper" : recipientId)); WallpaperCropViewModel.Factory factory = new WallpaperCropViewModel.Factory(recipientId); - viewModel = ViewModelProviders.of(this, factory).get(WallpaperCropViewModel.class); + viewModel = new ViewModelProvider(this, factory).get(WallpaperCropViewModel.class); imageEditor = findViewById(R.id.image_editor); View sentBubble = findViewById(R.id.preview_bubble_2); diff --git a/app/src/main/res/layout/conversation_input_panel.xml b/app/src/main/res/layout/conversation_input_panel.xml index adffcf5d5..252b3a929 100644 --- a/app/src/main/res/layout/conversation_input_panel.xml +++ b/app/src/main/res/layout/conversation_input_panel.xml @@ -91,7 +91,7 @@ android:contentDescription="@string/conversation_activity__emoji_toggle_description" android:paddingStart="12dp" android:paddingEnd="12dp" - android:tint="@color/signal_colorOnSurfaceVariant" /> + app:tint="@color/signal_colorOnSurfaceVariant" /> @@ -213,7 +213,7 @@ android:nextFocusLeft="@+id/embedded_text_editor" android:padding="9dp" android:scaleType="fitCenter" - android:tint="@color/conversation_send_button_tint" + app:tint="@color/conversation_send_button_tint" app:srcCompat="@drawable/ic_plus_24" /> diff --git a/app/src/main/res/layout/conversation_scroll_to.xml b/app/src/main/res/layout/conversation_scroll_to.xml index 29678e461..13b98e7aa 100644 --- a/app/src/main/res/layout/conversation_scroll_to.xml +++ b/app/src/main/res/layout/conversation_scroll_to.xml @@ -1,10 +1,11 @@ + tools:parentTag="android.widget.FrameLayout" + tools:viewBindingIgnore="true"> + android:orientation="vertical" + tools:viewBindingIgnore="true"> + app:srcCompat="@drawable/ic_compose_24" + app:tint="@color/signal_colorOnSurface" /> diff --git a/app/src/main/res/layout/microphone_recorder_view.xml b/app/src/main/res/layout/microphone_recorder_view.xml index 0e8612164..a4111c140 100644 --- a/app/src/main/res/layout/microphone_recorder_view.xml +++ b/app/src/main/res/layout/microphone_recorder_view.xml @@ -1,9 +1,9 @@ + tools:showIn="@layout/conversation_input_panel" + tools:viewBindingIgnore="true"> + app:srcCompat="@drawable/ic_mic_24" + app:tint="@color/signal_colorOnSurfaceVariant" /> diff --git a/app/src/main/res/layout/submit_debug_log_activity.xml b/app/src/main/res/layout/submit_debug_log_activity.xml index 71a77b354..ddc01547a 100644 --- a/app/src/main/res/layout/submit_debug_log_activity.xml +++ b/app/src/main/res/layout/submit_debug_log_activity.xml @@ -61,7 +61,7 @@ android:layout_marginTop="16dp" android:padding="5dp" android:background="@drawable/circle_tintable" - android:tint="@color/grey_600" + app:tint="@color/grey_600" android:elevation="1dp" app:srcCompat="@drawable/ic_chevron_down_20" android:scaleY="-1" @@ -76,8 +76,8 @@ android:layout_marginBottom="16dp" android:padding="5dp" android:background="@drawable/circle_tintable" - android:tint="@color/grey_600" android:elevation="1dp" + app:tint="@color/grey_600" app:srcCompat="@drawable/ic_chevron_down_20" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/debug_log_submit_button"/> diff --git a/app/src/main/res/layout/unverified_banner_view.xml b/app/src/main/res/layout/unverified_banner_view.xml index db6a97197..75c2b59f5 100644 --- a/app/src/main/res/layout/unverified_banner_view.xml +++ b/app/src/main/res/layout/unverified_banner_view.xml @@ -39,7 +39,7 @@ android:nextFocusLeft="@+id/container" android:nextFocusRight="@+id/container" android:src="@drawable/ic_close_white_24dp" - android:tint="@color/signal_icon_tint_primary" + app:tint="@color/signal_icon_tint_primary" android:contentDescription="@string/InviteActivity_cancel"/> diff --git a/build.gradle b/build.gradle index e17857585..59a0d6381 100644 --- a/build.gradle +++ b/build.gradle @@ -17,9 +17,9 @@ buildscript { } } dependencies { - classpath 'com.android.tools:r8:3.3.28' - classpath 'com.android.tools.build:gradle:7.0.3' - classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5' + classpath 'com.android.tools:r8:3.3.75' + classpath 'com.android.tools.build:gradle:7.2.2' + classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.5.2' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.17' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jlleitschuh.gradle:ktlint-gradle:10.2.1" @@ -30,7 +30,7 @@ buildscript { ext { BUILD_TOOL_VERSION = '31.0.0' - COMPILE_SDK = 31 + COMPILE_SDK = 32 TARGET_SDK = 30 MINIMUM_SDK = 19 diff --git a/dependencies.gradle b/dependencies.gradle index 5af22b3b4..e95a446de 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -4,13 +4,16 @@ dependencyResolutionManagement { versionCatalogs { libs { - version('libsignal-client', '0.20.0') - version('exoplayer', '2.18.1') version('androidx-camera', '1.1.0') - version('androidx-lifecycle', '2.3.1') - version('mp4parser', '1.9.39') - version('kotlin', '1.6.21') + version('androidx-fragment', '1.5.2') + version('androidx-lifecycle', '2.5.1') + version('androidx-navigation', '2.5.2') + version('androidx-window', '1.0.0') + version('exoplayer', '2.18.1') version('glide', '4.13.2') + version('kotlin', '1.6.21') + version('libsignal-client', '0.20.0') + version('mp4parser', '1.9.39') // Desugaring alias('android-tools-desugar').to('com.android.tools:desugar_jdk_libs:1.1.5') @@ -20,12 +23,15 @@ dependencyResolutionManagement { alias('kotlin-reflect').to('org.jetbrains.kotlin', 'kotlin-reflect').versionRef('kotlin') // Android X + alias('androidx-activity-ktx').to('androidx.activity:activity-ktx:1.5.1') alias('androidx-core-ktx').to('androidx.core:core-ktx:1.5.0') - alias('androidx-fragment-ktx').to('androidx.fragment:fragment-ktx:1.3.5') - alias('androidx-annotation').to('androidx.annotation:annotation:1.2.0') - alias('androidx-appcompat').to('androidx.appcompat:appcompat:1.2.0') + alias('androidx-fragment-ktx').to('androidx.fragment', 'fragment-ktx').versionRef('androidx-fragment') + alias('androidx-fragment-testing').to('androidx.fragment', 'fragment-testing').versionRef('androidx-fragment') + alias('androidx-annotation').to('androidx.annotation:annotation:1.4.0') + alias('androidx-appcompat').to('androidx.appcompat:appcompat:1.5.1') alias('androidx-constraintlayout').to('androidx.constraintlayout:constraintlayout:2.0.4') - alias('androidx-window').to('androidx.window:window:1.0.0-alpha09') + alias('androidx-window-window').to('androidx.window', 'window').versionRef('androidx-window') + alias('androidx-window-java').to('androidx.window', 'window-java').versionRef('androidx-window') alias('androidx-recyclerview').to('androidx.recyclerview:recyclerview:1.2.1') alias('androidx-legacy-support').to('androidx.legacy:legacy-support-v13:1.0.0') alias('androidx-legacy-preference').to('androidx.legacy:legacy-preference-v14:1.0.0') @@ -34,9 +40,11 @@ dependencyResolutionManagement { alias('androidx-gridlayout').to('androidx.gridlayout:gridlayout:1.0.0') alias('androidx-exifinterface').to('androidx.exifinterface:exifinterface:1.3.3') alias('androidx-multidex').to('androidx.multidex:multidex:2.0.1') - alias('androidx-navigation-fragment-ktx').to('androidx.navigation:navigation-fragment-ktx:2.3.5') - alias('androidx-navigation-ui-ktx').to('androidx.navigation:navigation-ui-ktx:2.3.5') - alias('androidx-lifecycle-extensions').to('androidx.lifecycle:lifecycle-extensions:2.2.0') + alias('androidx-navigation-fragment-ktx').to('androidx.navigation', 'navigation-fragment-ktx').versionRef('androidx-navigation') + alias('androidx-navigation-ui-ktx').to('androidx.navigation', 'navigation-ui-ktx').versionRef('androidx-navigation') + alias('androidx-lifecycle-viewmodel-ktx').to('androidx.lifecycle', 'lifecycle-viewmodel-ktx').versionRef('androidx-lifecycle') + alias('androidx-lifecycle-livedata-ktx').to('androidx.lifecycle', 'lifecycle-livedata-ktx').versionRef('androidx-lifecycle') + alias('androidx-lifecycle-process').to('androidx.lifecycle', 'lifecycle-process').versionRef('androidx-lifecycle') alias('androidx-lifecycle-viewmodel-savedstate').to('androidx.lifecycle', 'lifecycle-viewmodel-savedstate').versionRef('androidx-lifecycle') alias('androidx-lifecycle-common-java8').to('androidx.lifecycle', 'lifecycle-common-java8').versionRef('androidx-lifecycle') alias('androidx-lifecycle-reactivestreams-ktx').to('androidx.lifecycle', 'lifecycle-reactivestreams-ktx').versionRef('androidx-lifecycle') @@ -124,15 +132,15 @@ dependencyResolutionManagement { } testLibs { - version('robolectric', '4.8.1') version('androidx-test', '1.4.0') + version('androidx-test-ext-junit', '1.1.1') + version('robolectric', '4.8.1') alias('junit-junit').to('junit:junit:4.13.2') alias('androidx-test-core').to('androidx.test', 'core').versionRef('androidx-test') alias('androidx-test-core-ktx').to('androidx.test', 'core-ktx').versionRef('androidx-test') - alias('androidx-test-ext-junit').to('androidx.test.ext:junit:1.1.1') - alias('androidx-test-ext-junit-ktx').to('androidx.test.ext:junit-ktx:1.1.1') - alias('androidx-fragment-testing').to('androidx.fragment:fragment-testing:1.3.2') + alias('androidx-test-ext-junit').to('androidx.test.ext', 'junit').versionRef('androidx-test-ext-junit') + alias('androidx-test-ext-junit-ktx').to('androidx.test.ext', 'junit-ktx').versionRef('androidx-test-ext-junit') alias('espresso-core').to('androidx.test.espresso:espresso-core:3.4.0') alias('mockito-core').to('org.mockito:mockito-inline:4.6.1') alias('mockito-kotlin').to('org.mockito.kotlin:mockito-kotlin:4.0.0') @@ -148,7 +156,7 @@ dependencyResolutionManagement { } lintLibs { - version('lint', '26.6.3') + version('lint', '30.2.2') alias('lint-api').to('com.android.tools.lint', 'lint-api').versionRef('lint') alias('lint-checks').to('com.android.tools.lint', 'lint-checks').versionRef('lint') diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index d788aa3ed..bd1b265fc 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -25,22 +25,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - - - - - - - - - + + + + + + + + @@ -49,6 +46,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -75,6 +80,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -96,6 +109,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -104,6 +125,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -229,11 +258,6 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - - - @@ -248,26 +272,33 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - - - - + + + + + + + + + + + + + @@ -276,6 +307,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -304,6 +343,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -312,6 +364,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -320,6 +385,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -340,6 +421,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -387,36 +484,36 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -480,17 +577,20 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + - - - + + + + + + @@ -506,6 +606,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -527,12 +635,28 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + + + + + + + + + + + + + + + + + @@ -540,6 +664,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -548,6 +688,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -556,6 +704,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -582,6 +738,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -590,6 +754,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -621,6 +793,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -629,6 +809,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -645,6 +833,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -686,52 +882,52 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -742,6 +938,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -750,20 +954,28 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + - - - + + + - - + + + + + + + + + + @@ -789,6 +1001,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -802,6 +1022,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -810,6 +1038,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -823,11 +1059,32 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + @@ -911,9 +1168,12 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + + + + @@ -946,12 +1206,20 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + + + + + + + + + @@ -1022,33 +1290,66 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + - - - + + + - - + + + + + + + @@ -1056,12 +1357,17 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + + + + + + @@ -1087,11 +1393,29 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + @@ -1105,6 +1429,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1118,6 +1455,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1131,6 +1481,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1144,6 +1507,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1157,6 +1533,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1170,6 +1559,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1183,15 +1585,28 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + - - + + + + + + + + + + + + + + + @@ -1204,6 +1619,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -1212,6 +1635,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -1220,6 +1659,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -1228,6 +1683,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1236,6 +1704,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1244,6 +1725,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -1257,6 +1754,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -1270,11 +1783,32 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + @@ -1283,6 +1817,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -1291,6 +1841,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -1304,6 +1870,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -1332,6 +1914,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1345,6 +1940,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1358,6 +1966,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1371,6 +1992,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1384,6 +2018,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1397,6 +2044,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1410,6 +2070,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1423,6 +2096,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1431,6 +2117,19 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -1439,11 +2138,42 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1452,6 +2182,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1460,6 +2222,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -1468,6 +2246,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -1493,6 +2287,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -1506,6 +2305,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -1519,6 +2323,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -1532,6 +2341,21 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + @@ -1540,6 +2364,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -1807,6 +2636,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -1942,6 +2776,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2006,6 +2845,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2051,6 +2895,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2189,6 +3038,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2207,6 +3061,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -2370,6 +3232,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2634,6 +3501,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2644,6 +3516,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2729,6 +3606,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2739,6 +3621,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2749,6 +3636,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2797,6 +3689,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2917,6 +3814,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -2987,21 +3889,41 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + @@ -3012,6 +3934,27 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + @@ -3202,6 +4145,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3242,6 +4190,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3262,6 +4215,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3287,6 +4245,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3322,12 +4285,12 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + @@ -3346,12 +4309,17 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + + + + + + @@ -3359,12 +4327,17 @@ https://docs.gradle.org/current/userguide/dependency_verification.html - - - + + + - - + + + + + + + @@ -3383,6 +4356,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -3435,6 +4416,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3505,6 +4491,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3570,6 +4561,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3580,6 +4576,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3590,6 +4591,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3600,6 +4606,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3610,6 +4621,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -3773,6 +4789,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + diff --git a/qr/lib/build.gradle b/qr/lib/build.gradle index 9b34c8ae6..0ec4450ea 100644 --- a/qr/lib/build.gradle +++ b/qr/lib/build.gradle @@ -13,6 +13,6 @@ dependencies { implementation libs.rxjava3.rxjava // Included to force proper versions for verification and match main app - implementation 'androidx.lifecycle:lifecycle-livedata:2.3.1' + implementation 'androidx.lifecycle:lifecycle-livedata:2.5.1' implementation 'com.google.guava:guava:30.0-android' } \ No newline at end of file diff --git a/signalModuleApp.gradle b/signalModuleApp.gradle index 9a11e709f..440e6d002 100644 --- a/signalModuleApp.gradle +++ b/signalModuleApp.gradle @@ -34,8 +34,7 @@ ktlint { dependencies { coreLibraryDesugaring libs.android.tools.desugar - implementation "androidx.activity:activity-ktx:1.2.2" - + implementation libs.androidx.activity.ktx implementation libs.androidx.appcompat implementation libs.material.material implementation libs.androidx.constraintlayout