public async Task UpdateRelationshipToUser()

in code/Server/Common/Managers/RelationshipsManager.cs [111:235]


        public async Task UpdateRelationshipToUser(
            ProcessType processType,
            RelationshipOperation relationshipOperation,
            string relationshipHandle,
            string followerKeyUserHandle,
            string followingKeyUserHandle,
            string appHandle,
            DateTime lastUpdatedTime,
            IUserRelationshipLookupEntity followerRelationshipLookupEntity,
            IUserRelationshipLookupEntity followingRelationshipLookupEntity)
        {
            UserRelationshipStatus userRelationshipStatus = this.GetRelationshipStatus(relationshipOperation);

            if (processType == ProcessType.Frontend)
            {
                await this.userRelationshipsStore.UpdateFollowerRelationship(
                    StorageConsistencyMode.Strong,
                    relationshipHandle,
                    followerKeyUserHandle,
                    followingKeyUserHandle,
                    appHandle,
                    userRelationshipStatus,
                    lastUpdatedTime,
                    followerRelationshipLookupEntity);

                await this.userRelationshipsStore.UpdateFollowingRelationship(
                    StorageConsistencyMode.Strong,
                    relationshipHandle,
                    followingKeyUserHandle,
                    followerKeyUserHandle,
                    appHandle,
                    userRelationshipStatus,
                    lastUpdatedTime,
                    followingRelationshipLookupEntity);

                await this.relationshipsQueue.SendRelationshipMessage(
                    relationshipOperation,
                    relationshipHandle,
                    followerKeyUserHandle,
                    followingKeyUserHandle,
                    appHandle,
                    lastUpdatedTime);
            }
            else if (processType == ProcessType.Backend || processType == ProcessType.BackendRetry)
            {
                if (relationshipOperation == RelationshipOperation.FollowUser)
                {
                    await this.notificationsManager.CreateNotification(
                        processType,
                        followerKeyUserHandle,
                        appHandle,
                        relationshipHandle,
                        ActivityType.Following,
                        followingKeyUserHandle,
                        followerKeyUserHandle,
                        ContentType.Unknown,
                        null,
                        lastUpdatedTime);

                    await this.fanoutActivitiesQueue.SendFanoutActivityMessage(
                        followingKeyUserHandle,
                        appHandle,
                        relationshipHandle,
                        ActivityType.Following,
                        followingKeyUserHandle,
                        followerKeyUserHandle,
                        ContentType.Unknown,
                        null,
                        lastUpdatedTime);

                    await this.followingImportsQueue.SendFollowingImportMessage(
                        followingKeyUserHandle,
                        appHandle,
                        followerKeyUserHandle);
                }
                else if (relationshipOperation == RelationshipOperation.PendingUser)
                {
                    await this.notificationsManager.CreateNotification(
                        processType,
                        followerKeyUserHandle,
                        appHandle,
                        relationshipHandle,
                        ActivityType.FollowRequest,
                        followingKeyUserHandle,
                        followerKeyUserHandle,
                        ContentType.Unknown,
                        null,
                        lastUpdatedTime);
                }
                else if (relationshipOperation == RelationshipOperation.AcceptUser)
                {
                    await this.notificationsManager.CreateNotification(
                        processType,
                        followingKeyUserHandle,
                        appHandle,
                        relationshipHandle,
                        ActivityType.FollowAccept,
                        followerKeyUserHandle,
                        followingKeyUserHandle,
                        ContentType.Unknown,
                        null,
                        lastUpdatedTime);

                    await this.followingImportsQueue.SendFollowingImportMessage(
                        followingKeyUserHandle,
                        appHandle,
                        followerKeyUserHandle);
                }

                // Update popular user feed when follower count changes
                if (relationshipOperation == RelationshipOperation.FollowUser ||
                    relationshipOperation == RelationshipOperation.UnfollowUser ||
                    relationshipOperation == RelationshipOperation.DeleteFollower ||
                    relationshipOperation == RelationshipOperation.BlockUser ||
                    relationshipOperation == RelationshipOperation.AcceptUser)
                {
                    long? followersCount = await this.userRelationshipsStore.QueryFollowersCount(followerKeyUserHandle, appHandle);
                    long followersCountValue = followersCount.HasValue ? followersCount.Value : 0;
                    if (followersCountValue % PopularUsersUpdateFollowersCount == 0)
                    {
                        await this.popularUsersManager.UpdatePopularUser(processType, followerKeyUserHandle, appHandle, followersCountValue);
                    }
                }
            }
        }