kopia lustrzana https://github.com/ryukoposting/Signal-Android
rodzic
0ff4175538
commit
99a516f8e5
|
@ -85,10 +85,10 @@ final class ConversationGroupViewModel extends ViewModel {
|
|||
liveRecipient.setValue(recipient);
|
||||
}
|
||||
|
||||
void onSuggestedMembersBannerDismissed(@NonNull GroupId groupId, @NonNull List<RecipientId> suggestions) {
|
||||
void onSuggestedMembersBannerDismissed(@NonNull GroupId groupId) {
|
||||
SignalExecutors.BOUNDED.execute(() -> {
|
||||
if (groupId.isV2()) {
|
||||
SignalDatabase.groups().removeUnmigratedV1Members(groupId.requireV2(), suggestions);
|
||||
SignalDatabase.groups().removeUnmigratedV1Members(groupId.requireV2());
|
||||
liveRecipient.postValue(liveRecipient.getValue());
|
||||
}
|
||||
});
|
||||
|
@ -161,15 +161,10 @@ final class ConversationGroupViewModel extends ViewModel {
|
|||
|
||||
@WorkerThread
|
||||
private static List<RecipientId> mapToGroupV1MigrationSuggestions(@Nullable GroupRecord record) {
|
||||
if (record == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
if (!record.isV2Group()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
if (!record.isActive() || record.isPendingMember(Recipient.self())) {
|
||||
if (record == null ||
|
||||
!record.isV2Group() ||
|
||||
!record.isActive() ||
|
||||
record.isPendingMember(Recipient.self())) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
|
|
@ -248,8 +248,6 @@ import org.thoughtcrime.securesms.mms.StickerSlide;
|
|||
import org.thoughtcrime.securesms.mms.VideoSlide;
|
||||
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
||||
import org.thoughtcrime.securesms.notifications.v2.ConversationId;
|
||||
import org.thoughtcrime.securesms.payments.CanNotSendPaymentDialog;
|
||||
import org.thoughtcrime.securesms.payments.MobileCoinPublicAddress;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.profiles.spoofing.ReviewBannerView;
|
||||
import org.thoughtcrime.securesms.profiles.spoofing.ReviewCardDialogFragment;
|
||||
|
@ -295,7 +293,6 @@ import org.thoughtcrime.securesms.util.MediaUtil;
|
|||
import org.thoughtcrime.securesms.util.MessageRecordUtil;
|
||||
import org.thoughtcrime.securesms.util.MessageUtil;
|
||||
import org.thoughtcrime.securesms.util.PlayStoreUtil;
|
||||
import org.thoughtcrime.securesms.util.ProfileUtil;
|
||||
import org.thoughtcrime.securesms.util.ServiceUtil;
|
||||
import org.thoughtcrime.securesms.util.SignalLocalMetrics;
|
||||
import org.thoughtcrime.securesms.util.SmsUtil;
|
||||
|
@ -313,7 +310,6 @@ import org.thoughtcrime.securesms.verify.VerifyIdentityActivity;
|
|||
import org.thoughtcrime.securesms.wallpaper.ChatWallpaper;
|
||||
import org.thoughtcrime.securesms.wallpaper.ChatWallpaperDimLevelUtil;
|
||||
import org.whispersystems.signalservice.api.SignalSessionLock;
|
||||
import org.whispersystems.signalservice.api.util.ExpiringProfileCredentialUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.SecureRandom;
|
||||
|
@ -1905,7 +1901,7 @@ public class ConversationParentFragment extends Fragment
|
|||
if (actionId == R.id.reminder_action_gv1_suggestion_add_members) {
|
||||
GroupsV1MigrationSuggestionsDialog.show(requireActivity(), recipient.get().requireGroupId().requireV2(), gv1MigrationSuggestions);
|
||||
} else if (actionId == R.id.reminder_action_gv1_suggestion_no_thanks) {
|
||||
groupViewModel.onSuggestedMembersBannerDismissed(recipient.get().requireGroupId(), gv1MigrationSuggestions);
|
||||
groupViewModel.onSuggestedMembersBannerDismissed(recipient.get().requireGroupId());
|
||||
}
|
||||
});
|
||||
reminderView.get().setOnDismissListener(() -> {
|
||||
|
|
|
@ -220,6 +220,17 @@ public class GroupDatabase extends Database implements RecipientIdDatabaseRefere
|
|||
}
|
||||
}
|
||||
|
||||
public void removeUnmigratedV1Members(@NonNull GroupId.V2 id) {
|
||||
Optional<GroupRecord> group = getGroup(id);
|
||||
|
||||
if (!group.isPresent()) {
|
||||
Log.w(TAG, "Couldn't find the group!", new Throwable());
|
||||
return;
|
||||
}
|
||||
|
||||
removeUnmigratedV1Members(id, group.get().getUnmigratedV1Members());
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the specified members from the list of 'unmigrated V1 members' -- the list of members
|
||||
* that were either dropped or had to be invited when migrating the group from V1->V2.
|
||||
|
|
|
@ -77,14 +77,14 @@ public final class GroupsV1MigrationSuggestionsDialog {
|
|||
try {
|
||||
GroupManager.addMembers(fragmentActivity, groupId.requirePush(), suggestions);
|
||||
Log.i(TAG, "Successfully added members! Removing these dropped members from the list.");
|
||||
SignalDatabase.groups().removeUnmigratedV1Members(groupId, suggestions);
|
||||
SignalDatabase.groups().removeUnmigratedV1Members(groupId);
|
||||
return Result.SUCCESS;
|
||||
} catch (IOException | GroupChangeBusyException e) {
|
||||
Log.w(TAG, "Temporary failure.", e);
|
||||
return Result.NETWORK_ERROR;
|
||||
} catch (GroupNotAMemberException | GroupInsufficientRightsException | MembershipNotSuitableForV2Exception | GroupChangeFailedException e) {
|
||||
Log.w(TAG, "Permanent failure! Removing these dropped members from the list.", e);
|
||||
SignalDatabase.groups().removeUnmigratedV1Members(groupId, suggestions);
|
||||
SignalDatabase.groups().removeUnmigratedV1Members(groupId);
|
||||
return Result.IMPOSSIBLE;
|
||||
}
|
||||
}, result -> {
|
||||
|
|
Ładowanie…
Reference in New Issue