feat: send internal notification to discord
This commit is contained in:
parent
d15e1bcc7d
commit
3ab38e69fc
@ -29,6 +29,7 @@ public function handle(): void
|
||||
try {
|
||||
$this->cleanup_waitlist();
|
||||
} catch (\Exception $e) {
|
||||
send_internal_notification('CleanupInstanceStuffsJob failed with error: ' . $e->getMessage());
|
||||
ray($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ public function handle()
|
||||
->html((string) $mail->render())
|
||||
);
|
||||
} catch (\Throwable $th) {
|
||||
send_internal_notification('SendConfirmationForWaitlistJob failed with error: ' . $th->getMessage());
|
||||
ray($th->getMessage());
|
||||
throw $th;
|
||||
}
|
||||
|
27
app/Notifications/Internal/GeneralNotification.php
Normal file
27
app/Notifications/Internal/GeneralNotification.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Notifications\Internal;
|
||||
|
||||
use App\Notifications\Channels\DiscordChannel;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Notifications\Notification;
|
||||
|
||||
class GeneralNotification extends Notification implements ShouldQueue
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
public function __construct(public string $message)
|
||||
{}
|
||||
|
||||
public function via(object $notifiable): array
|
||||
{
|
||||
$channels[] = DiscordChannel::class;
|
||||
return $channels;
|
||||
}
|
||||
|
||||
public function toDiscord(): string
|
||||
{
|
||||
return $this->message;
|
||||
}
|
||||
}
|
@ -1,6 +1,9 @@
|
||||
<?php
|
||||
|
||||
use App\Models\InstanceSettings;
|
||||
use App\Models\Team;
|
||||
use App\Notifications\Internal\GeneralNotification;
|
||||
use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
@ -8,7 +11,6 @@
|
||||
use Nubs\RandomNameGenerator\All;
|
||||
use Poliander\Cron\CronExpression;
|
||||
use Visus\Cuid2\Cuid2;
|
||||
use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException;
|
||||
|
||||
function application_configuration_dir(): string
|
||||
{
|
||||
@ -35,7 +37,7 @@ function is_instance_admin()
|
||||
return auth()->user()?->isInstanceAdmin();
|
||||
}
|
||||
|
||||
function general_error_handler(Throwable|null $err = null, $that = null, $isJson = false, $customErrorMessage = null): mixed
|
||||
function general_error_handler(Throwable | null $err = null, $that = null, $isJson = false, $customErrorMessage = null): mixed
|
||||
{
|
||||
try {
|
||||
ray('ERROR OCCURRED: ' . $err->getMessage());
|
||||
@ -47,9 +49,9 @@ function general_error_handler(Throwable|null $err = null, $that = null, $isJson
|
||||
} else {
|
||||
throw new Exception($customErrorMessage ?? $err->errorInfo[2]);
|
||||
}
|
||||
} elseif($err instanceof TooManyRequestsException){
|
||||
} elseif ($err instanceof TooManyRequestsException) {
|
||||
throw new Exception($customErrorMessage ?? "Too many requests. Please try again in {$err->secondsUntilAvailable} seconds.");
|
||||
}else {
|
||||
} else {
|
||||
throw new Exception($customErrorMessage ?? $err->getMessage());
|
||||
}
|
||||
} catch (Throwable $error) {
|
||||
@ -104,7 +106,7 @@ function is_transactional_emails_active(): bool
|
||||
return data_get(InstanceSettings::get(), 'smtp_enabled');
|
||||
}
|
||||
|
||||
function set_transanctional_email_settings(InstanceSettings|null $settings = null): void
|
||||
function set_transanctional_email_settings(InstanceSettings | null $settings = null): void
|
||||
{
|
||||
if (!$settings) {
|
||||
$settings = InstanceSettings::get();
|
||||
@ -194,3 +196,12 @@ function validate_cron_expression($expression_to_validate): bool
|
||||
}
|
||||
return $isValid;
|
||||
}
|
||||
function send_internal_notification(string $message): void
|
||||
{
|
||||
try {
|
||||
$team = Team::find(0);
|
||||
$team->notify(new GeneralNotification('👀 Internal notifications: ' . $message));
|
||||
} catch (\Throwable $th) {
|
||||
ray($th->getMessage());
|
||||
}
|
||||
}
|
||||
|
@ -174,7 +174,6 @@
|
||||
return general_error_handler(err: $e);
|
||||
}
|
||||
});
|
||||
|
||||
Route::get('/waitlist/confirm', function () {
|
||||
$email = request()->get('email');
|
||||
$confirmation_code = request()->get('confirmation_code');
|
||||
@ -184,6 +183,7 @@
|
||||
if ($found && !$found->verified && $found->created_at > now()->subMinutes(config('constants.waitlist.confirmation_valid_for_minutes'))) {
|
||||
$found->verified = true;
|
||||
$found->save();
|
||||
send_internal_notification('Waitlist confirmed: ' . $email);
|
||||
return 'Thank you for confirming your email address. We will notify you when you are next in line.';
|
||||
}
|
||||
return redirect()->route('dashboard');
|
||||
@ -199,6 +199,7 @@
|
||||
$found = Waitlist::where('uuid', $confirmation_code)->where('email', $email)->first();
|
||||
if ($found && !$found->verified) {
|
||||
$found->delete();
|
||||
send_internal_notification('Waitlist cancelled: ' . $email);
|
||||
return 'Your email address has been removed from the waitlist.';
|
||||
}
|
||||
return redirect()->route('dashboard');
|
||||
@ -250,6 +251,7 @@
|
||||
case 'subscription_updated':
|
||||
case 'subscription_resumed':
|
||||
case 'subscription_unpaused':
|
||||
send_internal_notification('Subscription created or updated: ' . $subscription_id . ' for team ' . $team_id . ' with status ' . $status);
|
||||
$subscription = Subscription::updateOrCreate([
|
||||
'team_id' => $team_id,
|
||||
], [
|
||||
@ -271,6 +273,7 @@
|
||||
case 'subscription_expired':
|
||||
$subscription = Subscription::where('team_id', $team_id)->where('lemon_order_id', $order_id)->first();
|
||||
if ($subscription) {
|
||||
send_internal_notification('Subscription cancelled or paused: ' . $subscription_id . ' for team ' . $team_id . ' with status ' . $status);
|
||||
$subscription->update([
|
||||
'lemon_status' => $status,
|
||||
'lemon_trial_ends_at' => $trial_ends_at,
|
||||
@ -281,11 +284,13 @@
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$webhook->update([
|
||||
'status' => 'success',
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
ray($e->getMessage());
|
||||
send_internal_notification('Subscription webhook failed: ' . $e->getMessage());
|
||||
$webhook->update([
|
||||
'status' => 'failed',
|
||||
'failure_reason' => $e->getMessage(),
|
||||
|
Loading…
Reference in New Issue
Block a user