Convert RegistrationCompleteFragment to Kotlin.
This commit is contained in:
parent
4990243a91
commit
6bc5b19b1e
9 changed files with 95 additions and 99 deletions
|
@ -162,7 +162,7 @@ public class ApplicationContext extends MultiDexApplication implements AppForegr
|
||||||
.addBlocking("app-dependencies", this::initializeAppDependencies)
|
.addBlocking("app-dependencies", this::initializeAppDependencies)
|
||||||
.addBlocking("first-launch", this::initializeFirstEverAppLaunch)
|
.addBlocking("first-launch", this::initializeFirstEverAppLaunch)
|
||||||
.addBlocking("app-migrations", this::initializeApplicationMigrations)
|
.addBlocking("app-migrations", this::initializeApplicationMigrations)
|
||||||
.addBlocking("mark-registration", () -> RegistrationUtil.maybeMarkRegistrationComplete(this))
|
.addBlocking("mark-registration", () -> RegistrationUtil.maybeMarkRegistrationComplete())
|
||||||
.addBlocking("lifecycle-observer", () -> ApplicationDependencies.getAppForegroundObserver().addListener(this))
|
.addBlocking("lifecycle-observer", () -> ApplicationDependencies.getAppForegroundObserver().addListener(this))
|
||||||
.addBlocking("message-retriever", this::initializeMessageRetrieval)
|
.addBlocking("message-retriever", this::initializeMessageRetrieval)
|
||||||
.addBlocking("dynamic-theme", () -> DynamicTheme.setDefaultDayNightMode(this))
|
.addBlocking("dynamic-theme", () -> DynamicTheme.setDefaultDayNightMode(this))
|
||||||
|
|
|
@ -58,7 +58,7 @@ object ContactDiscovery {
|
||||||
|
|
||||||
if (!SignalStore.registrationValues().isRegistrationComplete) {
|
if (!SignalStore.registrationValues().isRegistrationComplete) {
|
||||||
Log.w(TAG, "Registration is not yet complete. Skipping, but running a routine to possibly mark it complete.")
|
Log.w(TAG, "Registration is not yet complete. Skipping, but running a routine to possibly mark it complete.")
|
||||||
RegistrationUtil.maybeMarkRegistrationComplete(context)
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -203,7 +203,7 @@ public abstract class BaseKbsPinFragment<ViewModel extends BaseKbsPinViewModel>
|
||||||
|
|
||||||
private void onPinSkipped() {
|
private void onPinSkipped() {
|
||||||
PinOptOutDialog.show(requireContext(), () -> {
|
PinOptOutDialog.show(requireContext(), () -> {
|
||||||
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
RegistrationUtil.maybeMarkRegistrationComplete();
|
||||||
closeNavGraphBranch();
|
closeNavGraphBranch();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,12 +85,12 @@ internal class ConfirmKbsPinFragment : BaseKbsPinFragment<ConfirmKbsPinViewModel
|
||||||
confirm.cancelSpinning()
|
confirm.cancelSpinning()
|
||||||
requireActivity().setResult(Activity.RESULT_OK)
|
requireActivity().setResult(Activity.RESULT_OK)
|
||||||
closeNavGraphBranch()
|
closeNavGraphBranch()
|
||||||
RegistrationUtil.maybeMarkRegistrationComplete(requireContext())
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
StorageSyncHelper.scheduleSyncForDataChange()
|
StorageSyncHelper.scheduleSyncForDataChange()
|
||||||
}
|
}
|
||||||
SaveAnimation.FAILURE -> {
|
SaveAnimation.FAILURE -> {
|
||||||
confirm.cancelSpinning()
|
confirm.cancelSpinning()
|
||||||
RegistrationUtil.maybeMarkRegistrationComplete(requireContext())
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
displayFailedDialog()
|
displayFailedDialog()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -242,7 +242,7 @@ public class PinRestoreEntryFragment extends LoggingFragment {
|
||||||
profile.putExtra("next_intent", main);
|
profile.putExtra("next_intent", main);
|
||||||
startActivity(profile);
|
startActivity(profile);
|
||||||
} else {
|
} else {
|
||||||
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
RegistrationUtil.maybeMarkRegistrationComplete();
|
||||||
ApplicationDependencies.getJobManager().add(new ProfileUploadJob());
|
ApplicationDependencies.getJobManager().add(new ProfileUploadJob());
|
||||||
startActivity(MainActivity.clearTop(activity));
|
startActivity(MainActivity.clearTop(activity));
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,7 +145,7 @@ public class EditSelfProfileRepository implements EditProfileRepository {
|
||||||
.then(Arrays.asList(new MultiDeviceProfileKeyUpdateJob(), new MultiDeviceProfileContentUpdateJob()))
|
.then(Arrays.asList(new MultiDeviceProfileKeyUpdateJob(), new MultiDeviceProfileContentUpdateJob()))
|
||||||
.enqueue();
|
.enqueue();
|
||||||
|
|
||||||
RegistrationUtil.maybeMarkRegistrationComplete(context);
|
RegistrationUtil.maybeMarkRegistrationComplete();
|
||||||
|
|
||||||
if (avatar != null) {
|
if (avatar != null) {
|
||||||
SignalStore.misc().markHasEverHadAnAvatar();
|
SignalStore.misc().markHasEverHadAnAvatar();
|
||||||
|
|
|
@ -22,7 +22,7 @@ public final class RegistrationUtil {
|
||||||
* path a user has taken. This will only truly mark registration as complete if all of the
|
* path a user has taken. This will only truly mark registration as complete if all of the
|
||||||
* requirements are met.
|
* requirements are met.
|
||||||
*/
|
*/
|
||||||
public static void maybeMarkRegistrationComplete(@NonNull Context context) {
|
public static void maybeMarkRegistrationComplete() {
|
||||||
if (!SignalStore.registrationValues().isRegistrationComplete() &&
|
if (!SignalStore.registrationValues().isRegistrationComplete() &&
|
||||||
SignalStore.account().isRegistered() &&
|
SignalStore.account().isRegistered() &&
|
||||||
!Recipient.self().getProfileName().isEmpty() &&
|
!Recipient.self().getProfileName().isEmpty() &&
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
package org.thoughtcrime.securesms.registration.fragments;
|
|
||||||
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
|
||||||
import androidx.navigation.ActivityNavigator;
|
|
||||||
|
|
||||||
import org.signal.core.util.logging.Log;
|
|
||||||
import org.thoughtcrime.securesms.LoggingFragment;
|
|
||||||
import org.thoughtcrime.securesms.MainActivity;
|
|
||||||
import org.thoughtcrime.securesms.R;
|
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
|
||||||
import org.thoughtcrime.securesms.jobs.MultiDeviceProfileContentUpdateJob;
|
|
||||||
import org.thoughtcrime.securesms.jobs.MultiDeviceProfileKeyUpdateJob;
|
|
||||||
import org.thoughtcrime.securesms.jobs.ProfileUploadJob;
|
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
|
||||||
import org.thoughtcrime.securesms.lock.v2.CreateKbsPinActivity;
|
|
||||||
import org.thoughtcrime.securesms.pin.PinRestoreActivity;
|
|
||||||
import org.thoughtcrime.securesms.profiles.AvatarHelper;
|
|
||||||
import org.thoughtcrime.securesms.profiles.edit.EditProfileActivity;
|
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
|
||||||
import org.thoughtcrime.securesms.registration.RegistrationUtil;
|
|
||||||
import org.thoughtcrime.securesms.registration.viewmodel.RegistrationViewModel;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
public final class RegistrationCompleteFragment extends LoggingFragment {
|
|
||||||
|
|
||||||
private static final String TAG = Log.tag(RegistrationCompleteFragment.class);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
|
||||||
return inflater.inflate(R.layout.fragment_registration_blank, container, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
|
||||||
super.onViewCreated(view, savedInstanceState);
|
|
||||||
|
|
||||||
FragmentActivity activity = requireActivity();
|
|
||||||
RegistrationViewModel viewModel = new ViewModelProvider(activity).get(RegistrationViewModel.class);
|
|
||||||
|
|
||||||
if (SignalStore.storageService().needsAccountRestore()) {
|
|
||||||
Log.i(TAG, "Performing pin restore");
|
|
||||||
activity.startActivity(new Intent(activity, PinRestoreActivity.class));
|
|
||||||
} else {
|
|
||||||
boolean needsPin = !SignalStore.kbsValues().hasPin() && !viewModel.isReregister();
|
|
||||||
boolean needsProfile = Recipient.self().getProfileName().isEmpty() || !AvatarHelper.hasAvatar(activity, Recipient.self().getId());
|
|
||||||
|
|
||||||
Log.i(TAG, "Pin restore flow not required." +
|
|
||||||
" profile name: " + Recipient.self().getProfileName().isEmpty() +
|
|
||||||
" profile avatar: " + !AvatarHelper.hasAvatar(activity, Recipient.self().getId()) +
|
|
||||||
" needsPin:" + needsPin);
|
|
||||||
|
|
||||||
Intent startIntent = MainActivity.clearTop(activity);
|
|
||||||
|
|
||||||
if (!needsProfile && !needsPin) {
|
|
||||||
ApplicationDependencies.getJobManager()
|
|
||||||
.startChain(new ProfileUploadJob())
|
|
||||||
.then(Arrays.asList(new MultiDeviceProfileKeyUpdateJob(), new MultiDeviceProfileContentUpdateJob()))
|
|
||||||
.enqueue();
|
|
||||||
|
|
||||||
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
|
||||||
} else {
|
|
||||||
if (needsPin) {
|
|
||||||
startIntent = chainIntents(CreateKbsPinActivity.getIntentForPinCreate(requireContext()), startIntent);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (needsProfile) {
|
|
||||||
startIntent = chainIntents(EditProfileActivity.getIntentForUserProfile(activity), startIntent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
activity.startActivity(startIntent);
|
|
||||||
}
|
|
||||||
activity.finish();
|
|
||||||
ActivityNavigator.applyPopAnimationsToPendingTransition(activity);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static @NonNull Intent chainIntents(@NonNull Intent sourceIntent, @NonNull Intent nextIntent) {
|
|
||||||
sourceIntent.putExtra("next_intent", nextIntent);
|
|
||||||
return sourceIntent;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
package org.thoughtcrime.securesms.registration.fragments
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
|
import androidx.navigation.ActivityNavigator
|
||||||
|
import org.signal.core.util.logging.Log
|
||||||
|
import org.thoughtcrime.securesms.LoggingFragment
|
||||||
|
import org.thoughtcrime.securesms.MainActivity
|
||||||
|
import org.thoughtcrime.securesms.R
|
||||||
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||||
|
import org.thoughtcrime.securesms.jobs.MultiDeviceProfileContentUpdateJob
|
||||||
|
import org.thoughtcrime.securesms.jobs.MultiDeviceProfileKeyUpdateJob
|
||||||
|
import org.thoughtcrime.securesms.jobs.ProfileUploadJob
|
||||||
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
|
import org.thoughtcrime.securesms.lock.v2.CreateKbsPinActivity
|
||||||
|
import org.thoughtcrime.securesms.pin.PinRestoreActivity
|
||||||
|
import org.thoughtcrime.securesms.profiles.AvatarHelper
|
||||||
|
import org.thoughtcrime.securesms.profiles.edit.EditProfileActivity
|
||||||
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
|
import org.thoughtcrime.securesms.registration.RegistrationUtil
|
||||||
|
import org.thoughtcrime.securesms.registration.viewmodel.RegistrationViewModel
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [RegistrationCompleteFragment] is not visible to the user, but functions as basically a redirect towards one of:
|
||||||
|
* - [PIN Restore flow activity](org.thoughtcrime.securesms.pin.PinRestoreActivity)
|
||||||
|
* - [Profile](org.thoughtcrime.securesms.profiles.edit.EditProfileActivity) / [PIN creation](org.thoughtcrime.securesms.lock.v2.CreateKbsPinActivity) flow activities (this class chains the necessary activities together as an intent)
|
||||||
|
* - Exit registration flow and progress to conversation list
|
||||||
|
*/
|
||||||
|
class RegistrationCompleteFragment : LoggingFragment() {
|
||||||
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||||
|
return inflater.inflate(R.layout.fragment_registration_blank, container, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
val activity = requireActivity()
|
||||||
|
if (SignalStore.storageService().needsAccountRestore()) {
|
||||||
|
Log.i(TAG, "Performing pin restore.")
|
||||||
|
activity.startActivity(Intent(activity, PinRestoreActivity::class.java))
|
||||||
|
} else {
|
||||||
|
val viewModel: RegistrationViewModel by viewModels()
|
||||||
|
|
||||||
|
val isProfileNameEmpty = Recipient.self().profileName.isEmpty
|
||||||
|
val isAvatarEmpty = !AvatarHelper.hasAvatar(activity, Recipient.self().id)
|
||||||
|
val needsProfile = isProfileNameEmpty || isAvatarEmpty
|
||||||
|
val needsPin = !SignalStore.kbsValues().hasPin() && !viewModel.isReregister
|
||||||
|
|
||||||
|
Log.i(TAG, "Pin restore flow not required. Profile name: $isProfileNameEmpty | Profile avatar: $isAvatarEmpty | Needs PIN: $needsPin")
|
||||||
|
|
||||||
|
if (!needsProfile && !needsPin) {
|
||||||
|
ApplicationDependencies.getJobManager()
|
||||||
|
.startChain(ProfileUploadJob())
|
||||||
|
.then(listOf(MultiDeviceProfileKeyUpdateJob(), MultiDeviceProfileContentUpdateJob()))
|
||||||
|
.enqueue()
|
||||||
|
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||||
|
}
|
||||||
|
|
||||||
|
var startIntent = MainActivity.clearTop(activity)
|
||||||
|
|
||||||
|
if (needsPin) {
|
||||||
|
startIntent = chainIntents(CreateKbsPinActivity.getIntentForPinCreate(activity), startIntent)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (needsProfile) {
|
||||||
|
startIntent = chainIntents(EditProfileActivity.getIntentForUserProfile(activity), startIntent)
|
||||||
|
}
|
||||||
|
|
||||||
|
activity.startActivity(startIntent)
|
||||||
|
}
|
||||||
|
|
||||||
|
activity.finish()
|
||||||
|
ActivityNavigator.applyPopAnimationsToPendingTransition(activity)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun chainIntents(sourceIntent: Intent, nextIntent: Intent): Intent {
|
||||||
|
sourceIntent.putExtra("next_intent", nextIntent)
|
||||||
|
return sourceIntent
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private val TAG = Log.tag(RegistrationCompleteFragment::class.java)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue