Skip to content

Commit

Permalink
Job inject
Browse files Browse the repository at this point in the history
  • Loading branch information
SeniorZhai committed Nov 27, 2024
1 parent 948d441 commit 9c9ea4a
Show file tree
Hide file tree
Showing 15 changed files with 96 additions and 182 deletions.
6 changes: 3 additions & 3 deletions app/src/main/java/one/mixin/android/db/DaoExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ suspend fun OutputDao.insertUnspentOutputs(outputs: List<Output>) =
fun MixinDatabase.deleteMessageById(messageId: String) {
runInTransaction {
pinMessageDao().deleteByMessageId(messageId)
mentionMessageDao().deleteMessage(messageId)
messageMentionDao().deleteMessage(messageId)
messageDao().deleteMessageById(messageId)
remoteMessageStatusDao().deleteByMessageId(messageId)
expiredMessageDao().deleteByMessageId(messageId)
Expand All @@ -207,7 +207,7 @@ fun MixinDatabase.deleteMessageById(
) {
runInTransaction {
pinMessageDao().deleteByMessageId(messageId)
mentionMessageDao().deleteMessage(messageId)
messageMentionDao().deleteMessage(messageId)
messageDao().deleteMessageById(messageId)
conversationExtDao().decrement(conversationId)
remoteMessageStatusDao().deleteByMessageId(messageId)
Expand All @@ -219,7 +219,7 @@ fun MixinDatabase.deleteMessageById(
fun MixinDatabase.deleteMessageByIds(messageIds: List<String>) {
runInTransaction {
pinMessageDao().deleteByIds(messageIds)
mentionMessageDao().deleteMessage(messageIds)
messageMentionDao().deleteMessage(messageIds)
messageDao().deleteMessageById(messageIds)
remoteMessageStatusDao().deleteByMessageIds(messageIds)
expiredMessageDao().deleteByMessageId(messageIds)
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/one/mixin/android/db/MixinDatabase.kt
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ abstract class MixinDatabase : RoomDatabase() {

abstract fun favoriteAppDao(): FavoriteAppDao

abstract fun mentionMessageDao(): MessageMentionDao
abstract fun messageMentionDao(): MessageMentionDao

abstract fun circleDao(): CircleDao

Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/one/mixin/android/di/DatabaseModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ internal object DatabaseModule {
fun providesFavoriteAppDao(db: MixinDatabase) = db.favoriteAppDao()

@Provides
fun providesMentionMessageDao(db: MixinDatabase) = db.mentionMessageDao()
fun providesMentionMessageDao(db: MixinDatabase) = db.messageMentionDao()

@Provides
fun providesCircleDao(db: MixinDatabase) = db.circleDao()
Expand Down
234 changes: 74 additions & 160 deletions app/src/main/java/one/mixin/android/job/BaseJob.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import one.mixin.android.db.CircleConversationDao
import one.mixin.android.db.CircleDao
import one.mixin.android.db.ConversationDao
import one.mixin.android.db.ConversationExtDao
import one.mixin.android.db.DatabaseProvider
import one.mixin.android.db.ExpiredMessageDao
import one.mixin.android.db.FavoriteAppDao
import one.mixin.android.db.HistoryPriceDao
Expand Down Expand Up @@ -100,15 +101,7 @@ abstract class BaseJob(params: Params) : Job(params) {

@Inject
@Transient
lateinit var ftsDatabase: FtsDatabase

@Inject
@Transient
lateinit var mixinDatabase: MixinDatabase

@Inject
@Transient
lateinit var pendingDatabase: PendingDatabase
lateinit var databaseProvider: DatabaseProvider

@Inject
@Transient
Expand Down Expand Up @@ -160,224 +153,144 @@ abstract class BaseJob(params: Params) : Job(params) {

@Inject
@Transient
lateinit var messageDao: MessageDao
lateinit var chatWebSocket: ChatWebSocket

@Inject
@Transient
lateinit var messageHistoryDao: MessageHistoryDao
// @Inject
// @Transient
// lateinit var conversationRepo: ConversationRepository

@Inject
@Transient
lateinit var userDao: UserDao
// @Inject
// @Transient
// lateinit var userRepo: UserRepository

@Inject
@Transient
lateinit var conversationDao: ConversationDao
// @Inject
// @Transient
// lateinit var assetRepo: TokenRepository

@Inject
@Transient
lateinit var conversationExtDao: ConversationExtDao
lateinit var signalProtocol: SignalProtocol

@Inject
@Transient
lateinit var participantDao: ParticipantDao
lateinit var encryptedProtocol: EncryptedProtocol

@Inject
@Transient
lateinit var participantSessionDao: ParticipantSessionDao

@Inject
@Transient
lateinit var offsetDao: OffsetDao
lateinit var linkState: LinkState

@Inject
@Transient
lateinit var assetDao: AssetDao

@Inject
@Transient
lateinit var tokenDao: TokenDao
lateinit var tip: Tip

@Inject
@Transient
lateinit var tokensExtraDao: TokensExtraDao

@Inject
@Transient
lateinit var snapshotDao: SnapshotDao
lateinit var tipCounterSynced: TipCounterSyncedLiveData

@Inject
@Transient
lateinit var chainDao: ChainDao
lateinit var tipService: TipService

@Inject
@Transient
lateinit var chatWebSocket: ChatWebSocket
lateinit var web3Service: Web3Service

@Inject
@ApplicationScope
@Transient
lateinit var conversationRepo: ConversationRepository

@Inject
@Transient
lateinit var userRepo: UserRepository
lateinit var applicationScope: CoroutineScope

@Inject
@Transient
lateinit var assetRepo: TokenRepository

@Inject
@Transient
lateinit var stickerDao: StickerDao
lateinit var jobSenderKey: JobSenderKey

@Inject
@Transient
lateinit var hyperlinkDao: HyperlinkDao
val mixinDatabase: MixinDatabase by lazy { databaseProvider.getMixinDatabase() }

@Inject
@Transient
lateinit var stickerAlbumDao: StickerAlbumDao
val ftsDatabase: FtsDatabase by lazy { databaseProvider.getFtsDatabase() }

@Inject
@Transient
lateinit var stickerRelationshipDao: StickerRelationshipDao
val pendingDatabase: PendingDatabase by lazy { databaseProvider.getPendingDatabase() }

@Inject
@Transient
lateinit var addressDao: AddressDao
val messageDao: MessageDao by lazy { databaseProvider.getMixinDatabase().messageDao() }

@Inject
@Transient
lateinit var topAssetDao: TopAssetDao
val messageHistoryDao: MessageHistoryDao by lazy { databaseProvider.getMixinDatabase().messageHistoryDao() }

@Inject
@Transient
lateinit var jobDao: JobDao
val userDao: UserDao by lazy { databaseProvider.getMixinDatabase().userDao() }

@Inject
@Transient
lateinit var favoriteAppDao: FavoriteAppDao
val conversationDao: ConversationDao by lazy { databaseProvider.getMixinDatabase().conversationDao() }

@Inject
@Transient
lateinit var messageMentionDao: MessageMentionDao
val conversationExtDao: ConversationExtDao by lazy { databaseProvider.getMixinDatabase().conversationExtDao() }

@Inject
@Transient
lateinit var appDao: AppDao
val participantDao: ParticipantDao by lazy { databaseProvider.getMixinDatabase().participantDao() }

@Inject
@Transient
lateinit var circleDao: CircleDao
val participantSessionDao: ParticipantSessionDao by lazy { databaseProvider.getMixinDatabase().participantSessionDao() }

@Inject
@Transient
lateinit var circleConversationDao: CircleConversationDao
val offsetDao: OffsetDao by lazy { databaseProvider.getMixinDatabase().offsetDao() }

@Inject
@Transient
lateinit var transcriptMessageDao: TranscriptMessageDao
val assetDao: AssetDao by lazy { databaseProvider.getMixinDatabase().assetDao() }

@Inject
@Transient
lateinit var pinMessageDao: PinMessageDao
val tokenDao: TokenDao by lazy { databaseProvider.getMixinDatabase().tokenDao() }

@Inject
@Transient
lateinit var propertyDao: PropertyDao
val tokensExtraDao: TokensExtraDao by lazy { databaseProvider.getMixinDatabase().tokensExtraDao() }

@Inject
@Transient
lateinit var remoteMessageStatusDao: RemoteMessageStatusDao
val snapshotDao: SnapshotDao by lazy { databaseProvider.getMixinDatabase().snapshotDao() }

@Inject
@Transient
lateinit var expiredMessageDao: ExpiredMessageDao
val chainDao: ChainDao by lazy { databaseProvider.getMixinDatabase().chainDao() }

@Inject
@Transient
lateinit var outputDao: OutputDao
val stickerDao: StickerDao by lazy { databaseProvider.getMixinDatabase().stickerDao() }

@Inject
@Transient
lateinit var rawTransactionDao: RawTransactionDao
val hyperlinkDao: HyperlinkDao by lazy { databaseProvider.getMixinDatabase().hyperlinkDao() }

@Inject
@Transient
lateinit var safeSnapshotDao: SafeSnapshotDao
val stickerAlbumDao: StickerAlbumDao by lazy { databaseProvider.getMixinDatabase().stickerAlbumDao() }

@Inject
@Transient
lateinit var inscriptionDao: InscriptionDao
val stickerRelationshipDao: StickerRelationshipDao by lazy { databaseProvider.getMixinDatabase().stickerRelationshipDao() }

@Inject
@Transient
lateinit var marketDao: MarketDao
val addressDao: AddressDao by lazy { databaseProvider.getMixinDatabase().addressDao() }

@Inject
@Transient
lateinit var marketFavoredDao: MarketFavoredDao
val topAssetDao: TopAssetDao by lazy { databaseProvider.getMixinDatabase().topAssetDao() }

@Inject
@Transient
lateinit var alertDao: AlertDao
val jobDao: JobDao by lazy { databaseProvider.getMixinDatabase().jobDao() }

@Inject
@Transient
lateinit var marketCapRankDao: MarketCapRankDao
val favoriteAppDao: FavoriteAppDao by lazy { databaseProvider.getMixinDatabase().favoriteAppDao() }

@Inject
@Transient
lateinit var marketCoinDao: MarketCoinDao
val messageMentionDao: MessageMentionDao by lazy { databaseProvider.getMixinDatabase().messageMentionDao() }

@Inject
@Transient
lateinit var historyPriceDao: HistoryPriceDao
val appDao: AppDao by lazy { databaseProvider.getMixinDatabase().appDao() }

@Inject
@Transient
lateinit var inscriptionCollectionDao: InscriptionCollectionDao
val circleDao: CircleDao by lazy { databaseProvider.getMixinDatabase().circleDao() }

@Inject
@Transient
lateinit var signalProtocol: SignalProtocol
val circleConversationDao: CircleConversationDao by lazy { databaseProvider.getMixinDatabase().circleConversationDao() }

@Inject
@Transient
lateinit var encryptedProtocol: EncryptedProtocol
val transcriptMessageDao: TranscriptMessageDao by lazy { databaseProvider.getMixinDatabase().transcriptDao() }

@Transient
@Inject
lateinit var appDatabase: MixinDatabase
val pinMessageDao: PinMessageDao by lazy { databaseProvider.getMixinDatabase().pinMessageDao() }

@Transient
@Inject
lateinit var linkState: LinkState
val propertyDao: PropertyDao by lazy { databaseProvider.getMixinDatabase().propertyDao() }

@Transient
@Inject
lateinit var tip: Tip
val remoteMessageStatusDao: RemoteMessageStatusDao by lazy { databaseProvider.getMixinDatabase().remoteMessageStatusDao() }

@Transient
@Inject
lateinit var tipCounterSynced: TipCounterSyncedLiveData
val expiredMessageDao: ExpiredMessageDao by lazy { databaseProvider.getMixinDatabase().expiredMessageDao() }

@Inject
@Transient
lateinit var tipService: TipService
val outputDao: OutputDao by lazy { databaseProvider.getMixinDatabase().outputDao() }

@Inject
@Transient
lateinit var web3Service: Web3Service
val rawTransactionDao: RawTransactionDao by lazy { databaseProvider.getMixinDatabase().rawTransactionDao() }

@ApplicationScope
@Transient
@Inject
lateinit var applicationScope: CoroutineScope
val safeSnapshotDao: SafeSnapshotDao by lazy { databaseProvider.getMixinDatabase().safeSnapshotDao() }

@Transient
@Inject
lateinit var jobSenderKey: JobSenderKey
val inscriptionDao: InscriptionDao by lazy { databaseProvider.getMixinDatabase().inscriptionDao() }

val marketDao: MarketDao by lazy { databaseProvider.getMixinDatabase().marketDao() }

val marketFavoredDao: MarketFavoredDao by lazy { databaseProvider.getMixinDatabase().marketFavoredDao() }

val alertDao: AlertDao by lazy { databaseProvider.getMixinDatabase().alertDao() }

val marketCapRankDao: MarketCapRankDao by lazy { databaseProvider.getMixinDatabase().marketCapRankDao() }

val marketCoinDao: MarketCoinDao by lazy { databaseProvider.getMixinDatabase().marketCoinDao() }

val historyPriceDao: HistoryPriceDao by lazy { databaseProvider.getMixinDatabase().historyPriceDao() }

val inscriptionCollectionDao: InscriptionCollectionDao by lazy { databaseProvider.getMixinDatabase().inscriptionCollectionDao() }

open fun shouldRetry(throwable: Throwable): Boolean {
if (throwable is SocketTimeoutException) {
Expand Down Expand Up @@ -419,6 +332,7 @@ abstract class BaseJob(params: Params) : Job(params) {
}

override fun onAdded() {
databaseProvider.initAllDatabases()
}

override fun onCancel(
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/one/mixin/android/job/ConversationJob.kt
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class ConversationJob(
if (r != null && r.isSuccess && r.data != null) {
val cr = r.data!!
if (type == TYPE_CREATE) {
conversationRepo.insertOrUpdateConversation(cr)
// conversationRepo.insertOrUpdateConversation(cr)
val participants = mutableListOf<Participant>()
cr.participants.mapTo(participants) {
Participant(cr.conversationId, it.userId, it.role, cr.createdAt)
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/one/mixin/android/job/ConvertDataJob.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class ConvertDataJob(
}

override fun onAdded() {
appDatabase.insertMessage(message)
mixinDatabase.insertMessage(message)
MessageFlow.insert(message.conversationId, message.messageId)
}

Expand Down
Loading

0 comments on commit 9c9ea4a

Please sign in to comment.