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

View File

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