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 EmojiControllerModel(ApiClient api) { public Task> GetAllEmojiAsync() => api.CallAsync>(HttpMethod.Get, "/emoji"); public Task>> GetRemoteEmojiAsync(string? name, string? host, PaginationQuery pq) => api.CallAsync>>(HttpMethod.Get, "/emoji/remote", (name != null ? QueryString.Create("name", name) : QueryString.Empty) + (host != null ? QueryString.Create("host", host) : QueryString.Empty) + pq); public Task>> GetRemoteEmojiAsync(string instance, PaginationQuery pq) => api.CallAsync>>(HttpMethod.Get, $"/emoji/remote/{instance}", pq); public Task UploadEmojiAsync(IBrowserFile file, string? name) => api.CallAsync(HttpMethod.Post, "/emoji", name != null ? QueryString.Create("name", name) : QueryString.Empty, file); public Task CloneEmojiAsync(string name, string host) => api.CallNullableAsync(HttpMethod.Post, $"/emoji/clone/{name}@{host}"); public Task ImportEmojiAsync(IBrowserFile file) => api.CallNullableAsync(HttpMethod.Post, "/emoji/import", data: file); public Task UpdateEmojiAsync(string id, UpdateEmojiRequest request) => api.CallNullableAsync(HttpMethod.Patch, $"/emoji/{id}", data: request); public Task DeleteEmojiAsync(string id) => api.CallNullableAsync(HttpMethod.Delete, $"/emoji/{id}"); public Task GetEmojiAsync(string id) => api.CallNullableAsync(HttpMethod.Get, $"/emoji/{id}"); }