Dont record us in seenby/path for local messages. Update echomail display to know if an exchomail seenby has collected the message
All checks were successful
Create Docker Image / Build Docker Image (x86_64) (push) Successful in 39s
Create Docker Image / Build Docker Image (arm64) (push) Successful in 1m46s
Create Docker Image / Final Docker Image Manifest (push) Successful in 10s

This commit is contained in:
Deon George 2024-05-23 20:11:32 +10:00
parent 4f8448563d
commit f082bb0ebd
2 changed files with 36 additions and 17 deletions

View File

@ -10,6 +10,7 @@ use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use App\Casts\{CollectionOrNull,CompressedString};
use App\Classes\FTN\Message;
use App\Interfaces\Packet;
use App\Traits\{MessageAttributes,MsgID,ParseAddresses,QueryCacheableConfig};
@ -96,7 +97,6 @@ final class Echomail extends Model implements Packet
throw new \Exception('Cannot save, validation errors exist');
});
// @todo dont save us in the seenby/path, we'll add it dynamically when we send out.
// @todo if the message is updated with new SEEN-BY's from another route, we'll delete the pending export for systems (if there is one)
static::created(function($model) {
$rogue = collect();
@ -110,7 +110,7 @@ final class Echomail extends Model implements Packet
Log::debug(sprintf('%s:^ Message [%d] from point address is [%d]',self::LOGKEY,$model->id,$model->fftn->point_id));
// Make sure our sender is first in the path
if (! $path->contains($model->fftn_id)) {
if ((! $model->isFlagSet(Message::FLAG_LOCAL)) && (! $path->contains($model->fftn_id))) {
Log::alert(sprintf('%s:? Echomail adding sender to start of PATH [%s].',self::LOGKEY,$model->fftn_id));
$path->prepend($model->fftn_id);
}
@ -141,7 +141,7 @@ final class Echomail extends Model implements Packet
$seenby = self::parseAddresses('seenby',$model->set->get('set_seenby'),$model->fftn->zone,$rogue);
// Make sure our sender is in the seenby
if (! $seenby->contains($model->fftn_id)) {
if ((! $model->isFlagSet(Message::FLAG_LOCAL)) && (! $seenby->contains($model->fftn_id))) {
Log::alert(sprintf('%s:? Echomail adding sender to SEENBY [%s].',self::LOGKEY,$model->fftn_id));
$seenby->push($model->fftn_id);
}
@ -182,6 +182,7 @@ final class Echomail extends Model implements Packet
->addresses
->filter(function($item) use ($model) { return $model->echoarea->can_read($item->security); })
->pluck('id')
->diff(our_address($model->fftn->zone->domain))
->diff($seenby);
if ($exportto->count()) {

View File

@ -63,7 +63,20 @@ use App\Models\{Echomail,Netmail};
@if ($msg instanceof Echomail)
<div class="row pb-2">
<div class="col-8">
SEENBY: <br><strong class="highlight">{!! $msg->seenby->pluck('ftn2d')->join('</strong>, <strong class="highlight">') !!}</strong>
SEENBY: <br><strong class="highlight">{!! $msg
->seenby
->map(function($item) {
if ($item->pivot->export_at) {
if ($item->pivot->sent_at)
return sprintf('<strong class="success" title="Sent: %s Packet: %s">%s</strong>',$item->pivot->sent_at,$item->pivot->sent_pkt,$item->ftn2d);
else
return sprintf('<strong class="danger">%s</strong>',$item->ftn2d);
} else {
return sprintf('<strong class="highlight">%s</strong>',$item->ftn2d);
}
})->join(', ') !!}
</strong>
</div>
@if($msg->rogue_seenby->count())
@ -72,10 +85,14 @@ use App\Models\{Echomail,Netmail};
</div>
@endif
<!-- @todo for the nodes we export to, highlight those that we have actually sent it, vs those that havent received it yet -->
<div class="row pb-2">
<div class="col-8">
PATH: <br><strong class="highlight">{!! $msg->pathorder()->join('</strong> -> <strong class="highlight">') !!}</strong>
PATH:
@if($msg->path->count())
<br><strong class="highlight">{!! $msg->pathorder()->join('</strong> -> <strong class="highlight">') !!}</strong>
@else
<br><small>[<strong>No details</strong>]</small>
@endif
@if(($msg instanceof Echomail) && $msg->rogue_path->count())
<br><small>[<strong>NOTE</strong>: Some path values couldnt be identified - ({{ $msg->rogue_path->join(',') }})]</small>
@ -83,19 +100,20 @@ use App\Models\{Echomail,Netmail};
</div>
</div>
<div class="row pb-2">
@if($msg->path->count())
<div class="row pb-2">
<div class="col-8">
@if($msg instanceof Netmail)
RECEIVED:<br>
@if($msg instanceof Netmail)
@foreach ($msg->path as $path)
<strong class="highlight">{{ $path->pivot->recv_pkt }}</strong> from <strong class="highlight">{{ $path->ftn }}</strong> {{ $msg->created_at }}
<strong class="highlight">{{ $path->pivot->recv_pkt }}</strong> from <strong class="highlight">{{ $path->ftn }}</strong> {{ $msg->created_at }}<br>
@endforeach
@elseif ($msg instanceof Echomail)
RECEIVED:<br>
<strong class="highlight">{{ ($x=$msg->path->sortBy('pivot.parent_id')->last())->pivot->recv_pkt }}</strong> from <strong class="highlight">{{ $x->ftn }}</strong> {{ $x->pivot->recv_at }}
<strong class="highlight">{{ ($x=$msg->path->sortBy('pivot.parent_id')->last())->pivot->recv_pkt }}</strong> from <strong class="highlight">{{ $x->ftn }}</strong> {{ $x->pivot->recv_at }}<br>
@endif
</div>
</div>
</div>
@endif
@if($msg instanceof Netmail)
<div class="col-8">