me-web? 0.5.2: findings are offered for sharing once the last measurement is in
- The offer to share now appears when the two-minute test of how long an unused connection stays open has finished, so a shared report carries its answer instead of "measuring". - Starting a new check while that test is still running no longer lets its late answer land on the new check's card. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
1 parent
6623c6f9f1
commit
6c3ae477b7
2 files changed
+12
-3
No files matched your search
@@ -1,6 +1,6 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Version>0.5.1</Version>
|
||||
<Version>0.5.2</Version>
|
||||
<Product>me-web?</Product>
|
||||
<Company>Arasaka di Hvozdikov Yevheniy</Company>
|
||||
<Copyright>© 2026 Arasaka di Hvozdikov Yevheniy</Copyright>
|
||||
|
||||
@@ -45,6 +45,8 @@ public partial class MainViewModel : ObservableObject
|
||||
readonly Leftovers leftovers;
|
||||
readonly Submissions submissions;
|
||||
RunReport lastRun;
|
||||
int checks;
|
||||
bool sent;
|
||||
bool revealing;
|
||||
bool instant;
|
||||
|
||||
@@ -198,15 +200,20 @@ public partial class MainViewModel : ObservableObject
|
||||
HistoryCleared = false;
|
||||
AskReach = false;
|
||||
OfferShare = false;
|
||||
sent = false;
|
||||
ShareResult = null;
|
||||
var generation = ++checks;
|
||||
foreach (var card in Cards) card.Finding = card.Id == CheckId.Reach ? null : Finding.Running(card.Id);
|
||||
Uses.Clear();
|
||||
ResetPath(platform.Device);
|
||||
try
|
||||
{
|
||||
lastRun = await runner.Run((finding, run) => Dispatcher.UIThread.Post(() => Apply(finding, run)), ct);
|
||||
lastRun = await runner.Run((finding, run) => Dispatcher.UIThread.Post(() =>
|
||||
{
|
||||
if (generation == checks) Apply(finding, run);
|
||||
}), ct);
|
||||
ShowUses(lastRun);
|
||||
OfferShare = true;
|
||||
OfferShare = lastRun.Stun?.Ports?.LifetimeDone != false;
|
||||
OnPropertyChanged(nameof(CanOpenPorts));
|
||||
AskReach = lastRun.PublicV4 is not null || lastRun.PublicV6 is not null;
|
||||
if (!AskReach) SettleReach(null);
|
||||
@@ -296,6 +303,7 @@ public partial class MainViewModel : ObservableObject
|
||||
Shared.Add(new SubmissionViewModel(submission, Unshare));
|
||||
OnPropertyChanged(nameof(ShowShared));
|
||||
ShareResult = Localizer.Instance.Format("ShareSent", shared.Id, Texts.Date(shared.KeepUntil));
|
||||
sent = true;
|
||||
OfferShare = false;
|
||||
}
|
||||
finally
|
||||
@@ -474,6 +482,7 @@ public partial class MainViewModel : ObservableObject
|
||||
var ports = run.Stun?.Ports;
|
||||
if (exit is not null && run.Nat == NatKind.Shared && run.PublicV4 is not null && ports?.Pattern is PortPattern.InOrder or PortPattern.Block)
|
||||
exit.Details = Lines(Address($"{run.PublicV4}:{ports.Low}–{ports.High}"));
|
||||
if (ports?.LifetimeDone == true && run == lastRun && !IsChecking && !sent) OfferShare = true;
|
||||
break;
|
||||
case CheckId.Addresses:
|
||||
var internet = Node(NodeRole.Internet);
|
||||
|
||||
Reference in new issue
Block a user