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("first-launch", this::initializeFirstEverAppLaunch)
|
||||
.addBlocking("app-migrations", this::initializeApplicationMigrations)
|
||||
.addBlocking("mark-registration", () -> RegistrationUtil.maybeMarkRegistrationComplete(this))
|
||||
.addBlocking("mark-registration", () -> RegistrationUtil.maybeMarkRegistrationComplete())
|
||||
.addBlocking("lifecycle-observer", () -> ApplicationDependencies.getAppForegroundObserver().addListener(this))
|
||||
.addBlocking("message-retriever", this::initializeMessageRetrieval)
|
||||
.addBlocking("dynamic-theme", () -> DynamicTheme.setDefaultDayNightMode(this))
|
||||
|
|
|
@ -58,7 +58,7 @@ object ContactDiscovery {
|
|||
|
||||
if (!SignalStore.registrationValues().isRegistrationComplete) {
|
||||
Log.w(TAG, "Registration is not yet complete. Skipping, but running a routine to possibly mark it complete.")
|
||||
RegistrationUtil.maybeMarkRegistrationComplete(context)
|
||||
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -203,7 +203,7 @@ public abstract class BaseKbsPinFragment<ViewModel extends BaseKbsPinViewModel>
|
|||
|
||||
private void onPinSkipped() {
|
||||
PinOptOutDialog.show(requireContext(), () -> {
|
||||
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
||||
RegistrationUtil.maybeMarkRegistrationComplete();
|
||||
closeNavGraphBranch();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -85,12 +85,12 @@ internal class ConfirmKbsPinFragment : BaseKbsPinFragment<ConfirmKbsPinViewModel
|
|||
confirm.cancelSpinning()
|
||||
requireActivity().setResult(Activity.RESULT_OK)
|
||||
closeNavGraphBranch()
|
||||
RegistrationUtil.maybeMarkRegistrationComplete(requireContext())
|
||||
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||
StorageSyncHelper.scheduleSyncForDataChange()
|
||||
}
|
||||
SaveAnimation.FAILURE -> {
|
||||
confirm.cancelSpinning()
|
||||
RegistrationUtil.maybeMarkRegistrationComplete(requireContext())
|
||||
RegistrationUtil.maybeMarkRegistrationComplete()
|
||||
displayFailedDialog()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -242,7 +242,7 @@ public class PinRestoreEntryFragment extends LoggingFragment {
|
|||
profile.putExtra("next_intent", main);
|
||||
startActivity(profile);
|
||||
} else {
|
||||
RegistrationUtil.maybeMarkRegistrationComplete(requireContext());
|
||||
RegistrationUtil.maybeMarkRegistrationComplete();
|
||||
ApplicationDependencies.getJobManager().add(new ProfileUploadJob());
|
||||
startActivity(MainActivity.clearTop(activity));
|
||||
}
|
||||
|
|
|
@ -145,7 +145,7 @@ public class EditSelfProfileRepository implements EditProfileRepository {
|
|||
.then(Arrays.asList(new MultiDeviceProfileKeyUpdateJob(), new MultiDeviceProfileContentUpdateJob()))
|
||||
.enqueue();
|
||||
|
||||
RegistrationUtil.maybeMarkRegistrationComplete(context);
|
||||
RegistrationUtil.maybeMarkRegistrationComplete();
|
||||
|
||||
if (avatar != null) {
|
||||
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
|
||||
* requirements are met.
|
||||
*/
|
||||
public static void maybeMarkRegistrationComplete(@NonNull Context context) {
|
||||
public static void maybeMarkRegistrationComplete() {
|
||||
if (!SignalStore.registrationValues().isRegistrationComplete() &&
|
||||
SignalStore.account().isRegistered() &&
|
||||
!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