diff --git a/config/kustomer.php b/config/kustomer.php index b5534e2..8c8dd99 100644 --- a/config/kustomer.php +++ b/config/kustomer.php @@ -101,4 +101,43 @@ */ 'screenshot' => false, + + /* + |-------------------------------------------------------------------------- + | Screenshot Storage Disk + |-------------------------------------------------------------------------- + | + | Define which storage disk should be used to store the feedback screenshots. + | This should be one of the disk names from your config/filesystems.php. + | If not specified, the default disk will be used. + | + */ + + 'screenshot_disk' => null, + + /* + |-------------------------------------------------------------------------- + | Feedback Model + |-------------------------------------------------------------------------- + | + | This is the model class that will be used for feedback records. You can + | override this to use your own model class if you need to extend or + | modify the base feedback functionality. + | + */ + + 'model' => \Mydnic\Kustomer\Models\Feedback::class, + + /* + |-------------------------------------------------------------------------- + | Feedback Controller + |-------------------------------------------------------------------------- + | + | This is the controller class that will handle feedback submissions. + | You can override this to use your own controller if you need to + | modify the base feedback handling functionality. + | + */ + + 'controller' => \Mydnic\Kustomer\Http\Controllers\FeedbackController::class, ]; diff --git a/routes/api.php b/routes/api.php index b7d2da0..f8716ff 100644 --- a/routes/api.php +++ b/routes/api.php @@ -2,4 +2,5 @@ use Illuminate\Support\Facades\Route; -Route::post('feedback', 'FeedbackController@store')->name('feedback.store'); +Route::post('/feedback', [config('kustomer.controller'), 'store']) + ->name('feedback.store'); diff --git a/src/Events/NewFeedback.php b/src/Events/NewFeedback.php index 1ea2b58..a9ffab1 100644 --- a/src/Events/NewFeedback.php +++ b/src/Events/NewFeedback.php @@ -9,7 +9,6 @@ use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; -use Mydnic\Kustomer\Feedback; class NewFeedback implements ShouldBroadcast { @@ -22,7 +21,7 @@ class NewFeedback implements ShouldBroadcast * * @return void */ - public function __construct(Feedback $feedback) + public function __construct($feedback) { $this->feedback = $feedback; } diff --git a/src/Http/Controllers/FeedbackController.php b/src/Http/Controllers/FeedbackController.php index 6202089..ddf77b2 100644 --- a/src/Http/Controllers/FeedbackController.php +++ b/src/Http/Controllers/FeedbackController.php @@ -4,7 +4,6 @@ use Illuminate\Support\Str; use Illuminate\Http\Request; -use Mydnic\Kustomer\Feedback; use Illuminate\Validation\Rule; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\Storage; @@ -38,7 +37,9 @@ protected function validates(Request $request) protected function storeFeedback($data, Request $request) { - $feedback = new Feedback; + $feedbackModel = config('kustomer.model'); + $feedback = new $feedbackModel; + $feedback->type = $data['type']; $feedback->message = $data['message']; $feedback->user_info = $this->gatherUserInfo($request); @@ -59,7 +60,7 @@ protected function gatherUserInfo(Request $request) ]; } - protected function dispatchEvent(Feedback $feedback) + protected function dispatchEvent($feedback) { event(new NewFeedback($feedback)); } @@ -71,7 +72,11 @@ protected function saveScreenshot($base64Screenshot = null) $image = str_replace('data:image/png;base64,', '', $image); $image = str_replace(' ', '+', $image); $imageName = microtime(true) . Str::random(4) . '.' . 'png'; - if (Storage::put('screenshots/' . $imageName, base64_decode($image))) { + + $disk = config('kustomer.screenshot_disk'); + $storage = $disk ? Storage::disk($disk) : Storage::disk(); + + if ($storage->put('screenshots/' . $imageName, base64_decode($image))) { return 'screenshots/' . $imageName; } }