+ private IEnumerable<(string IconName, string Label, string Value, string color)> GetAdditionalProjectInfo()
+ {
+ return new List<(string, string, string, string)>
+ {
+ ("balance", "Target amount", $"{targetAmountInBTC} {network.CoinTicker}","text-success"),
+ ("calendar", "Start date", $"{project.ProjectInfo.StartDate:dd/MM/yyyy} in {(project.ProjectInfo.StartDate - DateTime.Now).Days} days","text-warning"),
+ ("calendar", "Expiry date", $"{project.ProjectInfo.ExpiryDate:dd/MM/yyyy} in {(project.ProjectInfo.ExpiryDate - DateTime.Now).Days} days","text-warning"),
+ ("sad-circle", "Penalty days", $"{project.ProjectInfo.PenaltyDays} days","text-warning")
+ };
+ }
+ }
+ }
-
+
+ @if (showCreateModal)
+ {
+
+
+
+
+
@@ -553,9 +605,11 @@
}
-
+
+ }
+
@code {
private bool sendConfirmModal;
@@ -574,14 +628,14 @@
private readonly FeeData feeData = new();
private FounderProject project = new();
-
+
private readonly Dictionary
presets = new()
{
{ "preset1", (new[] { 10, 30, 60 }, 10) },
{ "preset2", (new[] { 25, 25, 25, 25 }, 10) },
{ "preset3", (new[] { 60, 20, 20 }, 15) }
};
-
+
private decimal targetAmountInBTC
{
get => Money.Satoshis(project.ProjectInfo.TargetAmount).ToUnit(MoneyUnit.BTC);
@@ -589,7 +643,7 @@
}
private int activeTab = 1;
-
+
private int totalDuration;
private int numberOfStages;
private bool isValid = true;
@@ -644,9 +698,9 @@
// check if the project was already published to nostr
nostrMetadataCreated = project.NostrProfileCreated;
nostrApplicationSpecificDataCreated = !string.IsNullOrEmpty(project.ProjectInfoEventId);
-
+
// Select a preset
- if(!project.ProjectInfo.Stages.Any())
+ if (!project.ProjectInfo.Stages.Any())
{
isPresetMode = true;
OnStagePresetChange(new ChangeEventArgs { Value = "preset1" });
@@ -738,7 +792,7 @@
}
else
{
- await CreatNostrProfile();
+ await CreatNostrProfile();
}
}
@@ -754,7 +808,7 @@
var nostrKey = _derivationOperations.DeriveProjectNostrPrivateKey(words, project.ProjectIndex);
var resultId = await _RelayService.CreateNostrProfileAsync(
- project.Metadata.ToNostrMetadata(),
+ project.Metadata.ToNostrMetadata(),
NBitcoin.DataEncoders.Encoders.Hex.EncodeData(nostrKey.ToBytes()),
_ =>
{
@@ -890,7 +944,7 @@
catch (Exception e)
{
_Logger.LogError(e, e.Message);
- notificationComponent.ShowErrorMessage(e.Message,e);
+ notificationComponent.ShowErrorMessage(e.Message, e);
}
finally
{
@@ -898,7 +952,7 @@
StateHasChanged();
}
}
-
+
private async Task FeeRangeChanged(ChangeEventArgs e)
{
var selected = e.Value?.ToString();
@@ -962,7 +1016,7 @@
}
catch (Exception e)
{
- notificationComponent.ShowErrorMessage(e.Message,e);
+ notificationComponent.ShowErrorMessage(e.Message, e);
}
finally
{
@@ -1073,10 +1127,10 @@
return false;
}
- if (project.ProjectInfo.TargetAmount < (decimal)0.1)
+ if (targetAmountInBTC < (decimal)0.1)
{
// temporary limit to not allow users to put too much in an Angor contract
-
+
notificationComponent.ShowErrorMessage("Project target amount must be higher than 0.1 BTC");
return false;
}
@@ -1142,7 +1196,7 @@
// If all checks pass, return true
return true;
}
-
+
private List GenerateStages(int[] percentages, int intervalDays)
{
var stages = new List();
@@ -1151,10 +1205,10 @@
for (int i = 0; i < percentages.Length; i++)
{
stages.Add(new Stage
- {
- AmountToRelease = percentages[i],
- ReleaseDate = currentDate
- });
+ {
+ AmountToRelease = percentages[i],
+ ReleaseDate = currentDate
+ });
if (i > 0)
{
@@ -1167,7 +1221,7 @@
return stages;
}
-
+
private void GenerateSmartStages()
{
if (totalDuration <= 0 || numberOfStages <= 0)
@@ -1184,10 +1238,10 @@
for (int i = 0; i < numberOfStages; i++)
{
project.ProjectInfo.Stages.Add(new Stage
- {
- AmountToRelease = stagePercentage,
- ReleaseDate = project.ProjectInfo.StartDate.AddDays(i * stageDuration)
- });
+ {
+ AmountToRelease = stagePercentage,
+ ReleaseDate = project.ProjectInfo.StartDate.AddDays(i * stageDuration)
+ });
}
StateHasChanged();
@@ -1198,7 +1252,7 @@
isPresetMode = !isPresetMode; // Toggle between Presets and Automatic
StateHasChanged(); // Update the UI
}
-
+
private readonly string[] spacePhotos = new[]
{
"https://images-assets.nasa.gov/image/hubble-observes-one-of-a-kind-star-nicknamed-nasty_17754652960_o/hubble-observes-one-of-a-kind-star-nicknamed-nasty_17754652960_o~thumb.jpg?as=webp",
@@ -1219,7 +1273,7 @@
"https://images-assets.nasa.gov/image/GSFC_20171208_Archive_e002020/GSFC_20171208_Archive_e002020~thumb.jpg?as=webp",
"https://images-assets.nasa.gov/image/0203048/0203048~thumb.jpg?as=webp"
};
-
+
private FounderProject CreateDefaultProject(FounderKeys projectsKeys)
{
return new FounderProject
@@ -1235,11 +1289,10 @@
StartDate = DateTime.UtcNow.AddMinutes(2), // to allow testing and spending immediately
PenaltyDays = 90,
ExpiryDate = DateTime.UtcNow.AddDays(120),
- TargetAmount = Money.Coins(50).Satoshi
- }
+ TargetAmount = Money.Coins(50).Satoshi
+ }
};
}
-
private void PopulateTestnetData(FounderProject project)
{
var random = new Random();
@@ -1256,5 +1309,21 @@
}
}
-
+ private async Task CopyToClipboard(string text)
+ {
+ await JS.InvokeVoidAsync("navigator.clipboard.writeText", text);
+ notificationComponent.ShowNotificationMessage("Copied to clipboard", 2);
+ }
+
+
+ private IEnumerable<(string IconName, string Label, string Value)> GetProjectInfo()
+ {
+ return new List<(string, string, string)>
+ {
+ ("name", "Project Name", project.Metadata.Name),
+ ("about", "Project About", ((MarkupString)project.Metadata.About).ToString()),
+ ("identifier", "Project Identifier", project.ProjectInfo.ProjectIdentifier),
+ ("key", "Founder Key", project.ProjectInfo.FounderKey)
+ };
+ }
}
\ No newline at end of file
diff --git a/src/Angor/Client/Pages/Founder.razor b/src/Angor/Client/Pages/Founder.razor
index 650ebd81f..18223b077 100644
--- a/src/Angor/Client/Pages/Founder.razor
+++ b/src/Angor/Client/Pages/Founder.razor
@@ -73,7 +73,7 @@
@if (founderProjects.Count > 0)
{
-
+
@foreach (var project in founderProjects)
{
diff --git a/src/Angor/Client/Pages/Invest.razor b/src/Angor/Client/Pages/Invest.razor
index 56c95b18b..f816b891a 100644
--- a/src/Angor/Client/Pages/Invest.razor
+++ b/src/Angor/Client/Pages/Invest.razor
@@ -194,7 +194,11 @@