-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Started some workn on the continous refresher. Don't think it'll be p…
…ossible to do, but want to try at least
- Loading branch information
1 parent
0b548c8
commit 2160b86
Showing
3 changed files
with
117 additions
and
0 deletions.
There are no files selected for viewing
24 changes: 24 additions & 0 deletions
24
src/SvgHelpers/SvgHelpers/Components/ImageRefreshComponent.razor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
@using BlazorMonaco.Editor | ||
@using ProgrammerAl.SvgHelpers.Components.AnimatedComponents | ||
|
||
<div class="flex"> | ||
@* <p>File Url: </p> | ||
<input type="text" @bind="EnteredImageUrl" | ||
class="border border-black min-w-16 py-2 px-4" /> | ||
*@ | ||
<InputFile OnChange="@SingleUploadAsync" accept=".svg" /> | ||
|
||
</div> | ||
|
||
|
||
@* @if (!string.IsNullOrWhiteSpace(ImageDataUrl)) *@ | ||
@if(!string.IsNullOrWhiteSpace(SvgHtml.Value)) | ||
{ | ||
<div> | ||
<p>Image at: @(ImageFile!.Name))</p> | ||
<p>Last update time: @(LastImageRefreshTime) </p> | ||
@* <img src="@($"{ImageUrl}?unique={DateTime.Now.ToString("yyyy-MM-dd-HH:mm:ss")}")" /> *@ | ||
@* <img src="@ImageDataUrl" /> *@ | ||
@SvgHtml | ||
</div> | ||
} |
88 changes: 88 additions & 0 deletions
88
src/SvgHelpers/SvgHelpers/Components/ImageRefreshComponent.razor.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Collections.Immutable; | ||
using System.IO; | ||
using System.Linq; | ||
using System.Net.Http; | ||
using System.Text.Json; | ||
|
||
using Microsoft.AspNetCore.Components; | ||
using Microsoft.AspNetCore.Components.Forms; | ||
|
||
namespace ProgrammerAl.SvgHelpers.Components; | ||
|
||
public partial class ImageRefreshComponent : ComponentBase | ||
{ | ||
private static readonly TimeSpan RefreshLoopWaitTime = TimeSpan.FromMilliseconds(500); | ||
private static readonly TimeSpan ImageRefreshInterval = TimeSpan.FromSeconds(5); | ||
private const long MaxImageSize = 1024 * 1024 * 1024; //1 GB | ||
|
||
//private string? _lastImageUrl; | ||
|
||
//private string? EnteredImageUrl { get; set; } | ||
//private string? ImageUrl { get; set; } | ||
private DateTime LastImageRefreshTime { get; set; } = DateTime.MinValue; | ||
private IBrowserFile? ImageFile { get; set; } = null; | ||
|
||
private string? ImageDataUrl { get; set; } | ||
private MarkupString SvgHtml { get; set; } | ||
|
||
protected override void OnInitialized() | ||
{ | ||
//Fire and forget | ||
_ = RefreshImageLoopAsync(); | ||
|
||
base.OnInitialized(); | ||
} | ||
|
||
private async Task SingleUploadAsync(InputFileChangeEventArgs e) | ||
{ | ||
ImageFile = e.File; | ||
await RefreshImageAsync(); | ||
//MemoryStream ms = new MemoryStream(); | ||
//await e.File.OpenReadStream().CopyToAsync(ms); | ||
//var bytes = ms.ToArray(); | ||
//do something with bytes | ||
} | ||
|
||
private async Task RefreshImageLoopAsync() | ||
{ | ||
while (true) | ||
{ | ||
await Task.Delay(RefreshLoopWaitTime); | ||
|
||
if (ImageFile != null | ||
&& (DateTime.Now - LastImageRefreshTime) >= ImageRefreshInterval) | ||
{ | ||
await RefreshImageAsync(); | ||
} | ||
} | ||
} | ||
|
||
private async Task RefreshImageAsync() | ||
{ | ||
if (ImageFile is null) | ||
{ | ||
return; | ||
} | ||
|
||
try | ||
{ | ||
var svgText = await new StreamReader(ImageFile.OpenReadStream(maxAllowedSize: MaxImageSize)).ReadToEndAsync(); | ||
SvgHtml = new MarkupString(svgText); | ||
|
||
//using var ms = new MemoryStream(); | ||
//await ImageFile.OpenReadStream(maxAllowedSize: MaxImageSize).CopyToAsync(ms); | ||
//var bytes = ms.ToArray(); | ||
//var base64 = Convert.ToBase64String(bytes); | ||
//ImageDataUrl = string.Format("data:image/svg+xml;base64,{0}", base64); | ||
|
||
LastImageRefreshTime = DateTime.Now; | ||
await InvokeAsync(StateHasChanged); | ||
} | ||
catch (Exception ex) | ||
{ | ||
await Console.Out.WriteLineAsync(ex.ToString()); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters