From fd5a85400c0f433d106fa5171ed12123a8f0b051 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sun, 16 Nov 2025 14:38:01 +0700 Subject: [PATCH] feat(push notification): membuat trait untuk simpan data subcription dan use di di semua component --- app/Livewire/Studio/Catalog/Bottle/Index.php | 3 +- app/Livewire/Studio/Catalog/Brand.php | 3 +- app/Livewire/Studio/Catalog/Category.php | 3 +- app/Livewire/Studio/Catalog/Perfume/Index.php | 3 +- app/Livewire/Studio/Catalog/Product/Index.php | 3 +- app/Livewire/Studio/Dashboard/Analysis.php | 3 ++ app/Livewire/Studio/Dashboard/Overview.php | 30 ++-------------- app/Livewire/Studio/Feature/ChooseUs.php | 3 +- .../Studio/Feature/PerfumeFeature.php | 3 +- app/Livewire/Studio/Finance/Expense.php | 3 +- app/Livewire/Studio/Finance/Payroll.php | 3 +- app/Livewire/Studio/Loyalty/Customer.php | 3 +- app/Livewire/Studio/Loyalty/Tier.php | 3 +- app/Livewire/Studio/Loyalty/Tier/Reward.php | 3 +- app/Livewire/Studio/Loyalty/Voucher/Index.php | 3 +- app/Livewire/Studio/Manage/Article/Index.php | 3 +- app/Livewire/Studio/Manage/Faq.php | 3 +- app/Livewire/Studio/Manage/Order/Index.php | 3 +- app/Livewire/Studio/Manage/Purchase/Index.php | 3 +- app/Livewire/Studio/Master/Formula.php | 3 +- app/Livewire/Studio/Master/Outlet/Index.php | 3 +- app/Livewire/Studio/Master/User/Index.php | 3 +- app/Livewire/Studio/Setting/Account.php | 3 +- app/Livewire/Studio/Setting/Application.php | 3 +- app/Livewire/Studio/Setting/Password.php | 3 +- app/Livewire/Studio/Setting/Profile.php | 3 +- app/Livewire/Studio/Setting/Whatsapp.php | 3 +- .../WithSubscribeNotification.php | 34 +++++++++++++++++++ 28 files changed, 90 insertions(+), 52 deletions(-) create mode 100644 app/Traits/Notification/WithSubscribeNotification.php diff --git a/app/Livewire/Studio/Catalog/Bottle/Index.php b/app/Livewire/Studio/Catalog/Bottle/Index.php index f78330c..97773cb 100644 --- a/app/Livewire/Studio/Catalog/Bottle/Index.php +++ b/app/Livewire/Studio/Catalog/Bottle/Index.php @@ -3,6 +3,7 @@ namespace App\Livewire\Studio\Catalog\Bottle; use App\Models\Bottle; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithConfirmation; use App\Traits\WithShowPrice; use App\Traits\WithToast; @@ -13,7 +14,7 @@ #[Title('Botol')] class Index extends Component { - use WithConfirmation, WithShowPrice, WithToast; + use WithConfirmation, WithShowPrice, WithSubscribeNotification, WithToast; public function delete(Bottle $bottle) { diff --git a/app/Livewire/Studio/Catalog/Brand.php b/app/Livewire/Studio/Catalog/Brand.php index 67e1329..5199ee6 100644 --- a/app/Livewire/Studio/Catalog/Brand.php +++ b/app/Livewire/Studio/Catalog/Brand.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\Studio\Catalog\BrandForm; use App\Models\Brand as BrandModel; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -17,7 +18,7 @@ #[Title('Merek')] class Brand extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public BrandForm $form; diff --git a/app/Livewire/Studio/Catalog/Category.php b/app/Livewire/Studio/Catalog/Category.php index 5b1c8e9..597a6e1 100644 --- a/app/Livewire/Studio/Catalog/Category.php +++ b/app/Livewire/Studio/Catalog/Category.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\Studio\Catalog\CategoryForm; use App\Models\Category as CategoryModel; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -17,7 +18,7 @@ #[Title('Kategori')] class Category extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public CategoryForm $form; diff --git a/app/Livewire/Studio/Catalog/Perfume/Index.php b/app/Livewire/Studio/Catalog/Perfume/Index.php index e8b6f94..abf4e88 100644 --- a/app/Livewire/Studio/Catalog/Perfume/Index.php +++ b/app/Livewire/Studio/Catalog/Perfume/Index.php @@ -3,6 +3,7 @@ namespace App\Livewire\Studio\Catalog\Perfume; use App\Models\Perfume; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithConfirmation; use App\Traits\WithShowPrice; use App\Traits\WithToast; @@ -13,7 +14,7 @@ #[Title('Parfum')] class Index extends Component { - use WithConfirmation, WithShowPrice, WithToast; + use WithConfirmation, WithShowPrice, WithSubscribeNotification, WithToast; public function delete(Perfume $perfume) { diff --git a/app/Livewire/Studio/Catalog/Product/Index.php b/app/Livewire/Studio/Catalog/Product/Index.php index a333716..7cf4785 100644 --- a/app/Livewire/Studio/Catalog/Product/Index.php +++ b/app/Livewire/Studio/Catalog/Product/Index.php @@ -3,6 +3,7 @@ namespace App\Livewire\Studio\Catalog\Product; use App\Models\Product; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithConfirmation; use App\Traits\WithShowPrice; use App\Traits\WithToast; @@ -13,7 +14,7 @@ #[Title('Produk')] class Index extends Component { - use WithConfirmation, WithShowPrice,WithToast; + use WithConfirmation, WithShowPrice, WithSubscribeNotification, WithToast; public function delete(Product $product) { diff --git a/app/Livewire/Studio/Dashboard/Analysis.php b/app/Livewire/Studio/Dashboard/Analysis.php index f822793..ff42f7a 100644 --- a/app/Livewire/Studio/Dashboard/Analysis.php +++ b/app/Livewire/Studio/Dashboard/Analysis.php @@ -17,6 +17,7 @@ use App\Models\Tier; use App\Models\User; use App\Models\Voucher; +use App\Traits\Notification\WithSubscribeNotification; use Carbon\Carbon; use Livewire\Attributes\Title; use Livewire\Component; @@ -24,6 +25,8 @@ #[Title('Analisa')] class Analysis extends Component { + use WithSubscribeNotification; + public string $period = 'all'; public array $outlets = []; diff --git a/app/Livewire/Studio/Dashboard/Overview.php b/app/Livewire/Studio/Dashboard/Overview.php index 922265e..57d077a 100644 --- a/app/Livewire/Studio/Dashboard/Overview.php +++ b/app/Livewire/Studio/Dashboard/Overview.php @@ -7,15 +7,16 @@ use App\Models\OrderItem; use App\Models\Perfume; use App\Models\Purchase; -use App\Models\PushNotification; +use App\Traits\Notification\WithSubscribeNotification; use Illuminate\Support\Facades\DB; -use Livewire\Attributes\On; use Livewire\Attributes\Title; use Livewire\Component; #[Title('Ringkasan')] class Overview extends Component { + use WithSubscribeNotification; + public array $outlets = []; public array $selectedOutletIds = []; @@ -250,31 +251,6 @@ protected function loadStats() ]); } - #[On('notification:subscribe')] - public function notificationSubscribe(string $subscription) - { - $subscription = json_decode($subscription, true); - - $isExist = PushNotification::where('user_id', auth()->id()) - ->whereJsonContains('subscriptions->keys->auth', $subscription['keys']['auth']) - ->first(); - - if ($isExist) { - return; - } - - $userId = auth()->id(); - - $encodedSubscription = json_encode($subscription); - PushNotification::updateOrCreate( - [ - 'user_id' => $userId, - 'subscriptions' => $encodedSubscription, - ], - ['subscriptions' => $encodedSubscription], - ); - } - public function render() { return view('livewire.studio.dashboard.overview'); diff --git a/app/Livewire/Studio/Feature/ChooseUs.php b/app/Livewire/Studio/Feature/ChooseUs.php index c3173ec..5455e9f 100644 --- a/app/Livewire/Studio/Feature/ChooseUs.php +++ b/app/Livewire/Studio/Feature/ChooseUs.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\Studio\Feature\ChooseUsForm; use App\Models\ChooseUs as ChooseUsModel; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -17,7 +18,7 @@ #[Title('Pilih Kami')] class ChooseUs extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public ChooseUsForm $form; diff --git a/app/Livewire/Studio/Feature/PerfumeFeature.php b/app/Livewire/Studio/Feature/PerfumeFeature.php index 162445e..f2bf22d 100644 --- a/app/Livewire/Studio/Feature/PerfumeFeature.php +++ b/app/Livewire/Studio/Feature/PerfumeFeature.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\Studio\Feature\PerfumeFeatureForm; use App\Models\PerfumeFeature as PerfumeFeatureModel; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -17,7 +18,7 @@ #[Title('Keunggulan Parfum')] class PerfumeFeature extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public PerfumeFeatureForm $form; diff --git a/app/Livewire/Studio/Finance/Expense.php b/app/Livewire/Studio/Finance/Expense.php index ed18e23..466ff02 100644 --- a/app/Livewire/Studio/Finance/Expense.php +++ b/app/Livewire/Studio/Finance/Expense.php @@ -5,6 +5,7 @@ use App\Livewire\Forms\Studio\Finance\ExpenseForm; use App\Models\Expense as ExpenseModel; use App\Models\Outlet; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -18,7 +19,7 @@ #[Title('Pengeluaran')] class Expense extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public ExpenseForm $form; diff --git a/app/Livewire/Studio/Finance/Payroll.php b/app/Livewire/Studio/Finance/Payroll.php index 1d26820..eac0092 100644 --- a/app/Livewire/Studio/Finance/Payroll.php +++ b/app/Livewire/Studio/Finance/Payroll.php @@ -7,6 +7,7 @@ use App\Models\Payroll as PayrollModel; use App\Models\PayrollAdjustment; use App\Models\User; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -22,7 +23,7 @@ #[Title('Penggajian')] class Payroll extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData, WithUserSelector; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData, WithUserSelector; public PayrollForm $form; diff --git a/app/Livewire/Studio/Loyalty/Customer.php b/app/Livewire/Studio/Loyalty/Customer.php index bf19043..de11c70 100644 --- a/app/Livewire/Studio/Loyalty/Customer.php +++ b/app/Livewire/Studio/Loyalty/Customer.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\Studio\Loyalty\CustomerForm; use App\Models\Customer as CustomerModel; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -17,7 +18,7 @@ #[Title('Customer')] class Customer extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public CustomerForm $form; diff --git a/app/Livewire/Studio/Loyalty/Tier.php b/app/Livewire/Studio/Loyalty/Tier.php index 8cd214e..388db73 100644 --- a/app/Livewire/Studio/Loyalty/Tier.php +++ b/app/Livewire/Studio/Loyalty/Tier.php @@ -7,6 +7,7 @@ use App\Models\Perfume; use App\Models\Product; use App\Models\Tier as TierModel; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -20,7 +21,7 @@ #[Title('Tier')] class Tier extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public array $tiers = []; diff --git a/app/Livewire/Studio/Loyalty/Tier/Reward.php b/app/Livewire/Studio/Loyalty/Tier/Reward.php index cf95442..b58e3aa 100644 --- a/app/Livewire/Studio/Loyalty/Tier/Reward.php +++ b/app/Livewire/Studio/Loyalty/Tier/Reward.php @@ -5,6 +5,7 @@ use App\Livewire\Forms\Studio\Loyalty\Tier\RewardForm; use App\Livewire\Studio\Loyalty\Tier; use App\Models\TierReward; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -18,7 +19,7 @@ #[Title('Hadiah')] class Reward extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public RewardForm $form; diff --git a/app/Livewire/Studio/Loyalty/Voucher/Index.php b/app/Livewire/Studio/Loyalty/Voucher/Index.php index 91e149d..840f9ff 100644 --- a/app/Livewire/Studio/Loyalty/Voucher/Index.php +++ b/app/Livewire/Studio/Loyalty/Voucher/Index.php @@ -3,6 +3,7 @@ namespace App\Livewire\Studio\Loyalty\Voucher; use App\Models\Voucher; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithConfirmation; use App\Traits\WithToast; use Flux\Flux; @@ -12,7 +13,7 @@ #[Title('Voucher')] class Index extends Component { - use WithConfirmation, WithToast; + use WithConfirmation, WithSubscribeNotification, WithToast; public array $stats = []; diff --git a/app/Livewire/Studio/Manage/Article/Index.php b/app/Livewire/Studio/Manage/Article/Index.php index c2837e5..1dc8f8d 100644 --- a/app/Livewire/Studio/Manage/Article/Index.php +++ b/app/Livewire/Studio/Manage/Article/Index.php @@ -3,6 +3,7 @@ namespace App\Livewire\Studio\Manage\Article; use App\Models\Article; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithConfirmation; use App\Traits\WithToast; use Flux\Flux; @@ -12,7 +13,7 @@ #[Title('Artikel')] class Index extends Component { - use WithConfirmation, WithToast; + use WithConfirmation, WithSubscribeNotification, WithToast; public function delete(Article $article) { diff --git a/app/Livewire/Studio/Manage/Faq.php b/app/Livewire/Studio/Manage/Faq.php index d9ebbcf..edd96ab 100644 --- a/app/Livewire/Studio/Manage/Faq.php +++ b/app/Livewire/Studio/Manage/Faq.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\Studio\Manage\FaqForm; use App\Models\Faq as FaqModel; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -17,7 +18,7 @@ #[Title('FAQs')] class Faq extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public FaqForm $form; diff --git a/app/Livewire/Studio/Manage/Order/Index.php b/app/Livewire/Studio/Manage/Order/Index.php index 08de2ba..4cb225c 100644 --- a/app/Livewire/Studio/Manage/Order/Index.php +++ b/app/Livewire/Studio/Manage/Order/Index.php @@ -3,6 +3,7 @@ namespace App\Livewire\Studio\Manage\Order; use App\Models\Order; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\Order\WithUpdateStock; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -14,7 +15,7 @@ #[Title('Order')] class Index extends Component { - use WithCloseModal, WithConfirmation, WithToast, WithUpdateStock; + use WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdateStock; public function delete(Order $order) { diff --git a/app/Livewire/Studio/Manage/Purchase/Index.php b/app/Livewire/Studio/Manage/Purchase/Index.php index 324f87c..eb253ec 100644 --- a/app/Livewire/Studio/Manage/Purchase/Index.php +++ b/app/Livewire/Studio/Manage/Purchase/Index.php @@ -3,6 +3,7 @@ namespace App\Livewire\Studio\Manage\Purchase; use App\Models\Purchase; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\Purchase\WithUpdateStock; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -14,7 +15,7 @@ #[Title('Belanja')] class Index extends Component { - use WithCloseModal, WithConfirmation, WithToast, WithUpdateStock; + use WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdateStock; public function delete(Purchase $purchase) { diff --git a/app/Livewire/Studio/Master/Formula.php b/app/Livewire/Studio/Master/Formula.php index 2d9d764..aa979b4 100644 --- a/app/Livewire/Studio/Master/Formula.php +++ b/app/Livewire/Studio/Master/Formula.php @@ -6,6 +6,7 @@ use App\Models\Bottle; use App\Models\Formula as FormulaModel; use App\Models\PushNotification; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; @@ -21,7 +22,7 @@ #[Title('Rumus')] class Formula extends Component { - use WithAuthorization, WithCloseModal, WithConfirmation, WithToast, WithUpdatedData; + use WithAuthorization, WithCloseModal, WithConfirmation, WithSubscribeNotification, WithToast, WithUpdatedData; public FormulaForm $form; diff --git a/app/Livewire/Studio/Master/Outlet/Index.php b/app/Livewire/Studio/Master/Outlet/Index.php index df0edd5..c16b91c 100644 --- a/app/Livewire/Studio/Master/Outlet/Index.php +++ b/app/Livewire/Studio/Master/Outlet/Index.php @@ -4,6 +4,7 @@ use App\Enums\Day; use App\Models\Outlet; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithCloseModal; use App\Traits\WithConfirmation; use App\Traits\WithMediaHandler; @@ -16,7 +17,7 @@ #[Title('Outlet')] class Index extends Component { - use WithCloseModal, WithConfirmation, WithMediaHandler, WithToast; + use WithCloseModal, WithConfirmation, WithMediaHandler, WithSubscribeNotification, WithToast; public array $outlets = []; diff --git a/app/Livewire/Studio/Master/User/Index.php b/app/Livewire/Studio/Master/User/Index.php index 8965988..61580b6 100644 --- a/app/Livewire/Studio/Master/User/Index.php +++ b/app/Livewire/Studio/Master/User/Index.php @@ -4,6 +4,7 @@ use App\Models\Employee; use App\Models\User; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithConfirmation; use App\Traits\WithToast; use Flux\Flux; @@ -14,7 +15,7 @@ #[Title('Pegawai')] class Index extends Component { - use WithConfirmation, WithToast; + use WithConfirmation, WithSubscribeNotification, WithToast; public array $employees = []; diff --git a/app/Livewire/Studio/Setting/Account.php b/app/Livewire/Studio/Setting/Account.php index cda2fca..bbd24d9 100644 --- a/app/Livewire/Studio/Setting/Account.php +++ b/app/Livewire/Studio/Setting/Account.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\Studio\Setting\AccountForm; use App\Models\User; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithToast; use App\Traits\WithUpdatedData; @@ -13,7 +14,7 @@ #[Title('Akun')] class Account extends Component { - use WithAuthorization, WithToast, WithUpdatedData; + use WithAuthorization, WithSubscribeNotification, WithToast, WithUpdatedData; public AccountForm $form; diff --git a/app/Livewire/Studio/Setting/Application.php b/app/Livewire/Studio/Setting/Application.php index d6b4cb2..089a06d 100644 --- a/app/Livewire/Studio/Setting/Application.php +++ b/app/Livewire/Studio/Setting/Application.php @@ -10,6 +10,7 @@ use App\Settings\GeneralSettings; use App\Settings\SeoSettings; use App\Settings\SocialSettings; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithToast; use App\Traits\WithUpdatedData; @@ -19,7 +20,7 @@ #[Title('Aplikasi')] class Application extends Component { - use WithAuthorization, WithToast, WithUpdatedData; + use WithAuthorization, WithSubscribeNotification, WithToast, WithUpdatedData; public GeneralForm $generalForm; diff --git a/app/Livewire/Studio/Setting/Password.php b/app/Livewire/Studio/Setting/Password.php index 3fa47d7..4b21c17 100644 --- a/app/Livewire/Studio/Setting/Password.php +++ b/app/Livewire/Studio/Setting/Password.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\Studio\Setting\PasswordForm; use App\Models\User; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithToast; use App\Traits\WithUpdatedData; @@ -14,7 +15,7 @@ #[Title('Kata Sandi')] class Password extends Component { - use WithAuthorization, WithToast, WithUpdatedData; + use WithAuthorization, WithSubscribeNotification, WithToast, WithUpdatedData; public PasswordForm $form; diff --git a/app/Livewire/Studio/Setting/Profile.php b/app/Livewire/Studio/Setting/Profile.php index 2f84363..0bf9413 100644 --- a/app/Livewire/Studio/Setting/Profile.php +++ b/app/Livewire/Studio/Setting/Profile.php @@ -4,6 +4,7 @@ use App\Livewire\Forms\Studio\Setting\ProfileForm; use App\Models\Employee; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithToast; use App\Traits\WithUpdatedData; @@ -13,7 +14,7 @@ #[Title('Profil')] class Profile extends Component { - use WithAuthorization, WithToast, WithUpdatedData; + use WithAuthorization, WithSubscribeNotification, WithToast, WithUpdatedData; public ProfileForm $form; diff --git a/app/Livewire/Studio/Setting/Whatsapp.php b/app/Livewire/Studio/Setting/Whatsapp.php index 1412b18..1a1cd76 100644 --- a/app/Livewire/Studio/Setting/Whatsapp.php +++ b/app/Livewire/Studio/Setting/Whatsapp.php @@ -3,6 +3,7 @@ namespace App\Livewire\Studio\Setting; use App\Models\Whatsapp as WhatsappModel; +use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithToast; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; @@ -12,7 +13,7 @@ #[Title('Whatsapp')] class Whatsapp extends Component { - use WithToast; + use WithSubscribeNotification, WithToast; public array $whatsapp = []; diff --git a/app/Traits/Notification/WithSubscribeNotification.php b/app/Traits/Notification/WithSubscribeNotification.php new file mode 100644 index 0000000..60670a9 --- /dev/null +++ b/app/Traits/Notification/WithSubscribeNotification.php @@ -0,0 +1,34 @@ +id()) + ->whereJsonContains('subscriptions->keys->auth', $subscription['keys']['auth']) + ->first(); + + if ($isExist) { + return; + } + + $userId = auth()->id(); + + $encodedSubscription = json_encode($subscription); + PushNotification::updateOrCreate( + [ + 'user_id' => $userId, + 'subscriptions' => $encodedSubscription, + ], + ['subscriptions' => $encodedSubscription], + ); + } +}