110 lines
3.6 KiB
Java
110 lines
3.6 KiB
Java
|
package org.mercury_im.messenger.android.ui.account.login;
|
||
|
|
||
|
import android.os.Bundle;
|
||
|
|
||
|
import androidx.annotation.NonNull;
|
||
|
import androidx.annotation.Nullable;
|
||
|
import androidx.appcompat.app.AppCompatActivity;
|
||
|
import androidx.fragment.app.Fragment;
|
||
|
import androidx.fragment.app.FragmentActivity;
|
||
|
import androidx.lifecycle.ViewModelProvider;
|
||
|
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||
|
import androidx.viewpager2.widget.ViewPager2;
|
||
|
|
||
|
import org.mercury_im.messenger.R;
|
||
|
import org.mercury_im.messenger.android.MercuryImApplication;
|
||
|
import org.mercury_im.messenger.android.crypto.ikey.IkeyBackupCreationFragment;
|
||
|
import org.mercury_im.messenger.android.di.component.AppComponent;
|
||
|
import org.mercury_im.messenger.core.util.Optional;
|
||
|
import org.mercury_im.messenger.entity.Account;
|
||
|
|
||
|
import java.util.LinkedHashMap;
|
||
|
import java.util.Map;
|
||
|
import java.util.UUID;
|
||
|
|
||
|
import butterknife.BindView;
|
||
|
import butterknife.ButterKnife;
|
||
|
import lombok.Getter;
|
||
|
|
||
|
public class AddAccountActivity extends AppCompatActivity {
|
||
|
|
||
|
@BindView(R.id.viewpager)
|
||
|
ViewPager2 viewPager;
|
||
|
|
||
|
private SetupPagerAdapter pagerAdapter;
|
||
|
|
||
|
private AppComponent appComponent;
|
||
|
private IkeySetupViewModel ikeyViewModel;
|
||
|
|
||
|
@Override
|
||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||
|
super.onCreate(savedInstanceState);
|
||
|
setContentView(R.layout.layout_viewpager2);
|
||
|
ButterKnife.bind(this);
|
||
|
appComponent = MercuryImApplication.getApplication().getAppComponent();
|
||
|
|
||
|
pagerAdapter = new SetupPagerAdapter(this);
|
||
|
viewPager.setAdapter(pagerAdapter);
|
||
|
viewPager.setUserInputEnabled(false); // disable swiping
|
||
|
|
||
|
ikeyViewModel = new ViewModelProvider(this).get(IkeySetupViewModel.class); // shared between fragments
|
||
|
}
|
||
|
|
||
|
public void loginFinished(Optional<Account> optionalAccount) {
|
||
|
if (optionalAccount.isPresent()) {
|
||
|
pagerAdapter.getFragments().put(1, IkeySetupFragment.newInstance(optionalAccount.getItem().getId()));
|
||
|
pagerAdapter.notifyDataSetChanged();
|
||
|
viewPager.setCurrentItem(1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void skipIkeySetup() {
|
||
|
finish();
|
||
|
}
|
||
|
|
||
|
public void setupIkey(UUID accountId) {
|
||
|
int pos = pagerAdapter.getItemCount();
|
||
|
pagerAdapter.getFragments().put(pos, IkeyBackupRestoreOrSkipFragment.newInstance(accountId));
|
||
|
pagerAdapter.notifyDataSetChanged();
|
||
|
viewPager.setCurrentItem(pos);
|
||
|
}
|
||
|
|
||
|
public void restoreIkeyBackup(UUID accountId) {
|
||
|
int pos = pagerAdapter.getItemCount();
|
||
|
pagerAdapter.getFragments().put(pos, IkeyBackupRestoreSuccessfulFragment.newInstance(accountId));
|
||
|
pagerAdapter.notifyDataSetChanged();
|
||
|
viewPager.setCurrentItem(pos);
|
||
|
}
|
||
|
|
||
|
public void generateIkeyBackup(UUID accountId) {
|
||
|
int pos = pagerAdapter.getItemCount();
|
||
|
pagerAdapter.getFragments().put(pos, IkeyBackupCreationFragment.newInstance(accountId));
|
||
|
pagerAdapter.notifyDataSetChanged();
|
||
|
viewPager.setCurrentItem(pos);
|
||
|
}
|
||
|
|
||
|
private class SetupPagerAdapter extends FragmentStateAdapter {
|
||
|
|
||
|
@Getter
|
||
|
private final Map<Integer, Fragment> fragments = new LinkedHashMap<>();
|
||
|
|
||
|
SetupPagerAdapter(@NonNull FragmentActivity fragmentActivity) {
|
||
|
super(fragmentActivity);
|
||
|
|
||
|
fragments.put(0, EnterAccountDetailsFragment.newInstance(appComponent));
|
||
|
}
|
||
|
|
||
|
@NonNull
|
||
|
@Override
|
||
|
public Fragment createFragment(int position) {
|
||
|
return fragments.get(position);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public int getItemCount() {
|
||
|
return fragments.size();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|