using System; using System.Collections.Generic; using System.Threading.Tasks; using Chtn.CSharp.SDK.Core; using Chtn.CSharp.SDK.Models.User; using Chtn.CSharp.SDK.Models.Session; namespace Chtn.CSharp.SDK.Services { public interface IUserService { Task ChangeUsername(ChangeUsernameReq req); Task ChangeDisplayName(ChangeDisplayNameReq req); Task ChangePassword(ChangePasswordReq req); Task ChangeEmail(ChangeEmailReq req); Task UploadNewPfp(UploadNewPfpReq req); Task VerifyEmailChange(VerifyMailChangeReq req); Task Delete(DeleteReq req); Task RegisterFirebaseToken(RegisterFCMTokenReq req); Task> GetSessions(GetSessionsReq req); Task ToggleGIFSave(ToggleGifSaveReq req); Task ChangePhoneNumber(ChangePhoneReq req); Task VerifyPhoneNumberChange(VerifyPhoneChangeReq req); Task VerifyFirebaseToken(VerifyFCMTokenReq req); } public class UserServiceProvider : IUserService { private readonly ApiClient _apiClient; public UserServiceProvider(ApiClient apiClient) { _apiClient = apiClient ?? throw new ArgumentNullException(nameof(apiClient)); } public async Task ChangeUsername(ChangeUsernameReq req) => await _apiClient.PostAsync("user/changeUsername", req); public async Task ChangeDisplayName(ChangeDisplayNameReq req) => await _apiClient.PostAsync("user/changeDisplayName", req); public async Task ChangePassword(ChangePasswordReq req) => await _apiClient.PostAsync("user/changePassword", req); public async Task ChangeEmail(ChangeEmailReq req) => await _apiClient.PostAsync("user/changeEmail", req); public async Task UploadNewPfp(UploadNewPfpReq req) => await _apiClient.PostAsync("user/uploadNewPfp", req); public async Task VerifyEmailChange(VerifyMailChangeReq req) => await _apiClient.PostAsync("user/verifyMailChange", req); public async Task Delete(DeleteReq req) => await _apiClient.PostAsync("user/deleteAccount", req); public async Task RegisterFirebaseToken(RegisterFCMTokenReq req) => await _apiClient.PostAsync("user/registerFcmToken", req); public async Task> GetSessions(GetSessionsReq req) => await _apiClient.PostAsync>("user/getSessions", req); public async Task ToggleGIFSave(ToggleGifSaveReq req) => await _apiClient.PostAsync("user/toggleGifSave", req); public async Task ChangePhoneNumber(ChangePhoneReq req) => await _apiClient.PostAsync("user/changePhone", req); public async Task VerifyPhoneNumberChange(VerifyPhoneChangeReq req) => await _apiClient.PostAsync("user/verifyPhoneChange", req); public async Task VerifyFirebaseToken(VerifyFCMTokenReq req) => await _apiClient.PostAsync("v2/user/verifyFCMToken", req); } }