mirror of
https://github.com/status-im/nft-faucet.git
synced 2025-02-22 19:48:25 +00:00
111 lines
3.2 KiB
C#
111 lines
3.2 KiB
C#
using MimeTypes;
|
|
using NftFaucet.Components;
|
|
using NftFaucet.Domain.Models;
|
|
using Radzen;
|
|
|
|
namespace NftFaucet.Pages;
|
|
|
|
public partial class CreateTokenDialog : BasicComponent
|
|
{
|
|
private NewFileModel Model { get; set; } = new NewFileModel();
|
|
private bool ModelIsValid => IsValid();
|
|
|
|
private void OnSavePressed()
|
|
{
|
|
if (!IsValid())
|
|
return;
|
|
|
|
var token = new Token
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
Name = Model.Name,
|
|
Description = Model.Description,
|
|
CreatedAt = DateTime.Now,
|
|
MainFile = new TokenMedia
|
|
{
|
|
FileName = Model.MainFileName,
|
|
FileType = DetermineFileType(Model.MainFileName),
|
|
FileData = Model.MainFileData,
|
|
FileSize = Model.MainFileSize!.Value,
|
|
},
|
|
};
|
|
|
|
if (!string.IsNullOrEmpty(Model.CoverFileData) &&
|
|
!string.IsNullOrEmpty(Model.CoverFileName) &&
|
|
Model.CoverFileSize != null)
|
|
{
|
|
token.CoverFile = new TokenMedia
|
|
{
|
|
FileName = Model.CoverFileName,
|
|
FileType = DetermineFileType(Model.CoverFileName),
|
|
FileData = Model.CoverFileData,
|
|
FileSize = Model.CoverFileSize!.Value,
|
|
};
|
|
}
|
|
|
|
DialogService.Close(token);
|
|
}
|
|
|
|
private string DetermineFileType(string fileName)
|
|
{
|
|
var extension = fileName.Split('.', StringSplitOptions.RemoveEmptyEntries).Last();
|
|
if (!MimeTypeMap.TryGetMimeType(extension, out var mimeType))
|
|
{
|
|
return "application/octet-stream";
|
|
}
|
|
|
|
return mimeType;
|
|
}
|
|
|
|
private bool IsValid()
|
|
{
|
|
if (string.IsNullOrWhiteSpace(Model.Name))
|
|
return false;
|
|
|
|
if (string.IsNullOrWhiteSpace(Model.Description))
|
|
return false;
|
|
|
|
if (string.IsNullOrEmpty(Model.MainFileData))
|
|
return false;
|
|
|
|
if (string.IsNullOrEmpty(Model.MainFileName))
|
|
return false;
|
|
|
|
if (Model.MainFileSize is null or 0)
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
private void OnMainFileError(UploadErrorEventArgs args)
|
|
{
|
|
NotificationService.Notify(NotificationSeverity.Error, "File selection error", args.Message);
|
|
Model.MainFileData = null;
|
|
Model.MainFileName = null;
|
|
Model.MainFileSize = null;
|
|
Model.CoverFileData = null;
|
|
Model.CoverFileName = null;
|
|
Model.CoverFileSize = null;
|
|
}
|
|
|
|
private void OnCoverFileError(UploadErrorEventArgs args)
|
|
{
|
|
NotificationService.Notify(NotificationSeverity.Error, "File selection error", args.Message);
|
|
Model.CoverFileData = null;
|
|
Model.CoverFileName = null;
|
|
Model.CoverFileSize = null;
|
|
}
|
|
|
|
private class NewFileModel
|
|
{
|
|
public string Name { get; set; }
|
|
public string Description { get; set; }
|
|
public string MainFileData { get; set; }
|
|
public string MainFileName { get; set; }
|
|
public long? MainFileSize { get; set; }
|
|
public string CoverFileData { get; set; }
|
|
public string CoverFileName { get; set; }
|
|
public long? CoverFileSize { get; set; }
|
|
}
|
|
}
|