Rewrite the AppDependencies system.

This commit is contained in:
Greyson Parrelli
2024-05-22 15:44:24 -04:00
committed by Cody Henthorne
parent a0131bf39b
commit b6a4e1f145
560 changed files with 2909 additions and 3036 deletions

View File

@@ -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);

View File

@@ -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());
});
}

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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())));
}
}
}

View File

@@ -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();
}

View File

@@ -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)

View File

@@ -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)
}
}
}