mirror of
https://github.com/micahflee/TM-SGNL-Android.git
synced 2025-08-04 19:08:33 +00:00
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:
commit
8b12fbb596
15 changed files with 52 additions and 77 deletions
|
@ -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){
|
||||
|
|
|
@ -345,7 +345,6 @@ class AppSettingsFragment : DSLSettingsFragment(
|
|||
builder.setPositiveButton(R.string.ShareActivity__send) { dialog, which ->
|
||||
|
||||
mProgressDialog.show()
|
||||
|
||||
AndroidCopySDK.getInstance(context).sentLogs(
|
||||
activity,
|
||||
this,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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*//
|
||||
{
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
}
|
|
@ -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()
|
||||
}
|
||||
}
|
|
@ -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() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue