package com.suno.android.common_data.repos import com.suno.android.common_data.metadata.RecommendationMetadata import com.suno.android.common_data.metadata.toRemoteMetadata import com.suno.android.common_networking.extensions.ApiResult import com.suno.android.common_networking.remote.entities.RemoteFollowArtistProfileBody import com.suno.android.common_networking.remote.profiles.ProfilesService import javax.inject.Inject /** * Repository that manages artist profiles and user following relationships. */ interface ProfilesRepository { suspend fun followArtistProfile( handle: String, unfollow: Boolean, recommendationMetadata: RecommendationMetadata?, ): ApiResult } class DefaultProfilesRepository @Inject constructor( private val profilesService: ProfilesService, ) : ProfilesRepository { override suspend fun followArtistProfile( handle: String, unfollow: Boolean, recommendationMetadata: RecommendationMetadata?, ): ApiResult { val body = RemoteFollowArtistProfileBody( handle = handle, unfollow = unfollow, recommendationMetadata = recommendationMetadata?.toRemoteMetadata(), ) return profilesService.followArtistProfile(body) } }