Try to fix a crash with DB

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2018-01-12 14:52:07 +01:00
parent f8f756da87
commit 04daed0926
2 changed files with 15 additions and 6 deletions

View File

@ -20,6 +20,7 @@
*/
package com.nextcloud.talk.activities;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
@ -57,6 +58,7 @@ import autodagger.AutoInjector;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.requery.Persistable;
import io.requery.android.sqlcipher.SqlCipherDatabaseSource;
import io.requery.reactivex.ReactiveEntityStore;
@AutoInjector(NextcloudTalkApplication.class)
@ -73,6 +75,8 @@ public final class MainActivity extends AppCompatActivity implements ActionBarPr
UserUtils userUtils;
@Inject
ReactiveEntityStore<Persistable> dataStore;
@Inject
SqlCipherDatabaseSource sqlCipherDatabaseSource;
@Inject
EventBus eventBus;
@ -92,7 +96,8 @@ public final class MainActivity extends AppCompatActivity implements ActionBarPr
router = Conductor.attachRouter(this, container, savedInstanceState);
if (!router.hasRootController() && userUtils.anyUserExists()) {
if (!router.hasRootController() && sqlCipherDatabaseSource.getWritableDatabase() != null &&
userUtils.anyUserExists()) {
router.setRoot(RouterTransaction.with(new MagicBottomNavigationController())
.pushChangeHandler(new HorizontalChangeHandler())
.popChangeHandler(new HorizontalChangeHandler()));
@ -135,7 +140,7 @@ public final class MainActivity extends AppCompatActivity implements ActionBarPr
issuedFor = cert.getSubjectDN().getName();
}
String dialogText = String.format(getResources()
@SuppressLint("StringFormatMatches") String dialogText = String.format(getResources()
.getString(R.string.nc_certificate_dialog_text),
issuedBy, issuedFor, validFrom, validUntil);

View File

@ -45,13 +45,17 @@ public class DatabaseModule {
@Provides
@Singleton
public ReactiveEntityStore<Persistable> provideDataStore(@NonNull final Context context) {
final SqlCipherDatabaseSource source = new SqlCipherDatabaseSource(context, Models.DEFAULT,
public SqlCipherDatabaseSource provideSqlCipherDatabaseSource(@NonNull final Context context) {
return new SqlCipherDatabaseSource(context, Models.DEFAULT,
context.getResources().getString(R.string.nc_app_name).toLowerCase()
.replace(" ", "_").trim() + ".sqlite",
context.getString(R.string.nc_talk_database_encryption_key), 2);
final Configuration configuration = source.getConfiguration();
}
@Provides
@Singleton
public ReactiveEntityStore<Persistable> provideDataStore(@NonNull final SqlCipherDatabaseSource sqlCipherDatabaseSource) {
final Configuration configuration = sqlCipherDatabaseSource.getConfiguration();
return ReactiveSupport.toReactiveStore(new EntityDataStore<Persistable>(configuration));
}