mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Rewrite the AppDependencies system.
This commit is contained in:
committed by
Cody Henthorne
parent
a0131bf39b
commit
b6a4e1f145
@@ -32,7 +32,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.database.ThreadTable;
|
||||
import org.thoughtcrime.securesms.database.model.GroupRecord;
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GV2UpdateDescription;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.groups.v2.GroupCandidateHelper;
|
||||
import org.thoughtcrime.securesms.groups.v2.GroupInviteLinkUrl;
|
||||
import org.thoughtcrime.securesms.groups.v2.GroupLinkPassword;
|
||||
@@ -106,9 +106,9 @@ final class GroupManagerV2 {
|
||||
GroupManagerV2(@NonNull Context context) {
|
||||
this(context,
|
||||
SignalDatabase.groups(),
|
||||
ApplicationDependencies.getSignalServiceAccountManager().getGroupsV2Api(),
|
||||
ApplicationDependencies.getGroupsV2Operations(),
|
||||
ApplicationDependencies.getGroupsV2Authorization(),
|
||||
AppDependencies.getSignalServiceAccountManager().getGroupsV2Api(),
|
||||
AppDependencies.getGroupsV2Operations(),
|
||||
AppDependencies.getGroupsV2Authorization(),
|
||||
SignalStore.account().getServiceIds(),
|
||||
new GroupCandidateHelper(),
|
||||
new SendGroupUpdateHelper(context));
|
||||
@@ -469,7 +469,7 @@ final class GroupManagerV2 {
|
||||
|
||||
if (!groupCandidate.hasValidProfileKeyCredential()) {
|
||||
Log.w(TAG, "[updateSelfProfileKeyInGroup] No credential available, repairing");
|
||||
ApplicationDependencies.getJobManager().add(new ProfileUploadJob());
|
||||
AppDependencies.getJobManager().add(new ProfileUploadJob());
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -495,7 +495,7 @@ final class GroupManagerV2 {
|
||||
|
||||
if (!groupCandidate.hasValidProfileKeyCredential()) {
|
||||
Log.w(TAG, "[AcceptInvite] No credential available, repairing");
|
||||
ApplicationDependencies.getJobManager().add(new ProfileUploadJob());
|
||||
AppDependencies.getJobManager().add(new ProfileUploadJob());
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -799,7 +799,7 @@ final class GroupManagerV2 {
|
||||
try {
|
||||
groupsV2Api.putNewGroup(newGroup, authorization.getAuthorizationForToday(serviceIds, groupSecretParams));
|
||||
|
||||
DecryptedGroup decryptedGroup = groupsV2Api.getGroup(groupSecretParams, ApplicationDependencies.getGroupsV2Authorization().getAuthorizationForToday(serviceIds, groupSecretParams));
|
||||
DecryptedGroup decryptedGroup = groupsV2Api.getGroup(groupSecretParams, AppDependencies.getGroupsV2Authorization().getAuthorizationForToday(serviceIds, groupSecretParams));
|
||||
if (decryptedGroup == null) {
|
||||
throw new GroupChangeFailedException();
|
||||
}
|
||||
@@ -948,15 +948,15 @@ final class GroupManagerV2 {
|
||||
} catch (GroupNotAMemberException e) {
|
||||
Log.w(TAG, "Despite adding self to group, server says we are not a member, scheduling refresh of group info " + groupId, e);
|
||||
|
||||
ApplicationDependencies.getJobManager()
|
||||
.add(new RequestGroupV2InfoJob(groupId));
|
||||
AppDependencies.getJobManager()
|
||||
.add(new RequestGroupV2InfoJob(groupId));
|
||||
|
||||
throw new GroupChangeFailedException(e);
|
||||
} catch (IOException e) {
|
||||
Log.w(TAG, "Group data fetch failed, scheduling refresh of group info " + groupId, e);
|
||||
|
||||
ApplicationDependencies.getJobManager()
|
||||
.add(new RequestGroupV2InfoJob(groupId));
|
||||
AppDependencies.getJobManager()
|
||||
.add(new RequestGroupV2InfoJob(groupId));
|
||||
|
||||
throw e;
|
||||
}
|
||||
@@ -1226,7 +1226,7 @@ final class GroupManagerV2 {
|
||||
|
||||
if (plainGroupChange != null && DecryptedGroupUtil.changeIsSilent(plainGroupChange)) {
|
||||
if (sendToMembers) {
|
||||
ApplicationDependencies.getJobManager().add(PushGroupSilentUpdateSendJob.create(context, groupId, groupMutation.getNewGroupState(), outgoingMessage));
|
||||
AppDependencies.getJobManager().add(PushGroupSilentUpdateSendJob.create(context, groupId, groupMutation.getNewGroupState(), outgoingMessage));
|
||||
}
|
||||
|
||||
return new RecipientAndThread(groupRecipient, -1);
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.database.GroupTable;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.database.model.GroupRecord;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.groups.ui.GroupMemberEntry;
|
||||
import org.thoughtcrime.securesms.groups.v2.GroupInviteLinkUrl;
|
||||
import org.thoughtcrime.securesms.groups.v2.GroupLinkUrlAndStatus;
|
||||
@@ -39,8 +39,8 @@ public final class LiveGroup {
|
||||
|
||||
private static final Comparator<GroupMemberEntry.FullMember> LOCAL_FIRST = (m1, m2) -> Boolean.compare(m2.getMember().isSelf(), m1.getMember().isSelf());
|
||||
private static final Comparator<GroupMemberEntry.FullMember> ADMIN_FIRST = (m1, m2) -> Boolean.compare(m2.isAdmin(), m1.isAdmin());
|
||||
private static final Comparator<GroupMemberEntry.FullMember> HAS_DISPLAY_NAME = (m1, m2) -> Boolean.compare(m2.getMember().hasAUserSetDisplayName(ApplicationDependencies.getApplication()), m1.getMember().hasAUserSetDisplayName(ApplicationDependencies.getApplication()));
|
||||
private static final Comparator<GroupMemberEntry.FullMember> ALPHABETICAL = (m1, m2) -> m1.getMember().getDisplayName(ApplicationDependencies.getApplication()).compareToIgnoreCase(m2.getMember().getDisplayName(ApplicationDependencies.getApplication()));
|
||||
private static final Comparator<GroupMemberEntry.FullMember> HAS_DISPLAY_NAME = (m1, m2) -> Boolean.compare(m2.getMember().hasAUserSetDisplayName(AppDependencies.getApplication()), m1.getMember().hasAUserSetDisplayName(AppDependencies.getApplication()));
|
||||
private static final Comparator<GroupMemberEntry.FullMember> ALPHABETICAL = (m1, m2) -> m1.getMember().getDisplayName(AppDependencies.getApplication()).compareToIgnoreCase(m2.getMember().getDisplayName(AppDependencies.getApplication()));
|
||||
private static final Comparator<? super GroupMemberEntry.FullMember> MEMBER_ORDER = ComparatorCompat.chain(LOCAL_FIRST)
|
||||
.thenComparing(ADMIN_FIRST)
|
||||
.thenComparing(HAS_DISPLAY_NAME)
|
||||
@@ -54,7 +54,7 @@ public final class LiveGroup {
|
||||
private final LiveData<GroupLinkUrlAndStatus> groupLink;
|
||||
|
||||
public LiveGroup(@NonNull GroupId groupId) {
|
||||
Context context = ApplicationDependencies.getApplication();
|
||||
Context context = AppDependencies.getApplication();
|
||||
MutableLiveData<LiveRecipient> liveRecipient = new MutableLiveData<>();
|
||||
|
||||
this.groupDatabase = SignalDatabase.groups();
|
||||
@@ -123,7 +123,7 @@ public final class LiveGroup {
|
||||
if (!TextUtils.isEmpty(title)) {
|
||||
return title;
|
||||
}
|
||||
return recipient.getDisplayName(ApplicationDependencies.getApplication());
|
||||
return recipient.getDisplayName(AppDependencies.getApplication());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import androidx.annotation.WorkerThread;
|
||||
|
||||
import org.thoughtcrime.securesms.contacts.SelectedContact;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.groups.GroupId;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
|
||||
@@ -18,7 +18,7 @@ final class AddMembersRepository {
|
||||
|
||||
AddMembersRepository(@NonNull GroupId groupId) {
|
||||
this.groupId = groupId;
|
||||
this.context = ApplicationDependencies.getApplication();
|
||||
this.context = AppDependencies.getApplication();
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
|
||||
@@ -11,7 +11,7 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.contacts.SelectedContact;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.groups.GroupId;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
@@ -54,7 +54,7 @@ public final class AddMembersViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
private static @NonNull String titleOrDefault(@Nullable String title) {
|
||||
return TextUtils.isEmpty(title) ? ApplicationDependencies.getApplication().getString(R.string.Recipient_unknown)
|
||||
return TextUtils.isEmpty(title) ? AppDependencies.getApplication().getString(R.string.Recipient_unknown)
|
||||
: Objects.requireNonNull(title);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.groups.ui.GroupChangeFailureReason;
|
||||
import org.thoughtcrime.securesms.groups.ui.GroupErrors;
|
||||
import org.thoughtcrime.securesms.groups.v2.GroupAddMembersResult;
|
||||
@@ -21,8 +21,6 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import kotlin.Unit;
|
||||
|
||||
public final class AddToGroupViewModel extends ViewModel {
|
||||
|
||||
private final Application context;
|
||||
@@ -31,7 +29,7 @@ public final class AddToGroupViewModel extends ViewModel {
|
||||
private final SingleLiveEvent<Event> events = new SingleLiveEvent<>();
|
||||
|
||||
private AddToGroupViewModel(@NonNull RecipientId recipientId) {
|
||||
this.context = ApplicationDependencies.getApplication();
|
||||
this.context = AppDependencies.getApplication();
|
||||
this.recipientId = recipientId;
|
||||
this.repository = new GroupManagementRepository();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.groups.GroupId;
|
||||
import org.thoughtcrime.securesms.groups.LiveGroup;
|
||||
import org.thoughtcrime.securesms.groups.ui.GroupChangeResult;
|
||||
@@ -65,7 +65,7 @@ final class ChooseNewAdminViewModel extends ViewModel {
|
||||
@Override
|
||||
public @NonNull <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
||||
//noinspection ConstantConditions
|
||||
return modelClass.cast(new ChooseNewAdminViewModel(groupId, new ChooseNewAdminRepository(ApplicationDependencies.getApplication())));
|
||||
return modelClass.cast(new ChooseNewAdminViewModel(groupId, new ChooseNewAdminRepository(AppDependencies.getApplication())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.signal.core.util.logging.Log;
|
||||
import org.signal.libsignal.zkgroup.profiles.ExpiringProfileKeyCredential;
|
||||
import org.thoughtcrime.securesms.database.RecipientTable;
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId;
|
||||
import org.thoughtcrime.securesms.util.ProfileUtil;
|
||||
@@ -28,7 +28,7 @@ public class GroupCandidateHelper {
|
||||
private final RecipientTable recipientTable;
|
||||
|
||||
public GroupCandidateHelper() {
|
||||
signalServiceAccountManager = ApplicationDependencies.getSignalServiceAccountManager();
|
||||
signalServiceAccountManager = AppDependencies.getSignalServiceAccountManager();
|
||||
recipientTable = SignalDatabase.recipients();
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.signal.core.util.concurrent.SignalExecutors
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.thoughtcrime.securesms.groups.GroupChangeBusyException
|
||||
import org.thoughtcrime.securesms.groups.GroupChangeException
|
||||
import org.thoughtcrime.securesms.groups.GroupChangeFailedException
|
||||
@@ -26,7 +26,7 @@ private val TAG: String = Log.tag(GroupManagementRepository::class.java)
|
||||
/**
|
||||
* Single source repository for managing GV2 groups.
|
||||
*/
|
||||
class GroupManagementRepository @JvmOverloads constructor(private val context: Context = ApplicationDependencies.getApplication()) {
|
||||
class GroupManagementRepository @JvmOverloads constructor(private val context: Context = AppDependencies.application) {
|
||||
|
||||
fun addMembers(groupRecipient: Recipient, selected: List<RecipientId>, consumer: Consumer<GroupAddMembersResult>) {
|
||||
addMembers(null, groupRecipient, selected, consumer)
|
||||
|
||||
@@ -19,7 +19,7 @@ import org.thoughtcrime.securesms.database.model.GroupRecord
|
||||
import org.thoughtcrime.securesms.database.model.GroupsV2UpdateMessageConverter.translateDecryptedChange
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GV2UpdateDescription
|
||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.thoughtcrime.securesms.groups.GroupId
|
||||
import org.thoughtcrime.securesms.groups.GroupMutation
|
||||
import org.thoughtcrime.securesms.groups.GroupNotAMemberException
|
||||
@@ -95,10 +95,10 @@ class GroupsV2StateProcessor private constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private val groupsApi = ApplicationDependencies.getSignalServiceAccountManager().getGroupsV2Api()
|
||||
private val groupsV2Authorization = ApplicationDependencies.getGroupsV2Authorization()
|
||||
private val groupsApi = AppDependencies.signalServiceAccountManager.groupsV2Api
|
||||
private val groupsV2Authorization = AppDependencies.groupsV2Authorization
|
||||
private val groupId = GroupId.v2(groupSecretParams.getPublicParams().getGroupIdentifier())
|
||||
private val profileAndMessageHelper = ProfileAndMessageHelper.create(serviceIds.getAci(), groupMasterKey, groupId)
|
||||
private val profileAndMessageHelper = ProfileAndMessageHelper.create(serviceIds.aci, groupMasterKey, groupId)
|
||||
|
||||
private val logPrefix = "[$groupId]"
|
||||
|
||||
@@ -327,12 +327,12 @@ class GroupsV2StateProcessor private constructor(
|
||||
profileAndMessageHelper.persistLearnedProfileKeys(profileKeys)
|
||||
|
||||
if (performCdsLookup) {
|
||||
ApplicationDependencies.getJobManager().add(DirectoryRefreshJob(false))
|
||||
AppDependencies.jobManager.add(DirectoryRefreshJob(false))
|
||||
}
|
||||
|
||||
if (hasRemainingRemoteChanges) {
|
||||
Log.i(TAG, "$logPrefix There are more revisions on the server for this group, scheduling for later")
|
||||
ApplicationDependencies.getJobManager().add(RequestGroupV2InfoJob(groupId))
|
||||
AppDependencies.jobManager.add(RequestGroupV2InfoJob(groupId))
|
||||
}
|
||||
|
||||
return InternalUpdateResult.Updated(currentLocalState!!)
|
||||
@@ -447,7 +447,7 @@ class GroupsV2StateProcessor private constructor(
|
||||
.any { it.promotePendingPniAciMembers.isNotEmpty() }
|
||||
|
||||
if (performCdsLookup) {
|
||||
ApplicationDependencies.getJobManager().add(DirectoryRefreshJob(false))
|
||||
AppDependencies.jobManager.add(DirectoryRefreshJob(false))
|
||||
}
|
||||
|
||||
return InternalUpdateResult.Updated(updatedGroupState)
|
||||
@@ -472,7 +472,7 @@ class GroupsV2StateProcessor private constructor(
|
||||
}
|
||||
|
||||
if (needsAvatarFetch) {
|
||||
ApplicationDependencies.getJobManager().add(AvatarGroupsV2DownloadJob(groupId, updatedGroupState.avatar))
|
||||
AppDependencies.jobManager.add(AvatarGroupsV2DownloadJob(groupId, updatedGroupState.avatar))
|
||||
}
|
||||
|
||||
profileAndMessageHelper.setProfileSharing(groupStateDiff, updatedGroupState)
|
||||
@@ -507,7 +507,7 @@ class GroupsV2StateProcessor private constructor(
|
||||
|
||||
if (addedBy.isBlocked && (previousGroupState == null || !DecryptedGroupUtil.isRequesting(previousGroupState, aci))) {
|
||||
Log.i(TAG, "Added by a blocked user. Leaving group.")
|
||||
ApplicationDependencies.getJobManager().add(LeaveGroupV2Job(groupId))
|
||||
AppDependencies.jobManager.add(LeaveGroupV2Job(groupId))
|
||||
return
|
||||
} else if ((addedBy.isSystemContact || addedBy.isProfileSharing) && !addedBy.isHidden) {
|
||||
Log.i(TAG, "Group 'adder' is trusted. contact: " + addedBy.isSystemContact + ", profileSharing: " + addedBy.isProfileSharing)
|
||||
@@ -524,7 +524,7 @@ class GroupsV2StateProcessor private constructor(
|
||||
|
||||
if (addedBy?.isBlocked == true) {
|
||||
Log.i(TAG, "Added to group $groupId by a blocked user ${addedBy.id}. Leaving group.")
|
||||
ApplicationDependencies.getJobManager().add(LeaveGroupV2Job(groupId))
|
||||
AppDependencies.jobManager.add(LeaveGroupV2Job(groupId))
|
||||
return
|
||||
} else {
|
||||
Log.i(TAG, "Added to $groupId, but not enabling profile sharing as we are a pending member.")
|
||||
@@ -623,7 +623,7 @@ class GroupsV2StateProcessor private constructor(
|
||||
Log.i(TAG, "Learned ${updated.size} new profile keys, fetching profiles")
|
||||
|
||||
for (job in RetrieveProfileJob.forRecipients(updated)) {
|
||||
ApplicationDependencies.getJobManager().runSynchronously(job, 5000)
|
||||
AppDependencies.jobManager.runSynchronously(job, 5000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user