Added almost all features except language, ads, seo, pages

This commit is contained in:
Gitea
2025-04-27 06:28:15 +05:30
parent 89f6410578
commit 94eb01b1ab
43 changed files with 1842 additions and 188 deletions

View File

@@ -41,8 +41,7 @@ class Action extends Component
}
$this->email = ZEmail::createCustomEmail($this->username, $this->domain);
$this->dispatch('updateEmail');
$this->dispatch('closeModal');
return redirect()->route('mailbox');
}
public function random() {
@@ -50,10 +49,8 @@ class Action extends Component
return $this->showAlert('error', __('You have reached daily limit of maximum ') . json_decode(config('app.settings.configuration_settings'))->email_limit . __(' temp mail addresses.'));
}
$this->email = ZEmail::generateRandomEmail();
$this->dispatch('updateEmail');
$this->dispatch('closeModal');
//$this->redirect(route('mailbox'));
return redirect()->route('mailbox');
}
public function gmail() {
@@ -61,21 +58,12 @@ class Action extends Component
return $this->showAlert('error', __('You have reached daily limit of maximum ') . json_decode(config('app.settings.configuration_settings'))->email_limit . __(' temp mail addresses.'));
}
$this->email = ZEmail::generateRandomGmail();
$this->dispatch('updateEmail');
$this->dispatch('closeModal');
return redirect()->route('mailbox');
}
public function deleteEmail(): void
public function deleteEmail()
{
ZEmail::removeEmail($this->email);
// if (count($this->emails) <= 1 && json_decode(config('app.settings.configuration_settings'))->after_last_email_delete == 'redirect_to_homepage') {
// return redirect()->route('home');
// }
$this->email = ZEmail::getEmail(true);
$this->emails = ZEmail::getEmails();
$this->dispatch('updateEmail');
$this->dispatch('closeModal');
return redirect()->route('delete', ['email' => $this->email]);
}
private function showAlert($type, $message): void

View File

@@ -7,6 +7,12 @@ use Livewire\Component;
class Mail extends Component
{
public $message;
public $messageId;
public function setMessageId($messageId): void
{
$this->dispatch('setMessageId', ['messageId' => $messageId]);
}
public function render()
{

View File

@@ -0,0 +1,16 @@
<?php
namespace App\Livewire\Frontend\Components;
use Livewire\Component;
class Message extends Component
{
public $message;
public $messageId;
public function render()
{
return view('livewire.frontend.components.message');
}
}

View File

@@ -32,11 +32,9 @@ class Email extends Component
}
}
public function switchEmail($email): void
public function switchEmail($email)
{
ZEmail::setEmail($email);
$this->email = $email;
$this->dispatch('updateEmail');
return redirect()->route('switch', ['email' => $email]);
}
public function syncEmail(): void

View File

@@ -2,13 +2,17 @@
namespace App\Livewire\Frontend;
use App\ColorPicker;
use App\Models\Message;
use App\Models\ZEmail;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Livewire\Component;
class Mailbox extends Component
{
use ColorPicker;
public $messages = [];
public $deleted = [];
public $error = '';
@@ -16,25 +20,32 @@ class Mailbox extends Component
public $initial = false;
public $type;
public $overflow = false;
public $messageId;
protected $listeners = ['fetchMessages' => 'fetch', 'syncMailbox' => 'syncEmail'];
protected $listeners = ['fetchMessages' => 'fetch', 'syncMailbox' => 'syncEmail', 'setMessageId' => 'setMessageId'];
public function mount(): void
public function mount()
{
$this->email = ZEmail::getEmail();
$this->initial = false;
if (!ZEmail::getEmail()) {
return redirect()->route('home');
}
}
public function syncEmail($email): void
{
$this->email = $email;
$this->initial = false;
$this->messages = [];
}
public function fetch(): void
{
try {
$count = count($this->messages);
if ($count > 0) {
$this->messages = [];
}
$responses = [];
if (config('app.beta_feature') || !json_decode(config('app.settings.imap_settings'))->cc_check) {
$responses = [
@@ -51,21 +62,6 @@ class Mailbox extends Component
];
}
// $responses = [
// 'to' => ZEmail::getMessages($this->email, 'to', $this->deleted),
// ];
// $imapSettings = json_decode(config('app.settings.imap_settings'));
// $betaFeature = config('app.beta_feature');
//
// if ($betaFeature || empty($imapSettings?->cc_check)) {
// $responses['cc'] = [
// 'data' => [],
// 'notifications' => []
// ];
// } else {
// $responses['cc'] = ZEmail::getMessages($this->email, 'cc', $this->deleted);
// }
$this->deleted = [];
$this->messages = array_merge($responses['to']['data'], $responses['cc']['data']);
$notifications = array_merge($responses['to']['notifications'], $responses['cc']['notifications']);
@@ -90,22 +86,33 @@ class Mailbox extends Component
}
}
$this->dispatch('stopLoader');
$this->dispatch('loadDownload');
$this->initial = true;
}
public function delete($messageId) {
if (config('app.beta_feature')) {
Message::find($messageId)->delete();
}
$this->deleted[] = $messageId;
foreach ($this->messages as $key => $message) {
if ($message['id'] == $messageId) {
$directory = './tmp/attachments/' . $messageId;
$this->rrmdir($directory);
unset($this->messages[$key]);
try {
if (config('app.beta_feature')) {
Message::find($messageId)->delete();
}
if (config('app.fetch_from_db')) {
\App\Models\Email::where(['message_id' => $messageId])->delete();
}
$this->deleted[] = $messageId;
foreach ($this->messages as $key => $message) {
if ($message['id'] == $messageId) {
$directory = public_path('tmp/attachments/') . $messageId;
$this->rrmdir($directory);
unset($this->messages[$key]);
}
}
} catch (
\Exception $exception
) {
Log::error($exception->getMessage());
}
}
public function render()

View File

@@ -2,10 +2,21 @@
namespace App\Livewire;
use App\Models\ZEmail;
use Livewire\Component;
class Home extends Component
{
protected $listeners = ['fetchMessages' => 'checkIfAnyMessage'];
public function checkIfAnyMessage()
{
$email = ZEmail::getEmail();
$messages = ZEmail::getMessages($email);
if (count($messages['data']) > 0) {
return redirect()->route('mailbox');
}
}
public function render()
{
return view('livewire.home');