Merge branch 'message_store_observer' into suspend-branch

# Conflicts:
#	app/libs/androidcopysdk-signal-debug2.aar
#	app/libs/androidcopysdk-signal-release2.aar
This commit is contained in:
TELEMESSAGE\Shilo 2024-02-18 15:30:43 +02:00
commit 8b12fbb596
15 changed files with 52 additions and 77 deletions

View file

@ -3,24 +3,20 @@ package com.tm.authenticatorsdk.selfAuthenticator
import android.app.Activity
import android.app.AlertDialog
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
import android.os.Handler
import android.os.Looper
import com.tm.androidcopysdk.AndroidCopySDK
import com.tm.androidcopysdk.ISendLogCallback
import com.tm.androidcopysdk.utils.PrefManager
import com.tm.logger.BuildConfig
import com.tm.logger.Log
import org.archiver.ArchiveConstants
import org.archiver.ArchivePreferenceConstants
import org.selfAuthentication.AuthenticationUtils
import org.selfAuthentication.ProgressDialog
import org.selfAuthentication.SelfAuthenticatorManager
import org.tm.archive.ApplicationContext
import org.tm.archive.R
import java.util.*
import java.util.Calendar
class SelfAuthenticationDialogBuilder : ISendLogCallback{
@ -170,19 +166,19 @@ class SelfAuthenticationDialogBuilder : ISendLogCallback{
mLogsSentContext = context
val name = PrefManager.getStringPref(context, ArchivePreferenceConstants.PREF_KEY_DEVICE_NAME, "")
val freeText = TEXT_MESSAGE_FOR_SENDING_LOGS
AndroidCopySDK.getInstance(context).sentLogs(
context,
this,
PrefManager.getStringPref(context, ArchivePreferenceConstants.PREF_KEY_DEVICE_PHONE_NUMBER, ""),
"Signal logs - " + Calendar.getInstance().time.toString(),
name,
freeText,
"",
"",
"",
ArchiveConstants.GENERATE_TOK_NAME,
ArchiveConstants.GENERATE_TOK_PASS
)
AndroidCopySDK.getInstance(context).sentLogs(
context,
this,
PrefManager.getStringPref(context, ArchivePreferenceConstants.PREF_KEY_DEVICE_PHONE_NUMBER, ""),
"Signal logs - " + Calendar.getInstance().time.toString(),
name,
freeText,
"",
"",
"",
ArchiveConstants.GENERATE_TOK_NAME,
ArchiveConstants.GENERATE_TOK_PASS
)
}
fun showDialogInTheActivity(activity: Activity, dialog: AlertDialog){

View file

@ -345,7 +345,6 @@ class AppSettingsFragment : DSLSettingsFragment(
builder.setPositiveButton(R.string.ShareActivity__send) { dialog, which ->
mProgressDialog.show()
AndroidCopySDK.getInstance(context).sentLogs(
activity,
this,

View file

@ -3,14 +3,11 @@ package org.tm.archive.database
import android.app.Application
import android.content.Context
import androidx.annotation.VisibleForTesting
import com.tm.androidcopysdk.api.IDatabase
import com.tm.androidcopysdk.api.IArchiveMessageDao
import com.tm.androidcopysdk.api.IMessageStoreObserver
import com.tm.androidcopysdk.device.DefaultMessageStoreObserver
import com.tm.androidcopysdk.api.IDatabase
import net.zetetic.database.sqlcipher.SQLiteOpenHelper
import org.archiver.data.TeleAttachmentTable
import org.archiver.data.TeleMessageTable
import org.archiver.di.TeleMessageApplicationDependencyProvider
import org.signal.core.util.SqlUtil
import org.signal.core.util.logging.Log
import org.signal.core.util.withinTransaction
@ -44,9 +41,8 @@ open class SignalDatabase(private val context: Application, databaseSecret: Data
),
SignalDatabaseOpenHelper, IDatabase<Long> { // TM_SA implement IDatabase
private val messageStoreObserver = TeleMessageApplicationDependencyProvider.messageStoreObserver // TM_SA
val messageTable: MessageTable = TeleMessageTable(context, this, messageStoreObserver) // TM_SA TeleMessageTable
val attachmentTable: AttachmentTable = TeleAttachmentTable(context, this, attachmentSecret, messageStoreObserver) // TM_SA TeleAttachmentTable
val messageTable: MessageTable = TeleMessageTable(context, this) // TM_SA TeleMessageTable
val attachmentTable: AttachmentTable = TeleAttachmentTable(context, this, attachmentSecret) // TM_SA TeleAttachmentTable
val mediaTable: MediaTable = MediaTable(context, this)
val threadTable: ThreadTable = ThreadTable(context, this)
val identityTable: IdentityTable = IdentityTable(context, this)

View file

@ -1,5 +1,8 @@
package org.tm.archive.registration.fragments;
import static org.tm.archive.registration.fragments.RegistrationViewDelegate.setDebugLogSubmitMultiTapView;
import static org.tm.archive.registration.fragments.RegistrationViewDelegate.showConfirmNumberDialogIfTranslated;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
@ -65,7 +68,6 @@ import org.selfAuthentication.SelfAuthenticatorManager;
import org.signal.core.util.ThreadUtil;
import org.signal.core.util.concurrent.LifecycleDisposable;
import org.signal.core.util.logging.Log;
import org.tm.archive.ApplicationContext;
import org.tm.archive.BuildConfig;
import org.tm.archive.LoggingFragment;
import org.tm.archive.R;
@ -93,9 +95,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.disposables.Disposable;
import static org.tm.archive.registration.fragments.RegistrationViewDelegate.setDebugLogSubmitMultiTapView;
import static org.tm.archive.registration.fragments.RegistrationViewDelegate.showConfirmNumberDialogIfTranslated;
public final class EnterPhoneNumberFragment extends LoggingFragment implements RegistrationNumberInputController.Callbacks
, IAuthenticationStatus, IMDMAuthenticator //*TM_SA*//
{

View file

@ -40,17 +40,17 @@ class ArchiveSender {
if(archiveFile == null || archiveFile[0] == null) {
android.util.Log.d("DavidLogger", "setMessage $uniqueMessageId")
DataGrabber.getInstance(context).setMessage(aProtocolType.type, toRecipientsList, from, messageBody, uniqueMessageId, dateInTimeStamp.toString(), subject, ArchiveUtil.getPhoneNumberInTestMode(context), chatMode, chatName, chatId, fromNameString, from, toRecipientsListNames, toRecipientsList)
// DataGrabber.getInstance(context).setMessage(aProtocolType.type, toRecipientsList, from, messageBody, uniqueMessageId, dateInTimeStamp.toString(), subject, ArchiveUtil.getPhoneNumberInTestMode(context), chatMode, chatName, chatId, fromNameString, from, toRecipientsListNames, toRecipientsList)
}else {
android.util.Log.d("DavidLogger", "setMmsMessage(${getCallerClassMethodAndLine(2)}) $uniqueMessageId ${archiveFile.map { it?.absolutePath }}")
DataGrabber.getInstance(context).setMmsMessage(aProtocolType.type, toRecipientsList, from, messageBody, uniqueMessageId /*+ "M"*/, dateInTimeStamp.toString(), subject, ArchiveUtil.getPhoneNumberInTestMode(context), chatMode, chatName, chatId, fromNameString, from, toRecipientsListNames, toRecipientsList, archiveFile)
// DataGrabber.getInstance(context).setMmsMessage(aProtocolType.type, toRecipientsList, from, messageBody, uniqueMessageId /*+ "M"*/, dateInTimeStamp.toString(), subject, ArchiveUtil.getPhoneNumberInTestMode(context), chatMode, chatName, chatId, fromNameString, from, toRecipientsListNames, toRecipientsList, archiveFile)
}
}
fun updateArchiveSDKToSendMMSMessage(context: Context, fileName: String, needCompress: Boolean){
android.util.Log.d("DavidLogger", "updateFileMms(${getCallerClassMethodAndLine(2)}) $fileName")
DataGrabber.getInstance(context).updateFileMms(fileName, needCompress)
// DataGrabber.getInstance(context).updateFileMms(fileName, needCompress)
}
fun archiveMessageInbox(context: Context, type: ArchiveConstants.ProtocolType, archiveRecipient: Recipient, message: IncomingMessage, messageId: Long, groupTile: String) {

View file

@ -11,7 +11,6 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.archiver.ArchiveUtil.Companion.fetchFCMToken
import org.archiver.ArchiveUtil.Companion.getFCMTokenIfExists
import org.tm.archive.ApplicationContext
import org.tm.archive.dependencies.ApplicationDependencies
import org.tm.archive.gcm.FcmUtil
import org.tm.archive.jobs.FcmRefreshJob
@ -123,8 +122,7 @@ class FCMConnector {
@JvmStatic
fun updateSignUpCredentials(context: Context, userName: String?, password: String?) {
AndroidCopySDK.getInstance(context)
.signupSucess(userName, password)
AndroidCopySDK.getInstance(context).signupSucess(userName, password)
}
}

View file

@ -5,7 +5,6 @@ import com.tm.androidcopysdk.model.ArchiveMessage
import com.tm.androidcopysdk.model.ArchiveMessageType
import com.tm.androidcopysdk.model.Direction
import com.tm.androidcopysdk.model.Timestamp
import org.archiver.model.Messages.archiveType
import org.archiver.model.Messages.isCallMessage
import org.archiver.model.Messages.isMultimediaMessage
import org.archiver.model.Messages.isSmsMessage
@ -48,17 +47,17 @@ class SignalArchiveMessageConverter(
accountPhoneNumber = accountPhoneNumber,
type = type,
direction = if (message.isOutgoing) Direction.Outgoing else Direction.Incoming,
archiveType = message.archiveType(),
status = message.status(),
isDeleted = isDeleted,
isRemoteDeleted = message.isRemoteDelete,
isForwarded = false,
body = message.getDisplayBody(context).toString(),
timestamp = Timestamp(message.timestamp),
chat = chatConverter.convert(message),
sender = sender,
receivers = receivers,
attachments = attachmentConverter.convert(message),
callInfo = callInfoConverter.convert(message, type, startedAt),
callInfo = listOfNotNull(callInfoConverter.convert(message, type, startedAt)),
edits = null,
headers = null
)

View file

@ -27,8 +27,8 @@ class SignalChatConverter(
private fun getChatId(chatRecipient: Recipient?, type: ChatType): String? {
if (type == ChatType.Group)
return chatRecipient?.groupId?.getOrNull()?.toString()
return chatRecipient?.serviceId?.getOrNull()?.toString()// ?: chatRecipient?.id?.toLong()?.toString()
return chatRecipient?.groupId?.getOrNull()?.toString()?.split(":")?.lastOrNull()
return chatRecipient?.serviceId?.getOrNull()?.toString()?.split(":")?.lastOrNull()// ?: chatRecipient?.id?.toLong()?.toString()
}
}

View file

@ -2,6 +2,7 @@ package org.archiver.data
import android.content.Context
import com.tm.androidcopysdk.api.IMessageStoreObserver
import org.archiver.di.TeleMessageApplicationDependencyProvider
import org.tm.archive.attachments.Attachment
import org.tm.archive.attachments.AttachmentId
import org.tm.archive.attachments.DatabaseAttachment
@ -18,10 +19,10 @@ class TeleAttachmentTable(
attachmentSecret: AttachmentSecret,
private val messageStoreObserver: IMessageStoreObserver<Long>,
) : AttachmentTable(context, databaseHelper, attachmentSecret) {
private val messageStoreObserver: IMessageStoreObserver<Long> = TeleMessageApplicationDependencyProvider.messageStoreObserver
override fun insertAttachmentForPreUpload(attachment: Attachment): DatabaseAttachment {
val result = super.insertAttachmentForPreUpload(attachment)
messageStoreObserver.afterMessageIdStateChanged(result.mmsId)

View file

@ -1,13 +1,12 @@
package org.archiver.data
import android.content.Context
import android.util.Log
import com.tm.androidcopysdk.model.ArchiveMessage
import com.tm.androidcopysdk.api.IArchiveMessageDao
import com.tm.androidcopysdk.api.IMessageStoreObserver
import com.tm.androidcopysdk.model.ArchiveMessage
import org.archiver.ArchiveUtil
import org.archiver.converter.SignalArchiveMessageConverter
import org.archiver.model.Messages.chatRecipient
import org.archiver.di.TeleMessageApplicationDependencyProvider
import org.signal.core.util.Stopwatch
import org.tm.archive.database.CallTable
import org.tm.archive.database.MessageTable
@ -27,10 +26,10 @@ class TeleMessageTable(
databaseHelper: SignalDatabase,
private val messageStoreObserver: IMessageStoreObserver<Long>,
) : MessageTable(context, databaseHelper), IArchiveMessageDao<Long> {
private val messageStoreObserver: IMessageStoreObserver<Long> = TeleMessageApplicationDependencyProvider.messageStoreObserver
private val converter = SignalArchiveMessageConverter(context)
override fun find(id: Long): ArchiveMessage? = converter.convert(getMessageRecordOrNull(id), getAccountPhoneNumber())

View file

@ -1,11 +1,10 @@
package org.archiver.device
import android.app.Application
import com.tm.androidcopysdk.api.IFiler
import com.tm.logger.Log
import org.archiver.data.TeleMessageTable
import org.archiver.di.TeleMessageApplicationDependencyProvider.Companion.getSdkModule
import org.signal.ringrtc.CallId
import org.signal.ringrtc.CallManager.CallEvent
import org.signal.ringrtc.GroupCall
import org.signal.ringrtc.Remote
import org.tm.archive.database.SignalDatabase
@ -15,12 +14,12 @@ import org.tm.archive.service.webrtc.state.WebRtcServiceState
class TeleMessageSignalCallManager(
application: Application,
private val filer: IFiler
) : SignalCallManager(application) {
private var callInfoState: CallInfoState? = null
private val sdkModule by lazy { application.getSdkModule(requireNotNull(SignalDatabase.instance)) }
override fun postStateUpdate(state: WebRtcServiceState) {
val callId = state.callInfoState.getCallId()
Log.d(TAG, "postStateUpdate - callId: $callId")
@ -46,7 +45,7 @@ class TeleMessageSignalCallManager(
val call = callInfoState.call() ?: return
val isAdHocCall = callInfoState.callRecipient.isCallLink
if (isAdHocCall) {
sdkModule.filer.findCallRecording(call.callId.toString())?.apply { if (exists()) delete() }
filer.findCallRecording(call.callId.toString())?.apply { if (exists()) delete() }
return
}
(SignalDatabase.messages as TeleMessageTable).onSubmitCall(call, callConnectedTime)

View file

@ -15,8 +15,9 @@ import com.tm.androidcopysdk.database.DefaultArchiveDatabase
import com.tm.androidcopysdk.device.DefaultMessageStoreObserver
import com.tm.androidcopysdk.model.ArchiveSettings
import kotlinx.coroutines.flow.MutableStateFlow
import com.tm.androidcopysdk.api.IFiler
import com.tm.androidcopysdk.model.ClientType
import org.archiver.device.TeleMessageSignalCallManager
import org.archiver.model.SignalArchiveType
import org.archiver.model.SignalFiler
import org.tm.archive.database.SignalDatabase
import org.tm.archive.dependencies.ApplicationDependencyProvider
@ -27,8 +28,10 @@ class TeleMessageApplicationDependencyProvider(
) : ApplicationDependencyProvider(application) {
val filer: IFiler by lazy { SignalFiler(application.applicationContext, SignalDatabase.attachments) }
override fun provideSignalCallManager(): SignalCallManager {
return TeleMessageSignalCallManager(application)
return TeleMessageSignalCallManager(application, filer)
}
companion object {
@ -41,10 +44,10 @@ class TeleMessageApplicationDependencyProvider(
var sdkModule = sdkModule
if (sdkModule == null) {
val sdk = AndroidCopySDK.getInstance(applicationContext)
val archiveDatabase: IArchiveDatabase = DefaultArchiveDatabase(this, SignalArchiveType.coreValues())
val archiveDatabase: IArchiveDatabase = DefaultArchiveDatabase(this)
val filer = SignalFiler(applicationContext, database.attachmentTable)
val settings = MutableStateFlow(ArchiveSettings(isAppActivated = true))
sdkModule = SdkModule(sdk, DataGrabber.getInstance(applicationContext), database, archiveDatabase, filer, settings)
sdkModule = SdkModule(sdk, DataGrabber.getInstance(applicationContext), ClientType.Signal, database, archiveDatabase, filer, settings)
TeleMessageApplicationDependencyProvider.sdkModule = sdkModule
}
return sdkModule

View file

@ -1,12 +1,9 @@
package org.archiver.model
import com.tm.androidcopysdk.model.ChatType
import com.tm.androidcopysdk.model.IArchiveType
import com.tm.androidcopysdk.model.MessageStatus
import org.signal.glide.Log
import org.tm.archive.database.model.MessageRecord
import org.tm.archive.database.model.MmsMessageRecord
import org.tm.archive.database.model.StoryType
import org.tm.archive.ringrtc.RemotePeer
import org.tm.archive.util.isMediaMessage
@ -47,8 +44,6 @@ object Messages {
return MessageStatus.None
}
fun MessageRecord.archiveType(): IArchiveType = SignalArchiveType.AppMessage
fun MessageRecord.chatRecipient() = fromRecipient.takeUnless { isOutgoing } ?: toRecipient
}

View file

@ -1,14 +0,0 @@
package org.archiver.model
import com.tm.androidcopysdk.model.IArchiveType
enum class SignalArchiveType(override val key: String): IArchiveType {
AppMessage("Signal message"),
Sms("SMS"),
;
companion object {
fun coreValues(): Array<IArchiveType> = values().map { it }.toTypedArray()
}
}

View file

@ -4,11 +4,14 @@ import com.tm.androidcopysdk.AndroidCopySDK
import com.tm.androidcopysdk.AndroidCopySettings
import com.tm.androidcopysdk.BackupService
import com.tm.androidcopysdk.CommonUtils
import com.tm.androidcopysdk.api.SdkModule
import com.tm.androidcopysdk.device.ArchiveMessagesProcessor
import com.tm.androidcopysdk.device.SendSignatureProcessor
import com.tm.androidcopysdk.model.ArchiveSettings
import com.tm.androidcopysdk.utils.PrefManager
import com.tm.authenticatorsdk.selfAuthenticator.AuthenticatorConstants
import com.tm.logger.Log
import kotlinx.coroutines.flow.MutableStateFlow
import org.archiver.ArchiveConstants
import org.archiver.ArchiveLogger
import org.archiver.SignalLoggerAdapter
@ -28,6 +31,8 @@ import org.tm.archive.util.FeatureFlags
class TeleMessageSignalApplication : ApplicationContext() {
private val dependencyProvider by lazy { TeleMessageApplicationDependencyProvider(this) }
override fun onCreate() {
super.onCreate()
Log.createInstance(applicationContext)
@ -38,7 +43,7 @@ class TeleMessageSignalApplication : ApplicationContext() {
}
override fun initializeAppDependencies() {
ApplicationDependencies.init(this, TeleMessageApplicationDependencyProvider(this))
ApplicationDependencies.init(this, dependencyProvider)
}
override fun beforeInitializeCallManager() {