using Iceshrimp.Frontend.Core.Miscellaneous; using Iceshrimp.Frontend.Core.Services; using Iceshrimp.Shared.Schemas.Web; using Microsoft.AspNetCore.Components.Forms; namespace Iceshrimp.Frontend.Core.ControllerModels; internal class ProfileControllerModel(ApiClient api) { public Task GetProfileAsync() => api.CallAsync(HttpMethod.Get, "/profile"); public Task UpdateProfileAsync(UserProfileEntity request) => api.CallAsync(HttpMethod.Put, "/profile", data: request); public Task GetAvatarAsync() => api.CallNullableAsync(HttpMethod.Get, "/profile/avatar"); public Task UpdateAvatarAsync(IBrowserFile file, string? altText) => api.CallAsync(HttpMethod.Post, "/profile/avatar", altText != null ? QueryString.Create("altText", altText) : QueryString.Empty, file); public Task DeleteAvatarAsync() => api.CallAsync(HttpMethod.Delete, "/profile/avatar"); public Task GetBannerAsync() => api.CallNullableAsync(HttpMethod.Get, "/profile/banner"); public Task UpdateBannerAsync(IBrowserFile file, string? altText) => api.CallAsync(HttpMethod.Post, "/profile/banner", altText != null ? QueryString.Create("altText", altText) : QueryString.Empty, file); public Task DeleteBannerAsync() => api.CallAsync(HttpMethod.Delete, "/profile/banner"); }