kopia lustrzana https://github.com/ryukoposting/Signal-Android
rodzic
0ff4175538
commit
99a516f8e5
|
@ -85,10 +85,10 @@ final class ConversationGroupViewModel extends ViewModel {
|
||||||
liveRecipient.setValue(recipient);
|
liveRecipient.setValue(recipient);
|
||||||
}
|
}
|
||||||
|
|
||||||
void onSuggestedMembersBannerDismissed(@NonNull GroupId groupId, @NonNull List<RecipientId> suggestions) {
|
void onSuggestedMembersBannerDismissed(@NonNull GroupId groupId) {
|
||||||
SignalExecutors.BOUNDED.execute(() -> {
|
SignalExecutors.BOUNDED.execute(() -> {
|
||||||
if (groupId.isV2()) {
|
if (groupId.isV2()) {
|
||||||
SignalDatabase.groups().removeUnmigratedV1Members(groupId.requireV2(), suggestions);
|
SignalDatabase.groups().removeUnmigratedV1Members(groupId.requireV2());
|
||||||
liveRecipient.postValue(liveRecipient.getValue());
|
liveRecipient.postValue(liveRecipient.getValue());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -161,15 +161,10 @@ final class ConversationGroupViewModel extends ViewModel {
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
private static List<RecipientId> mapToGroupV1MigrationSuggestions(@Nullable GroupRecord record) {
|
private static List<RecipientId> mapToGroupV1MigrationSuggestions(@Nullable GroupRecord record) {
|
||||||
if (record == null) {
|
if (record == null ||
|
||||||
return Collections.emptyList();
|
!record.isV2Group() ||
|
||||||
}
|
!record.isActive() ||
|
||||||
|
record.isPendingMember(Recipient.self())) {
|
||||||
if (!record.isV2Group()) {
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!record.isActive() || record.isPendingMember(Recipient.self())) {
|
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -248,8 +248,6 @@ import org.thoughtcrime.securesms.mms.StickerSlide;
|
||||||
import org.thoughtcrime.securesms.mms.VideoSlide;
|
import org.thoughtcrime.securesms.mms.VideoSlide;
|
||||||
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
||||||
import org.thoughtcrime.securesms.notifications.v2.ConversationId;
|
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.permissions.Permissions;
|
||||||
import org.thoughtcrime.securesms.profiles.spoofing.ReviewBannerView;
|
import org.thoughtcrime.securesms.profiles.spoofing.ReviewBannerView;
|
||||||
import org.thoughtcrime.securesms.profiles.spoofing.ReviewCardDialogFragment;
|
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.MessageRecordUtil;
|
||||||
import org.thoughtcrime.securesms.util.MessageUtil;
|
import org.thoughtcrime.securesms.util.MessageUtil;
|
||||||
import org.thoughtcrime.securesms.util.PlayStoreUtil;
|
import org.thoughtcrime.securesms.util.PlayStoreUtil;
|
||||||
import org.thoughtcrime.securesms.util.ProfileUtil;
|
|
||||||
import org.thoughtcrime.securesms.util.ServiceUtil;
|
import org.thoughtcrime.securesms.util.ServiceUtil;
|
||||||
import org.thoughtcrime.securesms.util.SignalLocalMetrics;
|
import org.thoughtcrime.securesms.util.SignalLocalMetrics;
|
||||||
import org.thoughtcrime.securesms.util.SmsUtil;
|
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.ChatWallpaper;
|
||||||
import org.thoughtcrime.securesms.wallpaper.ChatWallpaperDimLevelUtil;
|
import org.thoughtcrime.securesms.wallpaper.ChatWallpaperDimLevelUtil;
|
||||||
import org.whispersystems.signalservice.api.SignalSessionLock;
|
import org.whispersystems.signalservice.api.SignalSessionLock;
|
||||||
import org.whispersystems.signalservice.api.util.ExpiringProfileCredentialUtil;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
|
@ -1905,7 +1901,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
if (actionId == R.id.reminder_action_gv1_suggestion_add_members) {
|
if (actionId == R.id.reminder_action_gv1_suggestion_add_members) {
|
||||||
GroupsV1MigrationSuggestionsDialog.show(requireActivity(), recipient.get().requireGroupId().requireV2(), gv1MigrationSuggestions);
|
GroupsV1MigrationSuggestionsDialog.show(requireActivity(), recipient.get().requireGroupId().requireV2(), gv1MigrationSuggestions);
|
||||||
} else if (actionId == R.id.reminder_action_gv1_suggestion_no_thanks) {
|
} 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(() -> {
|
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
|
* 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.
|
* 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 {
|
try {
|
||||||
GroupManager.addMembers(fragmentActivity, groupId.requirePush(), suggestions);
|
GroupManager.addMembers(fragmentActivity, groupId.requirePush(), suggestions);
|
||||||
Log.i(TAG, "Successfully added members! Removing these dropped members from the list.");
|
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;
|
return Result.SUCCESS;
|
||||||
} catch (IOException | GroupChangeBusyException e) {
|
} catch (IOException | GroupChangeBusyException e) {
|
||||||
Log.w(TAG, "Temporary failure.", e);
|
Log.w(TAG, "Temporary failure.", e);
|
||||||
return Result.NETWORK_ERROR;
|
return Result.NETWORK_ERROR;
|
||||||
} catch (GroupNotAMemberException | GroupInsufficientRightsException | MembershipNotSuitableForV2Exception | GroupChangeFailedException e) {
|
} catch (GroupNotAMemberException | GroupInsufficientRightsException | MembershipNotSuitableForV2Exception | GroupChangeFailedException e) {
|
||||||
Log.w(TAG, "Permanent failure! Removing these dropped members from the list.", 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;
|
return Result.IMPOSSIBLE;
|
||||||
}
|
}
|
||||||
}, result -> {
|
}, result -> {
|
||||||
|
|
Ładowanie…
Reference in New Issue