115 lines
4.7 KiB
PHP
115 lines
4.7 KiB
PHP
@use('Namu\WireChat\Facades\WireChat')
|
|
|
|
|
|
@php
|
|
$isSameAsNext = ($message?->sendable_id === $nextMessage?->sendable_id) && ($message?->sendable_type === $nextMessage?->sendable_type);
|
|
$isNotSameAsNext = !$isSameAsNext;
|
|
$isSameAsPrevious = ($message?->sendable_id === $previousMessage?->sendable_id) && ($message?->sendable_type === $previousMessage?->sendable_type);
|
|
$isNotSameAsPrevious = !$isSameAsPrevious;
|
|
@endphp
|
|
|
|
<div
|
|
|
|
|
|
{{-- We use style here to make it easy for dynamic and safe injection --}}
|
|
@style([
|
|
'background-color:var(--wc-brand-primary)' => $belongsToAuth==true
|
|
])
|
|
|
|
@class([
|
|
'flex flex-wrap max-w-fit text-[15px] border border-gray-200/40 dark:border-none rounded-xl p-2.5 flex flex-col text-black bg-[#f6f6f8fb]',
|
|
'text-white' => $belongsToAuth, // Background color for messages sent by the authenticated user
|
|
'bg-[var(--wc-light-secondary)] dark:bg-[var(--wc-dark-secondary)] dark:text-white' => !$belongsToAuth,
|
|
|
|
// Message styles based on position and ownership
|
|
|
|
// RIGHT
|
|
// First message on RIGHT
|
|
'rounded-br-md rounded-tr-2xl' => ($isSameAsNext && $isNotSameAsPrevious && $belongsToAuth),
|
|
|
|
// Middle message on RIGHT
|
|
'rounded-r-md' => ($isSameAsPrevious && $belongsToAuth),
|
|
|
|
// Standalone message RIGHT
|
|
'rounded-br-xl rounded-r-xl' => ($isNotSameAsPrevious && $isNotSameAsNext && $belongsToAuth),
|
|
|
|
// Last Message on RIGHT
|
|
'rounded-br-2xl' => ($isNotSameAsNext && $belongsToAuth),
|
|
|
|
// LEFT
|
|
// First message on LEFT
|
|
'rounded-bl-md rounded-tl-2xl' => ($isSameAsNext && $isNotSameAsPrevious && !$belongsToAuth),
|
|
|
|
// Middle message on LEFT
|
|
'rounded-l-md' => ($isSameAsPrevious && !$belongsToAuth),
|
|
|
|
// Standalone message LEFT
|
|
'rounded-bl-xl rounded-l-xl' => ($isNotSameAsPrevious && $isNotSameAsNext && !$belongsToAuth),
|
|
|
|
// Last message on LEFT
|
|
'rounded-bl-2xl' => ($isNotSameAsNext && !$belongsToAuth),
|
|
])
|
|
>
|
|
@if (!$belongsToAuth && $isGroup)
|
|
<div
|
|
@class([
|
|
'shrink-0 font-medium text-black',
|
|
// Hide avatar if the next message is from the same user
|
|
'hidden' => $isSameAsPrevious
|
|
])>
|
|
{{ $message?->sendable?->display_name }}
|
|
</div>
|
|
@endif
|
|
|
|
@php
|
|
// Check if the body is a valid internal URL so a href link can be rendered
|
|
$appUrl = rtrim(config('app.url'), '/');
|
|
$body = trim($message?->body ?? '');
|
|
$isInternalUrl = false;
|
|
if (filter_var($body, FILTER_VALIDATE_URL)) {
|
|
$isInternalUrl = str_starts_with($body, $appUrl);
|
|
}
|
|
|
|
// Check if body is a transaction statement URL
|
|
$transactionShowPattern = '#^' . preg_quote($appUrl, '#') . '/[a-z]{2}/statement/\d+$#';
|
|
$isTransactionLink = preg_match($transactionShowPattern, $body);
|
|
@endphp
|
|
@if ($isTransactionLink)
|
|
<pre class="whitespace-pre-line tracking-normal text-sm border pt-3 border-white rounded-lg md:text-base dark:text-white lg:tracking-normal"
|
|
style="font-family: inherit;">
|
|
<a href="{{ $body }}" class="underline">
|
|
<div class="flex flex-col items-center gap-0 w-fit max-h-fit">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-8">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0 1 3.75 9.375v-4.5ZM3.75 14.625c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5a1.125 1.125 0 0 1-1.125-1.125v-4.5ZM13.5 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0 1 13.5 9.375v-4.5Z" />
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 6.75h.75v.75h-.75v-.75ZM6.75 16.5h.75v.75h-.75v-.75ZM16.5 6.75h.75v.75h-.75v-.75ZM13.5 13.5h.75v.75h-.75v-.75ZM13.5 19.5h.75v.75h-.75v-.75ZM19.5 13.5h.75v.75h-.75v-.75ZM19.5 19.5h.75v.75h-.75v-.75ZM16.5 16.5h.75v.75h-.75v-.75Z" />
|
|
</svg>
|
|
<span class="text-center mx-6">
|
|
{{ __('View transaction') }}
|
|
</span>
|
|
</div>
|
|
</a>
|
|
</pre>
|
|
@else
|
|
<pre class="whitespace-pre-line tracking-normal text-sm md:text-base dark:text-white lg:tracking-normal"
|
|
style="font-family: inherit;">
|
|
@if ($isInternalUrl)
|
|
<a href="{{ $body }}" class="underline">
|
|
{{ $body }}
|
|
</a>
|
|
@else
|
|
{{ $body }}
|
|
@endif
|
|
</pre>
|
|
@endif
|
|
|
|
{{-- Display the created time based on different conditions --}}
|
|
<span
|
|
@class(['text-[11px] ml-auto ', 'text-gray-700 dark:text-gray-300' => !$belongsToAuth,'text-gray-100' => $belongsToAuth])>
|
|
@php
|
|
// If the message was created today, show only the time (e.g., 1:00 AM)
|
|
echo $message?->created_at->format('H:i');
|
|
@endphp
|
|
</span>
|
|
|
|
</div>
|