Loading data/src/main/java/com/moez/QKSMS/repository/SyncRepositoryImpl.kt +0 −11 Original line number Diff line number Diff line Loading @@ -58,17 +58,6 @@ class SyncRepositoryImpl @Inject constructor( private val rxPrefs: RxSharedPreferences ) : SyncRepository { /** * Holds data that should be persisted across full syncs */ private data class PersistedData( val id: Long, val archived: Boolean, val blocked: Boolean, val pinned: Boolean, val name: String ) override val syncProgress: Subject<SyncRepository.SyncProgress> = BehaviorSubject.createDefault(SyncRepository.SyncProgress.Idle()) Loading presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt +3 −5 Original line number Diff line number Diff line Loading @@ -54,8 +54,6 @@ import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.common.util.extensions.showKeyboard import com.moez.QKSMS.model.Attachment import com.moez.QKSMS.model.Contact import com.moez.QKSMS.model.Message import com.moez.QKSMS.model.MmsPart import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.autoDisposable import dagger.android.AndroidInjection Loading Loading @@ -91,10 +89,10 @@ class ComposeActivity : QkThemedActivity(), ComposeView { override val menuReadyIntent: Observable<Unit> = menu.map { Unit } override val optionsItemIntent: Subject<Int> = PublishSubject.create() override val sendAsGroupIntent by lazy { sendAsGroupBackground.clicks() } override val messageClickIntent: Subject<Message> by lazy { messageAdapter.clicks } override val messagePartClickIntent: Subject<MmsPart> by lazy { messageAdapter.partClicks } override val messageClickIntent: Subject<Long> by lazy { messageAdapter.clicks } override val messagePartClickIntent: Subject<Long> by lazy { messageAdapter.partClicks } override val messagesSelectedIntent by lazy { messageAdapter.selectionChanges } override val cancelSendingIntent: Subject<Message> by lazy { messageAdapter.cancelSending } override val cancelSendingIntent: Subject<Long> by lazy { messageAdapter.cancelSending } override val attachmentDeletedIntent: Subject<Attachment> by lazy { attachmentAdapter.attachmentDeleted } override val textChangedIntent by lazy { message.textChanges() } override val attachIntent by lazy { Observable.merge(attach.clicks(), attachingBackground.clicks()) } Loading presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt +3 −5 Original line number Diff line number Diff line Loading @@ -24,8 +24,6 @@ import androidx.core.view.inputmethod.InputContentInfoCompat import com.moez.QKSMS.common.base.QkView import com.moez.QKSMS.model.Attachment import com.moez.QKSMS.model.Contact import com.moez.QKSMS.model.Message import com.moez.QKSMS.model.MmsPart import io.reactivex.Observable import io.reactivex.subjects.Subject Loading @@ -40,10 +38,10 @@ interface ComposeView : QkView<ComposeState> { val menuReadyIntent: Observable<Unit> val optionsItemIntent: Observable<Int> val sendAsGroupIntent: Observable<*> val messageClickIntent: Subject<Message> val messagePartClickIntent: Subject<MmsPart> val messageClickIntent: Subject<Long> val messagePartClickIntent: Subject<Long> val messagesSelectedIntent: Observable<List<Long>> val cancelSendingIntent: Subject<Message> val cancelSendingIntent: Subject<Long> val attachmentDeletedIntent: Subject<Attachment> val textChangedIntent: Observable<CharSequence> val attachIntent: Observable<Unit> Loading presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt +4 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,7 @@ class ComposeViewModel @Inject constructor( // Retry sending view.messageClickIntent .mapNotNull(messageRepo::getMessage) .filter { message -> message.isFailedMessage() } .doOnNext { message -> retrySending.execute(message) } .autoDisposable(view.scope()) Loading @@ -427,12 +428,14 @@ class ComposeViewModel @Inject constructor( // Media attachment clicks view.messagePartClickIntent .mapNotNull(messageRepo::getPart) .filter { part -> part.isImage() || part.isVideo() } .autoDisposable(view.scope()) .subscribe { part -> navigator.showMedia(part.id) } // Non-media attachment clicks view.messagePartClickIntent .mapNotNull(messageRepo::getPart) .filter { part -> !part.isImage() && !part.isVideo() } .autoDisposable(view.scope()) .subscribe { part -> Loading @@ -451,6 +454,7 @@ class ComposeViewModel @Inject constructor( // Cancel sending a message view.cancelSendingIntent .mapNotNull(messageRepo::getMessage) .doOnNext { message -> view.setDraft(message.getText()) } .autoDisposable(view.scope()) .subscribe { message -> cancelMessage.execute(message.id) } Loading presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt +5 −6 Original line number Diff line number Diff line Loading @@ -53,7 +53,6 @@ import com.moez.QKSMS.feature.compose.BubbleUtils.getBubble import com.moez.QKSMS.feature.compose.part.PartsAdapter import com.moez.QKSMS.model.Conversation import com.moez.QKSMS.model.Message import com.moez.QKSMS.model.MmsPart import com.moez.QKSMS.model.Recipient import com.moez.QKSMS.util.PhoneNumberUtils import com.moez.QKSMS.util.Preferences Loading Loading @@ -88,9 +87,9 @@ class MessagesAdapter @Inject constructor( } val clicks: Subject<Message> = PublishSubject.create() val partClicks: Subject<MmsPart> = PublishSubject.create() val cancelSending: Subject<Message> = PublishSubject.create() val clicks: Subject<Long> = PublishSubject.create() val partClicks: Subject<Long> = PublishSubject.create() val cancelSending: Subject<Long> = PublishSubject.create() var data: Pair<Conversation, RealmResults<Message>>? = null set(value) { Loading Loading @@ -167,7 +166,7 @@ class MessagesAdapter @Inject constructor( when (toggleSelection(message.id, false)) { true -> view.isActivated = isSelected(message.id) false -> { clicks.onNext(message) clicks.onNext(message.id) expanded[message.id] = view.status.visibility != View.VISIBLE notifyItemChanged(adapterPosition) } Loading Loading @@ -195,7 +194,7 @@ class MessagesAdapter @Inject constructor( view.findViewById<ProgressBar>(R.id.cancel)?.let { cancel -> val isCancellable = message.isSending() && message.date > System.currentTimeMillis() cancel.setVisible(isCancellable) cancel.clicks().subscribe { cancelSending.onNext(message) } cancel.clicks().subscribe { cancelSending.onNext(message.id) } cancel.progress = 2 if (isCancellable) { Loading Loading
data/src/main/java/com/moez/QKSMS/repository/SyncRepositoryImpl.kt +0 −11 Original line number Diff line number Diff line Loading @@ -58,17 +58,6 @@ class SyncRepositoryImpl @Inject constructor( private val rxPrefs: RxSharedPreferences ) : SyncRepository { /** * Holds data that should be persisted across full syncs */ private data class PersistedData( val id: Long, val archived: Boolean, val blocked: Boolean, val pinned: Boolean, val name: String ) override val syncProgress: Subject<SyncRepository.SyncProgress> = BehaviorSubject.createDefault(SyncRepository.SyncProgress.Idle()) Loading
presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt +3 −5 Original line number Diff line number Diff line Loading @@ -54,8 +54,6 @@ import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.common.util.extensions.showKeyboard import com.moez.QKSMS.model.Attachment import com.moez.QKSMS.model.Contact import com.moez.QKSMS.model.Message import com.moez.QKSMS.model.MmsPart import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.autoDisposable import dagger.android.AndroidInjection Loading Loading @@ -91,10 +89,10 @@ class ComposeActivity : QkThemedActivity(), ComposeView { override val menuReadyIntent: Observable<Unit> = menu.map { Unit } override val optionsItemIntent: Subject<Int> = PublishSubject.create() override val sendAsGroupIntent by lazy { sendAsGroupBackground.clicks() } override val messageClickIntent: Subject<Message> by lazy { messageAdapter.clicks } override val messagePartClickIntent: Subject<MmsPart> by lazy { messageAdapter.partClicks } override val messageClickIntent: Subject<Long> by lazy { messageAdapter.clicks } override val messagePartClickIntent: Subject<Long> by lazy { messageAdapter.partClicks } override val messagesSelectedIntent by lazy { messageAdapter.selectionChanges } override val cancelSendingIntent: Subject<Message> by lazy { messageAdapter.cancelSending } override val cancelSendingIntent: Subject<Long> by lazy { messageAdapter.cancelSending } override val attachmentDeletedIntent: Subject<Attachment> by lazy { attachmentAdapter.attachmentDeleted } override val textChangedIntent by lazy { message.textChanges() } override val attachIntent by lazy { Observable.merge(attach.clicks(), attachingBackground.clicks()) } Loading
presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt +3 −5 Original line number Diff line number Diff line Loading @@ -24,8 +24,6 @@ import androidx.core.view.inputmethod.InputContentInfoCompat import com.moez.QKSMS.common.base.QkView import com.moez.QKSMS.model.Attachment import com.moez.QKSMS.model.Contact import com.moez.QKSMS.model.Message import com.moez.QKSMS.model.MmsPart import io.reactivex.Observable import io.reactivex.subjects.Subject Loading @@ -40,10 +38,10 @@ interface ComposeView : QkView<ComposeState> { val menuReadyIntent: Observable<Unit> val optionsItemIntent: Observable<Int> val sendAsGroupIntent: Observable<*> val messageClickIntent: Subject<Message> val messagePartClickIntent: Subject<MmsPart> val messageClickIntent: Subject<Long> val messagePartClickIntent: Subject<Long> val messagesSelectedIntent: Observable<List<Long>> val cancelSendingIntent: Subject<Message> val cancelSendingIntent: Subject<Long> val attachmentDeletedIntent: Subject<Attachment> val textChangedIntent: Observable<CharSequence> val attachIntent: Observable<Unit> Loading
presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt +4 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,7 @@ class ComposeViewModel @Inject constructor( // Retry sending view.messageClickIntent .mapNotNull(messageRepo::getMessage) .filter { message -> message.isFailedMessage() } .doOnNext { message -> retrySending.execute(message) } .autoDisposable(view.scope()) Loading @@ -427,12 +428,14 @@ class ComposeViewModel @Inject constructor( // Media attachment clicks view.messagePartClickIntent .mapNotNull(messageRepo::getPart) .filter { part -> part.isImage() || part.isVideo() } .autoDisposable(view.scope()) .subscribe { part -> navigator.showMedia(part.id) } // Non-media attachment clicks view.messagePartClickIntent .mapNotNull(messageRepo::getPart) .filter { part -> !part.isImage() && !part.isVideo() } .autoDisposable(view.scope()) .subscribe { part -> Loading @@ -451,6 +454,7 @@ class ComposeViewModel @Inject constructor( // Cancel sending a message view.cancelSendingIntent .mapNotNull(messageRepo::getMessage) .doOnNext { message -> view.setDraft(message.getText()) } .autoDisposable(view.scope()) .subscribe { message -> cancelMessage.execute(message.id) } Loading
presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt +5 −6 Original line number Diff line number Diff line Loading @@ -53,7 +53,6 @@ import com.moez.QKSMS.feature.compose.BubbleUtils.getBubble import com.moez.QKSMS.feature.compose.part.PartsAdapter import com.moez.QKSMS.model.Conversation import com.moez.QKSMS.model.Message import com.moez.QKSMS.model.MmsPart import com.moez.QKSMS.model.Recipient import com.moez.QKSMS.util.PhoneNumberUtils import com.moez.QKSMS.util.Preferences Loading Loading @@ -88,9 +87,9 @@ class MessagesAdapter @Inject constructor( } val clicks: Subject<Message> = PublishSubject.create() val partClicks: Subject<MmsPart> = PublishSubject.create() val cancelSending: Subject<Message> = PublishSubject.create() val clicks: Subject<Long> = PublishSubject.create() val partClicks: Subject<Long> = PublishSubject.create() val cancelSending: Subject<Long> = PublishSubject.create() var data: Pair<Conversation, RealmResults<Message>>? = null set(value) { Loading Loading @@ -167,7 +166,7 @@ class MessagesAdapter @Inject constructor( when (toggleSelection(message.id, false)) { true -> view.isActivated = isSelected(message.id) false -> { clicks.onNext(message) clicks.onNext(message.id) expanded[message.id] = view.status.visibility != View.VISIBLE notifyItemChanged(adapterPosition) } Loading Loading @@ -195,7 +194,7 @@ class MessagesAdapter @Inject constructor( view.findViewById<ProgressBar>(R.id.cancel)?.let { cancel -> val isCancellable = message.isSending() && message.date > System.currentTimeMillis() cancel.setVisible(isCancellable) cancel.clicks().subscribe { cancelSending.onNext(message) } cancel.clicks().subscribe { cancelSending.onNext(message.id) } cancel.progress = 2 if (isCancellable) { Loading