Skip to content

Commit

Permalink
Cleaned up persistence code
Browse files Browse the repository at this point in the history
  • Loading branch information
justjanne committed Feb 2, 2019
1 parent a0f361c commit 263a273
Show file tree
Hide file tree
Showing 50 changed files with 1,158 additions and 773 deletions.
7 changes: 4 additions & 3 deletions app/src/main/java/de/kuschku/quasseldroid/Quasseldroid.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ import dagger.android.AndroidInjector
import dagger.android.support.DaggerApplication
import de.kuschku.malheur.CrashHandler
import de.kuschku.quasseldroid.dagger.DaggerAppComponent
import de.kuschku.quasseldroid.persistence.AccountDatabase
import de.kuschku.quasseldroid.persistence.LegacyAccountDatabase
import de.kuschku.quasseldroid.persistence.db.AccountDatabase
import de.kuschku.quasseldroid.persistence.db.LegacyAccountDatabase
import de.kuschku.quasseldroid.persistence.models.Account
import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.SettingsMigration
import de.kuschku.quasseldroid.settings.SettingsMigrationManager
Expand Down Expand Up @@ -76,7 +77,7 @@ open class Quasseldroid : DaggerApplication() {

val accountDatabase = AccountDatabase.Creator.init(this)
accountDatabase.accounts().create(*accounts.map {
AccountDatabase.Account(
Account(
id = it.id,
host = it.host,
port = it.port,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ package de.kuschku.quasseldroid.dagger
import android.content.Context
import dagger.Module
import dagger.Provides
import de.kuschku.quasseldroid.persistence.AccountDatabase
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.db.AccountDatabase
import de.kuschku.quasseldroid.persistence.db.QuasselDatabase

@Module
class DatabaseModule {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ import de.kuschku.libquassel.session.ISession
import de.kuschku.libquassel.util.compatibility.LoggingHandler.Companion.log
import de.kuschku.libquassel.util.compatibility.LoggingHandler.LogLevel.DEBUG
import de.kuschku.libquassel.util.helpers.value
import de.kuschku.quasseldroid.persistence.*
import de.kuschku.quasseldroid.persistence.dao.findFirstByBufferId
import de.kuschku.quasseldroid.persistence.dao.get
import de.kuschku.quasseldroid.persistence.db.AccountDatabase
import de.kuschku.quasseldroid.persistence.db.QuasselDatabase
import de.kuschku.quasseldroid.persistence.util.QuasselBacklogStorage
import de.kuschku.quasseldroid.viewmodel.QuasselViewModel

class BacklogRequester(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@ import de.kuschku.libquassel.util.irc.SenderColorUtil
import de.kuschku.quasseldroid.GlideApp
import de.kuschku.quasseldroid.GlideRequest
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.all
import de.kuschku.quasseldroid.persistence.buffers
import de.kuschku.quasseldroid.persistence.markRead
import de.kuschku.quasseldroid.persistence.dao.all
import de.kuschku.quasseldroid.persistence.dao.buffers
import de.kuschku.quasseldroid.persistence.dao.markRead
import de.kuschku.quasseldroid.persistence.db.QuasselDatabase
import de.kuschku.quasseldroid.persistence.models.NotificationData
import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.settings.NotificationSettings
Expand Down Expand Up @@ -227,7 +228,7 @@ class QuasselNotificationBackend @Inject constructor(
}.map {
val network = session.network(it.bufferInfo.networkId)
val me = network?.me()
QuasselDatabase.NotificationData.of(
NotificationData.of(
messageId = it.messageId,
creationTime = now,
time = it.time,
Expand All @@ -254,7 +255,7 @@ class QuasselNotificationBackend @Inject constructor(
if (show) {
executor.schedule(
{
results.map(QuasselDatabase.NotificationData::bufferId).distinct().forEach { buffer ->
results.map(NotificationData::bufferId).distinct().forEach { buffer ->
this.showNotification(buffer)
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,13 @@ import de.kuschku.quasseldroid.BuildConfig
import de.kuschku.quasseldroid.Keys
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.defaults.Defaults
import de.kuschku.quasseldroid.persistence.*
import de.kuschku.quasseldroid.persistence.dao.buffers
import de.kuschku.quasseldroid.persistence.dao.clear
import de.kuschku.quasseldroid.persistence.dao.markHidden
import de.kuschku.quasseldroid.persistence.dao.markReadNormal
import de.kuschku.quasseldroid.persistence.db.AccountDatabase
import de.kuschku.quasseldroid.persistence.db.QuasselDatabase
import de.kuschku.quasseldroid.persistence.util.QuasselBacklogStorage
import de.kuschku.quasseldroid.settings.ConnectionSettings
import de.kuschku.quasseldroid.settings.NotificationSettings
import de.kuschku.quasseldroid.settings.Settings
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@

package de.kuschku.quasseldroid.ssl.custom

import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.dao.SslValidityWhitelistDao
import de.kuschku.quasseldroid.util.helper.isValid
import de.kuschku.quasseldroid.util.helper.sha1Fingerprint
import java.security.cert.X509Certificate

class QuasselCertificateManager(
private val validityWhitelist: QuasselDatabase.SslValidityWhitelistDao
private val validityWhitelist: SslValidityWhitelistDao
) {
fun isServerTrusted(chain: Array<out X509Certificate>?): Boolean {
// Verify input conditions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@
package de.kuschku.quasseldroid.ssl.custom

import de.kuschku.libquassel.connection.SocketAddress
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.dao.SslHostnameWhitelistDao
import de.kuschku.quasseldroid.util.helper.sha1Fingerprint
import java.security.cert.X509Certificate

class QuasselHostnameManager(
private val hostnameWhitelist: QuasselDatabase.SslHostnameWhitelistDao
private val hostnameWhitelist: SslHostnameWhitelistDao
) {
fun isValid(address: SocketAddress, chain: Array<out X509Certificate>): Boolean {
val leafCertificate = chain.firstOrNull() ?: return false
Expand Down
19 changes: 13 additions & 6 deletions app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,14 @@ import de.kuschku.libquassel.util.helpers.value
import de.kuschku.quasseldroid.Keys
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.defaults.DefaultNetworkServer
import de.kuschku.quasseldroid.persistence.*
import de.kuschku.quasseldroid.persistence.dao.clear
import de.kuschku.quasseldroid.persistence.dao.get
import de.kuschku.quasseldroid.persistence.dao.setFiltered
import de.kuschku.quasseldroid.persistence.db.AccountDatabase
import de.kuschku.quasseldroid.persistence.db.QuasselDatabase
import de.kuschku.quasseldroid.persistence.models.Filtered
import de.kuschku.quasseldroid.persistence.models.SslHostnameWhitelistEntry
import de.kuschku.quasseldroid.persistence.models.SslValidityWhitelistEntry
import de.kuschku.quasseldroid.settings.AutoCompleteSettings
import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.settings.Settings
Expand Down Expand Up @@ -465,7 +472,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
.onPositive { _, _ ->
runInBackground {
database.validityWhitelist().save(
QuasselDatabase.SslValidityWhitelistEntry(
SslValidityWhitelistEntry(
fingerprint = leafCertificate.sha1Fingerprint,
ignoreDate = true
)
Expand Down Expand Up @@ -502,14 +509,14 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
.onPositive { _, _ ->
runInBackground {
database.validityWhitelist().save(
QuasselDatabase.SslValidityWhitelistEntry(
SslValidityWhitelistEntry(
fingerprint = leafCertificate.sha1Fingerprint,
ignoreDate = !leafCertificate.isValid
)
)
accountDatabase.accounts().findById(accountId)?.let {
database.hostnameWhitelist().save(
QuasselDatabase.SslHostnameWhitelistEntry(
SslHostnameWhitelistEntry(
fingerprint = leafCertificate.sha1Fingerprint,
hostname = it.host
)
Expand Down Expand Up @@ -548,7 +555,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
.onPositive { _, _ ->
runInBackground {
database.hostnameWhitelist().save(
QuasselDatabase.SslHostnameWhitelistEntry(
SslHostnameWhitelistEntry(
fingerprint = leafCertificate.sha1Fingerprint,
hostname = it.address.host
)
Expand Down Expand Up @@ -892,7 +899,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
.fold(Message_Type.of()) { acc, i -> acc or i }

database.filtered().replace(
QuasselDatabase.Filtered.of(accountId, buffer, newlyFiltered.value.toInt())
Filtered.of(accountId, buffer, newlyFiltered.value.toInt())
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ import de.kuschku.libquassel.util.helpers.mapOrElse
import de.kuschku.libquassel.util.helpers.nullIf
import de.kuschku.libquassel.util.helpers.value
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.AccountDatabase
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.db.AccountDatabase
import de.kuschku.quasseldroid.persistence.db.QuasselDatabase
import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.ui.chat.ChatActivity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ package de.kuschku.quasseldroid.ui.chat.messages
import de.kuschku.libquassel.protocol.Message_Flag
import de.kuschku.libquassel.protocol.MsgId
import de.kuschku.libquassel.util.flag.hasFlag
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.models.MessageData

data class DisplayMessage(
val content: QuasselDatabase.MessageData,
val content: MessageData,
val hasDayChange: Boolean,
val isFollowUp: Boolean,
val isSelected: Boolean,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import de.kuschku.libquassel.protocol.Message_Flag
import de.kuschku.libquassel.protocol.Message_Type
import de.kuschku.libquassel.util.flag.hasFlag
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.models.MessageData
import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.util.helper.getOrPut
import de.kuschku.quasseldroid.util.helper.loadAvatars
Expand All @@ -58,9 +58,9 @@ class MessageAdapter @Inject constructor(
private val movementMethod = BetterLinkMovementMethod.newInstance()
private var clickListener: ((FormattedMessage) -> Unit)? = null
private var longClickListener: ((FormattedMessage) -> Unit)? = null
private var doubleClickListener: ((QuasselDatabase.MessageData) -> Unit)? = null
private var senderIconClickListener: ((QuasselDatabase.MessageData) -> Unit)? = null
private var expansionListener: ((QuasselDatabase.MessageData) -> Unit)? = null
private var doubleClickListener: ((MessageData) -> Unit)? = null
private var senderIconClickListener: ((MessageData) -> Unit)? = null
private var expansionListener: ((MessageData) -> Unit)? = null
private var urlLongClickListener: ((TextView, String) -> Boolean)? = null

fun setOnClickListener(listener: ((FormattedMessage) -> Unit)?) {
Expand All @@ -71,15 +71,15 @@ class MessageAdapter @Inject constructor(
this.longClickListener = listener
}

fun setOnDoubleClickListener(listener: ((QuasselDatabase.MessageData) -> Unit)?) {
fun setOnDoubleClickListener(listener: ((MessageData) -> Unit)?) {
this.doubleClickListener = listener
}

fun setOnSenderIconClickListener(listener: ((QuasselDatabase.MessageData) -> Unit)?) {
fun setOnSenderIconClickListener(listener: ((MessageData) -> Unit)?) {
this.senderIconClickListener = listener
}

fun setOnExpansionListener(listener: ((QuasselDatabase.MessageData) -> Unit)?) {
fun setOnExpansionListener(listener: ((MessageData) -> Unit)?) {
this.expansionListener = listener
}

Expand Down Expand Up @@ -180,9 +180,9 @@ class MessageAdapter @Inject constructor(
itemView: View,
clickListener: ((FormattedMessage) -> Unit)? = null,
longClickListener: ((FormattedMessage) -> Unit)? = null,
doubleClickListener: ((QuasselDatabase.MessageData) -> Unit)? = null,
senderIconClickListener: ((QuasselDatabase.MessageData) -> Unit)? = null,
expansionListener: ((QuasselDatabase.MessageData) -> Unit)? = null,
doubleClickListener: ((MessageData) -> Unit)? = null,
senderIconClickListener: ((MessageData) -> Unit)? = null,
expansionListener: ((MessageData) -> Unit)? = null,
movementMethod: BetterLinkMovementMethod
) : RecyclerView.ViewHolder(itemView) {
@BindView(R.id.daychange_container)
Expand Down Expand Up @@ -226,7 +226,7 @@ class MessageAdapter @Inject constructor(
var combined: TextView? = null

private var message: FormattedMessage? = null
private var original: QuasselDatabase.MessageData? = null
private var original: MessageData? = null

private val localClickListener = View.OnClickListener {
message?.let {
Expand Down Expand Up @@ -266,7 +266,7 @@ class MessageAdapter @Inject constructor(
avatar?.setOnClickListener(localSenderIconClickListener)
}

fun bind(message: FormattedMessage, original: QuasselDatabase.MessageData,
fun bind(message: FormattedMessage, original: MessageData,
hasDayChange: Boolean, messageSettings: MessageSettings) {
this.message = message
this.original = original
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ import de.kuschku.libquassel.util.helpers.value
import de.kuschku.libquassel.util.irc.HostmaskHelper
import de.kuschku.quasseldroid.GlideApp
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.*
import de.kuschku.quasseldroid.persistence.dao.*
import de.kuschku.quasseldroid.persistence.db.AccountDatabase
import de.kuschku.quasseldroid.persistence.db.QuasselDatabase
import de.kuschku.quasseldroid.persistence.models.MessageData
import de.kuschku.quasseldroid.service.BacklogRequester
import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.AutoCompleteSettings
Expand Down Expand Up @@ -333,9 +336,9 @@ class MessageListFragment : ServiceBoundFragment() {
}
})

fun processMessages(list: List<QuasselDatabase.MessageData>, selected: Set<MsgId>,
fun processMessages(list: List<MessageData>, selected: Set<MsgId>,
expanded: Set<MsgId>, markerLine: MsgId?): List<DisplayMessage> {
var previous: QuasselDatabase.MessageData? = null
var previous: MessageData? = null
var previousDate: ZonedDateTime? = null
return list.mapReverse {
val date = it.time.atZone(ZoneId.systemDefault()).truncatedTo(ChronoUnit.DAYS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ package de.kuschku.quasseldroid.ui.chat.messages
import android.content.Context
import androidx.annotation.LayoutRes
import de.kuschku.libquassel.protocol.Message_Type
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.models.MessageData
import de.kuschku.quasseldroid.viewmodel.data.FormattedMessage

interface MessageRenderer {
Expand All @@ -34,7 +34,7 @@ interface MessageRenderer {
isSelf: Boolean): Int

fun bind(holder: MessageAdapter.QuasselMessageViewHolder, message: FormattedMessage,
original: QuasselDatabase.MessageData)
original: MessageData)

fun render(context: Context, message: DisplayMessage): FormattedMessage

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ import de.kuschku.libquassel.util.flag.hasFlag
import de.kuschku.libquassel.util.irc.HostmaskHelper
import de.kuschku.libquassel.util.irc.SenderColorUtil
import de.kuschku.quasseldroid.R
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.models.MessageData
import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.util.ColorContext
import de.kuschku.quasseldroid.util.avatars.AvatarHelper
Expand Down Expand Up @@ -228,7 +228,7 @@ class QuasselMessageRenderer @Inject constructor(
}

override fun bind(holder: MessageAdapter.QuasselMessageViewHolder, message: FormattedMessage,
original: QuasselDatabase.MessageData) =
original: MessageData) =
holder.bind(message,
original,
hasDayChange = message.hasDayChange,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@

package de.kuschku.quasseldroid.ui.clientsettings.whitelist

import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.persistence.models.SslHostnameWhitelistEntry
import de.kuschku.quasseldroid.persistence.models.SslValidityWhitelistEntry

data class Whitelist(
val certificates: List<QuasselDatabase.SslValidityWhitelistEntry>,
val hostnames: List<QuasselDatabase.SslHostnameWhitelistEntry>
val certificates: List<SslValidityWhitelistEntry>,
val hostnames: List<SslHostnameWhitelistEntry>
)
Loading

0 comments on commit 263a273

Please sign in to comment.