redirect from main to setup on zero accounts
This commit is contained in:
parent
0727b0aba6
commit
d136928322
|
@ -94,6 +94,7 @@
|
||||||
<activity
|
<activity
|
||||||
android:name="im.conversations.android.ui.activity.MainActivity"
|
android:name="im.conversations.android.ui.activity.MainActivity"
|
||||||
android:windowSoftInputMode="adjustResize"
|
android:windowSoftInputMode="adjustResize"
|
||||||
|
android:launchMode="singleTask"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
|
@ -18,6 +18,9 @@ public interface AccountDao {
|
||||||
@Query("SELECT EXISTS (SELECT id FROM account WHERE address=:address)")
|
@Query("SELECT EXISTS (SELECT id FROM account WHERE address=:address)")
|
||||||
boolean hasAccount(BareJid address);
|
boolean hasAccount(BareJid address);
|
||||||
|
|
||||||
|
@Query("SELECT NOT EXISTS (SELECT id FROM account)")
|
||||||
|
LiveData<Boolean> hasNoAccounts();
|
||||||
|
|
||||||
@Insert
|
@Insert
|
||||||
long insert(final AccountEntity account);
|
long insert(final AccountEntity account);
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,10 @@ public class AccountRepository extends AbstractRepository {
|
||||||
return database.accountDao().getAccounts();
|
return database.accountDao().getAccounts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LiveData<Boolean> hasNoAccounts() {
|
||||||
|
return database.accountDao().hasNoAccounts();
|
||||||
|
}
|
||||||
|
|
||||||
public static class AccountAlreadyExistsException extends IllegalStateException {
|
public static class AccountAlreadyExistsException extends IllegalStateException {
|
||||||
public AccountAlreadyExistsException(BareJid address) {
|
public AccountAlreadyExistsException(BareJid address) {
|
||||||
super(String.format("The account %s has already been setup", address));
|
super(String.format("The account %s has already been setup", address));
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
package im.conversations.android.ui.activity;
|
package im.conversations.android.ui.activity;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import androidx.databinding.DataBindingUtil;
|
import androidx.databinding.DataBindingUtil;
|
||||||
|
import androidx.lifecycle.Observer;
|
||||||
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
|
|
||||||
import im.conversations.android.R;
|
import im.conversations.android.R;
|
||||||
import im.conversations.android.databinding.ActivityMainBinding;
|
import im.conversations.android.databinding.ActivityMainBinding;
|
||||||
import im.conversations.android.service.ForegroundService;
|
import im.conversations.android.service.ForegroundService;
|
||||||
import im.conversations.android.ui.Activities;
|
import im.conversations.android.ui.Activities;
|
||||||
|
import im.conversations.android.ui.model.MainViewModel;
|
||||||
|
import im.conversations.android.ui.model.SetupViewModel;
|
||||||
|
|
||||||
public class MainActivity extends BaseActivity {
|
public class MainActivity extends BaseActivity {
|
||||||
|
|
||||||
|
@ -15,6 +21,15 @@ public class MainActivity extends BaseActivity {
|
||||||
ForegroundService.start(this);
|
ForegroundService.start(this);
|
||||||
final ActivityMainBinding binding =
|
final ActivityMainBinding binding =
|
||||||
DataBindingUtil.setContentView(this, R.layout.activity_main);
|
DataBindingUtil.setContentView(this, R.layout.activity_main);
|
||||||
|
final ViewModelProvider viewModelProvider =
|
||||||
|
new ViewModelProvider(this, getDefaultViewModelProviderFactory());
|
||||||
|
final var mainViewModel = viewModelProvider.get(MainViewModel.class);
|
||||||
|
mainViewModel.hasNoAccounts().observe(this, hasNoAccounts -> {
|
||||||
|
if (Boolean.TRUE.equals(hasNoAccounts)) {
|
||||||
|
startActivity(new Intent(this,SetupActivity.class));
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
Activities.setStatusAndNavigationBarColors(this, binding.getRoot());
|
Activities.setStatusAndNavigationBarColors(this, binding.getRoot());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
package im.conversations.android.ui.model;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.lifecycle.AndroidViewModel;
|
||||||
|
import androidx.lifecycle.LiveData;
|
||||||
|
import androidx.lifecycle.Transformations;
|
||||||
|
|
||||||
|
import im.conversations.android.repository.AccountRepository;
|
||||||
|
|
||||||
|
public class MainViewModel extends AndroidViewModel {
|
||||||
|
|
||||||
|
private final AccountRepository accountRepository;
|
||||||
|
private final LiveData<Boolean> hasNoAccounts;
|
||||||
|
|
||||||
|
public MainViewModel(@NonNull Application application) {
|
||||||
|
super(application);
|
||||||
|
this.accountRepository = new AccountRepository(application);
|
||||||
|
this.hasNoAccounts = this.accountRepository.hasNoAccounts();
|
||||||
|
}
|
||||||
|
|
||||||
|
public LiveData<Boolean> hasNoAccounts() {
|
||||||
|
return Transformations.distinctUntilChanged(this.hasNoAccounts);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue