using decePubClient.Models;
using decePubClient.Models.Types;

namespace decePubClient.Services
{
	public class MessagesService
	{
		readonly IStorage storage;
		readonly HttpClient http;

		public MessagesService(IHttpClientFactory clientFactory, IStorage storage)
		{
			this.storage = storage;
			http = clientFactory.CreateClient("default");
		}

		//Covers also direct message
		public async Task<Message> SubmitMessage(MessageForm messageForm)
		{
			//TODO

			await Task.Run(() => {});
			return new();
		}

		//Covers also direct message
		public async Task<Message> ReplyMessage(Message messageToReply, MessageType messageType = MessageType.Public)
		{
			//TODO

			await Task.Run(() => {});
			return messageToReply;
		}

		public async Task<Message> BoostUnboostMessage(Message messageToReply)
		{
			//TODO

			await Task.Run(() => {});
			return messageToReply;
		}

		public async Task<Message> FavouriteUnfavouriteMessage(Message messageToReply)
		{
			//TODO

			await Task.Run(() => {});
			return messageToReply;
		}

		public async Task<Message> DeleteMessage(Message messageToReply)
		{
			//TODO

			await Task.Run(() => {});
			return messageToReply;
		}

		public async Task<MessageUser> BlockUserFromMessage(MessageUser messageUser)
		{
			//TODO
			await Task.Run(() => {});
			return messageUser;
		}

		public async Task<MessageUser> SilenceUserFromMessage(MessageUser messageUser)
		{
			//TODO

			await Task.Run(() => {});
			return messageUser;
		}
	}
}