mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-15 23:48:04 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e7e3d04a1 | ||
|
|
a314b71a5f | ||
|
|
8ea1e1acf9 | ||
|
|
e2ef8a14f1 | ||
|
|
b6a53e673c |
@@ -58,14 +58,14 @@ ktlint {
|
||||
}
|
||||
|
||||
def canonicalVersionCode = 1149
|
||||
def canonicalVersionName = "5.53.6"
|
||||
def canonicalVersionName = "5.53.8"
|
||||
|
||||
def postFixSize = 100
|
||||
def abiPostFix = ['universal' : 0,
|
||||
'armeabi-v7a' : 1,
|
||||
'arm64-v8a' : 2,
|
||||
'x86' : 3,
|
||||
'x86_64' : 4]
|
||||
def abiPostFix = ['universal' : 10,
|
||||
'armeabi-v7a' : 11,
|
||||
'arm64-v8a' : 12,
|
||||
'x86' : 13,
|
||||
'x86_64' : 14]
|
||||
|
||||
def keystores = [ 'debug' : loadKeystoreProperties('keystore.debug.properties') ]
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import org.thoughtcrime.securesms.database.helpers.migration.V161_StorySendMessa
|
||||
*/
|
||||
object SignalDatabaseMigrations {
|
||||
|
||||
const val DATABASE_VERSION = 160
|
||||
const val DATABASE_VERSION = 161
|
||||
|
||||
@JvmStatic
|
||||
fun migrate(context: Application, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
||||
|
||||
@@ -8,6 +8,6 @@ import net.zetetic.database.sqlcipher.SQLiteDatabase
|
||||
*/
|
||||
object V161_StorySendMessageIdIndex : SignalDatabaseMigration {
|
||||
override fun migrate(context: Application, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
||||
db.execSQL("CREATE INDEX story_sends_message_id_distribution_id_index ON story_sends (message_id, distribution_id)")
|
||||
db.execSQL("CREATE INDEX IF NOT EXISTS story_sends_message_id_distribution_id_index ON story_sends (message_id, distribution_id)")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ object CreateStoryNameFieldItem {
|
||||
}
|
||||
|
||||
override fun bind(model: Model) {
|
||||
if (model.body != editText.text) {
|
||||
if (model.body.toString() != editText.text.toString()) {
|
||||
editText.setText(model.body)
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment
|
||||
import org.thoughtcrime.securesms.components.settings.configure
|
||||
import org.thoughtcrime.securesms.databinding.StoriesCreateWithRecipientsFragmentBinding
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.util.LifecycleDisposable
|
||||
import org.thoughtcrime.securesms.util.Material3OnScrollHelper
|
||||
import org.thoughtcrime.securesms.util.ViewUtil
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory
|
||||
@@ -43,6 +44,7 @@ class CreateStoryWithViewersFragment : DSLSettingsFragment(
|
||||
)
|
||||
|
||||
private val binding by ViewBinderDelegate(StoriesCreateWithRecipientsFragmentBinding::bind)
|
||||
private val disposables = LifecycleDisposable()
|
||||
|
||||
private val recipientIds: Array<RecipientId>
|
||||
get() = CreateStoryWithViewersFragmentArgs.fromBundle(requireArguments()).recipients
|
||||
@@ -56,8 +58,9 @@ class CreateStoryWithViewersFragment : DSLSettingsFragment(
|
||||
viewModel.setLabel(it)
|
||||
}
|
||||
|
||||
disposables.bindTo(viewLifecycleOwner)
|
||||
adapter.submitList(getConfiguration().toMappingModelList())
|
||||
viewModel.state.observe(viewLifecycleOwner) { state ->
|
||||
disposables += viewModel.state.subscribe { state ->
|
||||
|
||||
val nameModel = CreateStoryNameFieldItem.Model(
|
||||
body = state.label,
|
||||
|
||||
@@ -1,25 +1,29 @@
|
||||
package org.thoughtcrime.securesms.stories.settings.create
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.core.Flowable
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
import io.reactivex.rxjava3.kotlin.subscribeBy
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.util.livedata.Store
|
||||
import org.thoughtcrime.securesms.util.rx.RxStore
|
||||
|
||||
class CreateStoryWithViewersViewModel(
|
||||
private val repository: CreateStoryWithViewersRepository
|
||||
) : ViewModel() {
|
||||
|
||||
private val store = Store(CreateStoryWithViewersState())
|
||||
private val store = RxStore(CreateStoryWithViewersState())
|
||||
private val disposables = CompositeDisposable()
|
||||
|
||||
val state: LiveData<CreateStoryWithViewersState> = store.stateLiveData
|
||||
val state: Flowable<CreateStoryWithViewersState> = store.stateFlowable
|
||||
.distinctUntilChanged()
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
|
||||
override fun onCleared() {
|
||||
disposables.clear()
|
||||
store.dispose()
|
||||
}
|
||||
|
||||
fun setLabel(label: CharSequence) {
|
||||
|
||||
@@ -34,20 +34,24 @@ class StoryViewsRepository {
|
||||
fun getViews(storyId: Long): Observable<List<StoryViewItemData>> {
|
||||
return Observable.create<List<StoryViewItemData>> { emitter ->
|
||||
val record: MessageRecord = SignalDatabase.mms.getMessageRecord(storyId)
|
||||
val distributionId: DistributionId = SignalDatabase.distributionLists.getDistributionId(record.recipient.requireDistributionListId())!!
|
||||
val recipientIds: Set<RecipientId> = SignalDatabase.storySends.getRecipientsForDistributionId(storyId, distributionId)
|
||||
val filterIds: Set<RecipientId> = if (record.recipient.isDistributionList) {
|
||||
val distributionId: DistributionId = SignalDatabase.distributionLists.getDistributionId(record.recipient.requireDistributionListId())!!
|
||||
SignalDatabase.storySends.getRecipientsForDistributionId(storyId, distributionId)
|
||||
} else {
|
||||
emptySet()
|
||||
}
|
||||
|
||||
fun refresh() {
|
||||
emitter.onNext(
|
||||
SignalDatabase.groupReceipts.getGroupReceiptInfo(storyId).filter {
|
||||
it.status == GroupReceiptDatabase.STATUS_VIEWED
|
||||
}.filter {
|
||||
filterIds.isEmpty() || it.recipientId in filterIds
|
||||
}.map {
|
||||
StoryViewItemData(
|
||||
recipient = Recipient.resolved(it.recipientId),
|
||||
timeViewedInMillis = it.timestamp
|
||||
)
|
||||
}.filter {
|
||||
it.recipient.id in recipientIds
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user