TKK_E32222868/storage/framework/views/ca71e96555f04aef8514795a593...

151 lines
6.6 KiB
PHP

<!DOCTYPE html>
<html lang="<?php echo e(str_replace('_', '-', app()->getLocale())); ?>">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="<?php echo e(csrf_token()); ?>">
<title><?php echo e(config('app.name', 'DFOOD')); ?></title>
<?php echo app('Illuminate\Foundation\Vite')(['resources/css/app.css', 'resources/js/app.js']); ?>
<script type="text/javascript" src="<?php echo e(config('services.midtrans.snap_url')); ?>"
data-client-key="<?php echo e(config('services.midtrans.client_key')); ?>"></script>
<?php echo \Livewire\Mechanisms\FrontendAssets\FrontendAssets::styles(); ?>
</head>
<body class="font-sans antialiased">
<?php echo e($slot); ?>
<script src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js" defer></script>
<?php echo \Livewire\Mechanisms\FrontendAssets\FrontendAssets::scripts(); ?>
<script>
document.addEventListener('livewire:initialized', function() {
// Livewire Event Listener untuk notifikasi umum
Livewire.on('notify', (data) => {
console.log('Notification:', data.message);
});
// Livewire Event Listener untuk menampilkan Midtrans Snap Pop-up
Livewire.on('midtransSnapToken', (event) => {
const snapToken = event.token;
console.log('Received Midtrans Snap Token:', snapToken);
if (typeof Snap !== 'undefined' && snapToken) {
try {
Snap.pay(snapToken, {
onSuccess: function(result) {
console.log('Payment success:', result);
Livewire.dispatch(
'paymentSuccess'); // Inform Livewire component
},
onPending: function(result) {
console.log('Payment pending:', result);
Livewire.dispatch('notify', {
message: 'Pembayaran menunggu konfirmasi Anda.'
});
},
onError: function(result) {
console.log('Payment error:', result);
let errorMessage = 'Terjadi kesalahan pembayaran.';
if (result.status_code === '400') {
errorMessage = 'Permintaan tidak valid. Mohon coba lagi.';
} else if (result.status_code === '401') {
errorMessage =
'Autentikasi Midtrans gagal. Hubungi administrator.';
}
Livewire.dispatch('notify', {
message: errorMessage
});
},
onClose: function() {
console.log('Payment closed by user');
Livewire.dispatch('notify', {
message: 'Pembayaran dibatalkan oleh pengguna.'
});
}
});
} catch (e) {
console.error("Error calling Snap.pay:", e);
Livewire.dispatch('notify', {
message: 'Terjadi kesalahan saat memulai pembayaran.'
});
}
} else {
console.error(
'Midtrans Snap.js not loaded or Snap object is undefined, or snapToken is empty.'
);
Livewire.dispatch('notify', {
message: 'Sistem pembayaran tidak siap. Mohon refresh halaman.'
});
}
});
// Livewire Event Listener untuk update URL di browser history
Livewire.on('updateUrl', (data) => {
const newUrl = data.url;
if (window.history.pushState) {
window.history.pushState({
path: newUrl
}, '', newUrl);
}
});
// Livewire hook untuk logging proses (hapus di production jika tidak perlu)
Livewire.hook('message.processed', (message, component) => {
if (component.fingerprint.name === 'food-order') {
console.log('FoodOrder component updated. Current cart:', component.serverMemo.data
.cart);
}
});
// Livewire Event Listener untuk menyembunyikan progress bar navigasi
Livewire.on('start-navigation', () => {
const progressBar = document.querySelector('.livewire-progress-bar');
if (progressBar) {
progressBar.style.display = 'none';
}
});
// Pindahkan setInterval untuk refresh CSRF di sini, di dalam livewire:initialized
setInterval(() => {
fetch('/refresh-csrf')
.then(response => response.json())
.then(data => {
const csrfMeta = document.querySelector('meta[name="csrf-token"]');
if (csrfMeta) {
csrfMeta.setAttribute('content', data.csrf_token);
}
// Pastikan Livewire sudah ada sebelum mencoba mengaksesnya
if (window.Livewire && typeof window.Livewire.findComponents === 'function') {
window.Livewire.findComponents().forEach(component => {
if (component.canonical) {
component.canonical.csrf = data.csrf_token;
}
});
} else {
console.warn('Livewire.findComponents not available yet.');
}
console.log('CSRF token refreshed:', data.csrf_token);
})
.catch(error => {
console.error('Error refreshing CSRF token:', error);
});
}, 1800000); // 30 menit (1800000 ms)
});
</script>
</body>
</html>
<?php /**PATH E:\!PROJECT\dfood-website\resources\views/components/layouts/front.blade.php ENDPATH**/ ?>