Move distribution type operation into ConversationViewModel.

This commit is contained in:
Alex Hart
2023-03-20 13:55:36 -03:00
committed by Greyson Parrelli
parent 53716019b6
commit 1056adb591
3 changed files with 15 additions and 20 deletions

View File

@@ -1273,34 +1273,16 @@ public class ConversationParentFragment extends Fragment
public void handleDistributionBroadcastEnabled(MenuItem item) { public void handleDistributionBroadcastEnabled(MenuItem item) {
distributionType = ThreadTable.DistributionTypes.BROADCAST; distributionType = ThreadTable.DistributionTypes.BROADCAST;
draftViewModel.setDistributionType(distributionType); draftViewModel.setDistributionType(distributionType);
viewModel.setDistributionType(distributionType);
item.setChecked(true); item.setChecked(true);
if (threadId != -1) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
SignalDatabase.threads().setDistributionType(threadId, ThreadTable.DistributionTypes.BROADCAST);
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
} }
@Override @Override
public void handleDistributionConversationEnabled(MenuItem item) { public void handleDistributionConversationEnabled(MenuItem item) {
distributionType = ThreadTable.DistributionTypes.CONVERSATION; distributionType = ThreadTable.DistributionTypes.CONVERSATION;
draftViewModel.setDistributionType(distributionType); draftViewModel.setDistributionType(distributionType);
viewModel.setDistributionType(distributionType);
item.setChecked(true); item.setChecked(true);
if (threadId != -1) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
SignalDatabase.threads().setDistributionType(threadId, ThreadTable.DistributionTypes.CONVERSATION);
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
} }
@Override @Override

View File

@@ -216,4 +216,8 @@ class ConversationRepository {
public void setConversationMuted(@NonNull RecipientId recipientId, long until) { public void setConversationMuted(@NonNull RecipientId recipientId, long until) {
SignalExecutors.BOUNDED.execute(() -> SignalDatabase.recipients().setMuted(recipientId, until)); SignalExecutors.BOUNDED.execute(() -> SignalDatabase.recipients().setMuted(recipientId, until));
} }
public void setConversationDistributionType(long threadId, int distributionType) {
SignalExecutors.BOUNDED.execute(() -> SignalDatabase.threads().setDistributionType(threadId, distributionType));
}
} }

View File

@@ -260,6 +260,15 @@ public class ConversationViewModel extends ViewModel {
} }
} }
void setDistributionType(int distributionType) {
Long threadId = this.threadId.getValue();
if (threadId == null) {
return;
}
conversationRepository.setConversationDistributionType(threadId, distributionType);
}
void submitMarkReadRequest(long timestampSince) { void submitMarkReadRequest(long timestampSince) {
markReadRequestPublisher.onNext(timestampSince); markReadRequestPublisher.onNext(timestampSince);
} }