diff --git a/app/build.gradle b/app/build.gradle index 7a0081afa..d72fcd408 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -246,10 +246,7 @@ dependencies { compileOnly 'javax.annotation:javax.annotation-api:1.3.2' // Android only implementation 'org.greenrobot:eventbus:3.3.1' - implementation 'io.requery:requery:1.6.1' - implementation 'io.requery:requery-android:1.6.1' implementation 'net.zetetic:android-database-sqlcipher:4.5.1' - kapt 'io.requery:requery-processor:1.6.1' implementation "androidx.room:room-runtime:${roomVersion}" implementation "androidx.room:room-rxjava2:${roomVersion}" diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 095de5f1d..e4a5ed9ed 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -63,9 +63,6 @@ import io.reactivex.SingleObserver import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers -import io.requery.Persistable -import io.requery.android.sqlcipher.SqlCipherDatabaseSource -import io.requery.reactivex.ReactiveEntityStore import org.parceler.Parcels import javax.inject.Inject @@ -73,12 +70,6 @@ import javax.inject.Inject class MainActivity : BaseActivity(), ActionBarProvider { lateinit var binding: ActivityMainBinding - @Inject - lateinit var dataStore: ReactiveEntityStore - - @Inject - lateinit var sqlCipherDatabaseSource: SqlCipherDatabaseSource - @Inject lateinit var ncApi: NcApi @@ -103,46 +94,34 @@ class MainActivity : BaseActivity(), ActionBarProvider { router = Conductor.attachRouter(this, binding.controllerContainer, savedInstanceState) - var hasDb = true - - try { - sqlCipherDatabaseSource.writableDatabase - } catch (exception: Exception) { - hasDb = false - } - if (intent.hasExtra(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL)) { onNewIntent(intent) } else if (!router!!.hasRootController()) { - if (hasDb) { - if (!appPreferences.isDbRoomMigrated) { - appPreferences.isDbRoomMigrated = true + if (!appPreferences.isDbRoomMigrated) { + appPreferences.isDbRoomMigrated = true + } + + userManager.users.subscribe(object : SingleObserver> { + override fun onSubscribe(d: Disposable) { + // unused atm } - userManager.users.subscribe(object : SingleObserver> { - override fun onSubscribe(d: Disposable) { - // unused atm - } - - override fun onSuccess(users: List) { - if (users.isNotEmpty()) { - runOnUiThread { - setDefaultRootController() - } - } else { - runOnUiThread { - launchLoginScreen() - } + override fun onSuccess(users: List) { + if (users.isNotEmpty()) { + runOnUiThread { + setDefaultRootController() + } + } else { + runOnUiThread { + launchLoginScreen() } } + } - override fun onError(e: Throwable) { - Log.e(TAG, "Error loading existing users", e) - } - }) - } else { - launchLoginScreen() - } + override fun onError(e: Throwable) { + Log.e(TAG, "Error loading existing users", e) + } + }) } } diff --git a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt index e3f05ccc1..c8e05df8f 100644 --- a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt +++ b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt @@ -50,7 +50,6 @@ import com.facebook.cache.disk.DiskCacheConfig import com.facebook.drawee.backends.pipeline.Fresco import com.facebook.imagepipeline.core.ImagePipelineConfig import com.nextcloud.talk.BuildConfig -import com.nextcloud.talk.R import com.nextcloud.talk.components.filebrowser.webdav.DavUtils import com.nextcloud.talk.dagger.modules.BusModule import com.nextcloud.talk.dagger.modules.ContextModule @@ -62,7 +61,6 @@ import com.nextcloud.talk.dagger.modules.ViewModelModule import com.nextcloud.talk.jobs.AccountRemovalWorker import com.nextcloud.talk.jobs.CapabilitiesWorker import com.nextcloud.talk.jobs.SignalingSettingsWorker -import com.nextcloud.talk.models.database.Models import com.nextcloud.talk.utils.ClosedInterfaceImpl import com.nextcloud.talk.utils.DeviceUtils import com.nextcloud.talk.utils.DisplayUtils @@ -76,17 +74,14 @@ import com.vanniktech.emoji.EmojiManager import com.vanniktech.emoji.google.GoogleEmojiProvider import de.cotech.hw.SecurityKeyManager import de.cotech.hw.SecurityKeyManagerConfig -import io.requery.android.sqlcipher.SqlCipherDatabaseSource import net.sqlcipher.database.SQLiteDatabase import net.sqlcipher.database.SQLiteDatabaseHook -import net.sqlcipher.database.SQLiteOpenHelper import okhttp3.OkHttpClient import org.conscrypt.Conscrypt import org.webrtc.PeerConnectionFactory import org.webrtc.voiceengine.WebRtcAudioManager import org.webrtc.voiceengine.WebRtcAudioUtils import java.security.Security -import java.util.Locale import java.util.concurrent.TimeUnit import javax.inject.Inject import javax.inject.Singleton @@ -172,8 +167,6 @@ class NextcloudTalkApplication : MultiDexApplication(), LifecycleObserver { componentApplication.inject(this) - checkAndUpgradeDbCypher() - Coil.setImageLoader(buildDefaultImageLoader()) setAppTheme(appPreferences.theme) super.onCreate() @@ -262,47 +255,6 @@ class NextcloudTalkApplication : MultiDexApplication(), LifecycleObserver { .build() } - private fun checkAndUpgradeDbCypher() { - if (appPreferences.isDbCypherToUpgrade) { - val database = object : SqlCipherDatabaseSource( - this, - Models.DEFAULT, - this - .resources - .getString(R.string.nc_app_product_name) - .lowercase(Locale.getDefault()) - .replace(" ", "_") - .trim { it <= ' ' } + - ".sqlite", - this.getString(R.string.nc_talk_database_encryption_key), - DatabaseModule.DB_VERSION - ) { - override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { - checkAndUpdateCipherMigrationStatus(newVersion, appPreferences) - super.onUpgrade(db, oldVersion, newVersion) - } - } - - try { - val field = SQLiteOpenHelper::class.java.getDeclaredField("mHook") - field.isAccessible = true - field.set(database, hook) - } catch (e: NoSuchFieldException) { - Log.e("SqlCipherDatabaseSource", "Error accessing mHook field") - } catch (e: IllegalAccessException) { - Log.e("SqlCipherDatabaseSource", "Error setting mHook field") - } - - checkAndUpdateCipherMigrationStatus(database.writableDatabase.version, appPreferences) - } - } - - private fun checkAndUpdateCipherMigrationStatus(version: Int, appPreferences: AppPreferences) { - if (version >= CIPHER_V4_MIGRATION && appPreferences.isDbCypherToUpgrade) { - appPreferences.isDbCypherToUpgrade = false - } - } - companion object { private val TAG = NextcloudTalkApplication::class.java.simpleName const val FIFTY_PERCENT = 0.5 diff --git a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.kt b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.kt index 83252e813..e7c28718f 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.kt @@ -67,8 +67,6 @@ import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder import com.nextcloud.talk.utils.ssl.MagicTrustManager import de.cotech.hw.fido.WebViewFidoBridge import io.reactivex.disposables.Disposable -import io.requery.Persistable -import io.requery.reactivex.ReactiveEntityStore import org.greenrobot.eventbus.EventBus import java.lang.reflect.Field import java.net.CookieManager @@ -89,9 +87,6 @@ class WebViewLoginController(args: Bundle? = null) : NewBaseController( @Inject lateinit var userManager: UserManager - @Inject - lateinit var dataStore: ReactiveEntityStore - @Inject lateinit var magicTrustManager: MagicTrustManager diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java b/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java index c72db6da4..666817977 100644 --- a/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java +++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/DatabaseModule.java @@ -22,66 +22,20 @@ package com.nextcloud.talk.dagger.modules; import android.content.Context; -import androidx.annotation.NonNull; -import com.nextcloud.talk.R; + import com.nextcloud.talk.data.source.local.TalkDatabase; -import com.nextcloud.talk.models.database.Models; import com.nextcloud.talk.utils.preferences.AppPreferences; -import dagger.Module; -import dagger.Provides; -import io.requery.Persistable; -import io.requery.android.sqlcipher.SqlCipherDatabaseSource; -import io.requery.reactivex.ReactiveEntityStore; -import io.requery.reactivex.ReactiveSupport; -import io.requery.sql.Configuration; -import io.requery.sql.EntityDataStore; + import net.orange_box.storebox.StoreBox; -import net.sqlcipher.database.SQLiteDatabase; import javax.inject.Singleton; +import androidx.annotation.NonNull; +import dagger.Module; +import dagger.Provides; + @Module public class DatabaseModule { - public static final int DB_VERSION = 7; - - @Provides - @Singleton - public SqlCipherDatabaseSource provideSqlCipherDatabaseSource( - @NonNull final Context context, - final AppPreferences appPreferences) { - int version = DB_VERSION; - if (appPreferences.getIsDbRoomMigrated()) { - version++; - } - return new SqlCipherDatabaseSource( - context, - Models.DEFAULT, - context - .getResources() - .getString(R.string.nc_app_product_name) - .toLowerCase() - .replace(" ", "_") - .trim() - + ".sqlite", - context.getString(R.string.nc_talk_database_encryption_key), - version) { - @Override - public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { - if (newVersion < 7) { - super.onDowngrade(db, oldVersion, newVersion); - } - } - }; - } - - @Provides - @Singleton - public ReactiveEntityStore provideDataStore( - @NonNull final SqlCipherDatabaseSource sqlCipherDatabaseSource) { - final Configuration configuration = sqlCipherDatabaseSource.getConfiguration(); - return ReactiveSupport.toReactiveStore(new EntityDataStore<>(configuration)); - } - @Provides @Singleton public AppPreferences providePreferences(@NonNull final Context poContext) { diff --git a/app/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java b/app/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java deleted file mode 100644 index 897f20217..000000000 --- a/app/src/main/java/com/nextcloud/talk/models/database/ArbitraryStorage.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Nextcloud Talk application - * - * @author Mario Danic - * Copyright (C) 2017-2018 Mario Danic - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nextcloud.talk.models.database; - -import android.os.Parcelable; -import io.requery.Entity; -import io.requery.Key; -import io.requery.Persistable; - -import java.io.Serializable; - -/** - * Legacy arbitrary storage entity, please migrate to {@link com.nextcloud.talk.data.storage.model.ArbitraryStorage}. - */ -@Deprecated -@Entity -public interface ArbitraryStorage extends Parcelable, Persistable, Serializable { - @Key - long getAccountIdentifier(); - - String getKey(); - - String getObject(); - - String getValue(); -} diff --git a/app/src/main/java/com/nextcloud/talk/models/database/User.java b/app/src/main/java/com/nextcloud/talk/models/database/User.java deleted file mode 100644 index e92274498..000000000 --- a/app/src/main/java/com/nextcloud/talk/models/database/User.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Nextcloud Talk application - * - * @author Mario Danic - * @author Andy Scherzinger - * Copyright (C) 2021 Andy Scherzinger - * Copyright (C) 2017-2018 Mario Danic - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.nextcloud.talk.models.database; - -import android.os.Parcelable; - -import java.io.Serializable; - -import io.requery.Entity; -import io.requery.Generated; -import io.requery.Key; -import io.requery.Persistable; - -/** - * Legacy user entity, please migrate to {@link com.nextcloud.talk.data.user.model.User}. - */ -@Deprecated -@Entity -public interface User extends Parcelable, Persistable, Serializable { - String TAG = "UserEntity"; - - @Key - @Generated - long getId(); - - String getUserId(); - - String getUsername(); - - String getBaseUrl(); - - String getToken(); - - String getDisplayName(); - - String getPushConfigurationState(); - - String getCapabilities(); - - String getClientCertificate(); - - String getExternalSignalingServer(); - - boolean getCurrent(); - - boolean getScheduledForDeletion(); -} diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java index 403bca432..ff28cf031 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java @@ -32,7 +32,6 @@ import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.data.user.model.User; import com.nextcloud.talk.models.RetrofitBucket; -import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew; import org.jetbrains.annotations.NotNull; diff --git a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java index e96915cf5..b1cf49354 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java @@ -81,7 +81,6 @@ import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.data.user.model.User; import com.nextcloud.talk.events.UserMentionClickEvent; -import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.text.Spans; import org.greenrobot.eventbus.EventBus; @@ -93,7 +92,6 @@ import java.text.DateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; -import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java index 5f14a62b2..ecb07c351 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java +++ b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageModule.java @@ -19,18 +19,16 @@ */ package com.nextcloud.talk.utils.database.arbitrarystorage; -import autodagger.AutoInjector; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.arbitrarystorage.ArbitraryStorageManager; import com.nextcloud.talk.dagger.modules.DatabaseModule; import com.nextcloud.talk.data.storage.ArbitraryStoragesRepository; +import javax.inject.Inject; + +import autodagger.AutoInjector; import dagger.Module; import dagger.Provides; -import io.requery.Persistable; -import io.requery.reactivex.ReactiveEntityStore; - -import javax.inject.Inject; @Module(includes = DatabaseModule.class) @AutoInjector(NextcloudTalkApplication.class)