35 lines
No EOL
1.4 KiB
C#
35 lines
No EOL
1.4 KiB
C#
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<UserProfileEntity> GetProfileAsync() =>
|
|
api.CallAsync<UserProfileEntity>(HttpMethod.Get, "/profile");
|
|
|
|
public Task UpdateProfileAsync(UserProfileEntity request) =>
|
|
api.CallAsync(HttpMethod.Put, "/profile", data: request);
|
|
|
|
public Task<DriveFileResponse?> GetAvatarAsync() =>
|
|
api.CallNullableAsync<DriveFileResponse>(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<DriveFileResponse?> GetBannerAsync() =>
|
|
api.CallNullableAsync<DriveFileResponse>(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");
|
|
} |