- demo notifications generator

- frontend build
This commit is contained in:
Čarodej
2022-03-10 16:45:18 +01:00
parent 9ae2d54a5e
commit d02ca13197
22 changed files with 323 additions and 87 deletions

View File

@@ -1,7 +1,7 @@
<?php
return [
'version' => '2.0.0-Rc.3',
'version' => '2.0.0-Rc.4',
'is_demo' => env('APP_DEMO', false),

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/js/main.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,11 @@
/*!
* Pusher JavaScript Library v7.0.6
* https://pusher.com/
*
* Copyright 2020, Pusher
* Released under the MIT licence.
*/
/*!
* Vue.js v2.6.14
* (c) 2014-2021 Evan You

View File

@@ -1,75 +1,75 @@
{
"/js/main.js": "/js/main.js",
"/chunks/request.js": "/chunks/request.js?id=001f737452e0d25a",
"/chunks/request-upload.js": "/chunks/request-upload.js?id=f50a50d2aa741c81",
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=19a0784e59d768ec",
"/chunks/status-check.js": "/chunks/status-check.js?id=6bae83a7e38d3b1c",
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=0d001d4505d2f5e9",
"/chunks/database.js": "/chunks/database.js?id=d5695176ac8edfb9",
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=c58071cb9d14e595",
"/chunks/app-setup.js": "/chunks/app-setup.js?id=ad92e971daa0f86d",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=286b9872565b5e96",
"/chunks/shared.js": "/chunks/shared.js?id=584d7de11142b545",
"/chunks/shared/browser.js": "/chunks/shared/browser.js?id=4722af71c3c7bba6",
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=f60d6a95bc180df2",
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=92c75a6c77689046",
"/chunks/not-found.js": "/chunks/not-found.js?id=36763aa314e00327",
"/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=a3906226272982b1",
"/chunks/admin.js": "/chunks/admin.js?id=a9cc617d7342978a",
"/chunks/dashboard.js": "/chunks/dashboard.js?id=e7c6001687e641eb",
"/chunks/invoices.js": "/chunks/invoices.js?id=85fd4514d3d85a71",
"/chunks/subscriptions.js": "/chunks/subscriptions.js?id=9f970bdfc7583080",
"/chunks/pages.js": "/chunks/pages.js?id=38c76f5552161514",
"/chunks/page-edit.js": "/chunks/page-edit.js?id=dbdaf49f7c709ab9",
"/chunks/plans.js": "/chunks/plans.js?id=b5e1384c6e697927",
"/chunks/users.js": "/chunks/users.js?id=8ea54582b0ccd769",
"/chunks/user-create.js": "/chunks/user-create.js?id=c620606ec7eef9d7",
"/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=5515d5a19259eadf",
"/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=94d6ef85f6a58265",
"/chunks/user.js": "/chunks/user.js?id=879268a26e94d198",
"/chunks/user-detail.js": "/chunks/user-detail.js?id=4b171a846c808667",
"/chunks/user-storage.js": "/chunks/user-storage.js?id=835667dbe1fdf9b1",
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=cf39975217b4e268",
"/chunks/user-password.js": "/chunks/user-password.js?id=41e945a8e10bd4e4",
"/chunks/user-delete.js": "/chunks/user-delete.js?id=2184dc78049878ec",
"/chunks/plan.js": "/chunks/plan.js?id=37a04161ac1973ad",
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=5c4c760ab08a59c6",
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=b1d3ffbb79e69310",
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=4e9d13b048f1d8f0",
"/chunks/payments.js": "/chunks/payments.js?id=2a6dba57de536b0d",
"/chunks/payments/billings.js": "/chunks/payments/billings.js?id=e8f23f4fb51d2bb2",
"/chunks/payments/settings.js": "/chunks/payments/settings.js?id=4e3da3de7b57a89a",
"/chunks/app-settings.js": "/chunks/app-settings.js?id=ac94675bfea2ac48",
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=19980ab8fd75125c",
"/chunks/app-index.js": "/chunks/app-index.js?id=d1722a2c5d30b142",
"/chunks/app-environment.js": "/chunks/app-environment.js?id=7018c929bffb3a78",
"/chunks/app-others.js": "/chunks/app-others.js?id=ecbfebacc4f269cb",
"/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=11df2ce06e785892",
"/chunks/app-adsense.js": "/chunks/app-adsense.js?id=ec2fa21b02c99cb9",
"/chunks/app-server.js": "/chunks/app-server.js?id=8964b98aee4cca69",
"/chunks/app-language.js": "/chunks/app-language.js?id=2ae6285274dacd0d",
"/chunks/homepage.js": "/chunks/homepage.js?id=1b595dee57a8f161",
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=f8c67b2a376ff03e",
"/chunks/contact-us.js": "/chunks/contact-us.js?id=3c7d7bba5e7fc172",
"/chunks/successfully-email-verified.js": "/chunks/successfully-email-verified.js?id=261b02aed36069be",
"/chunks/successfully-email-send.js": "/chunks/successfully-email-send.js?id=fe054c1e34d7863b",
"/chunks/sign-in.js": "/chunks/sign-in.js?id=115555a1dd6fea58",
"/chunks/sign-up.js": "/chunks/sign-up.js?id=098d7f41b85066bf",
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=d6193ed0b07e7957",
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=d00212636148a14b",
"/chunks/settings.js": "/chunks/settings.js?id=71ee8010419a7b69",
"/chunks/profile.js": "/chunks/profile.js?id=1217f457145491ec",
"/chunks/settings-password.js": "/chunks/settings-password.js?id=b6704f4cbf14c67d",
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=90ba712f3728443b",
"/chunks/billing.js": "/chunks/billing.js?id=27957f2477fdd121",
"/chunks/platform.js": "/chunks/platform.js?id=4001e2c2fd8b27ce",
"/chunks/files.js": "/chunks/files.js?id=0d4e7a1330328eae",
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=2362f8fa4e3392e9",
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=25e9d29dd3c29338",
"/chunks/trash.js": "/chunks/trash.js?id=5bc0e04ada660232",
"/chunks/team-folders.js": "/chunks/team-folders.js?id=cf60b121819ca1a5",
"/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=bdbbd7e2225a6db9",
"/chunks/invitation.js": "/chunks/invitation.js?id=e3f3c2e3501c5a63",
"/chunks/request.js": "/chunks/request.js?id=03c31a1cd8f64e72",
"/chunks/request-upload.js": "/chunks/request-upload.js?id=784524b07a0017ab",
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=3c2fc454c3fce8d2",
"/chunks/status-check.js": "/chunks/status-check.js?id=1ce085bce8a9e959",
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=957577e6eb9bae5d",
"/chunks/database.js": "/chunks/database.js?id=cd8195615624bf64",
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=1153d1ccda1626d3",
"/chunks/app-setup.js": "/chunks/app-setup.js?id=8f3130f31073813a",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=3ca1c2c54a26a225",
"/chunks/shared.js": "/chunks/shared.js?id=01927c517d604fbb",
"/chunks/shared/browser.js": "/chunks/shared/browser.js?id=c530775c48308276",
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=c891200a0c11d7b4",
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=dc1a48627066c81d",
"/chunks/not-found.js": "/chunks/not-found.js?id=026c52609cff0249",
"/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=250d923cb7001cf2",
"/chunks/admin.js": "/chunks/admin.js?id=fce04ca9ae98919e",
"/chunks/dashboard.js": "/chunks/dashboard.js?id=94dfb7c678309b6e",
"/chunks/invoices.js": "/chunks/invoices.js?id=0817b6e71b0da736",
"/chunks/subscriptions.js": "/chunks/subscriptions.js?id=aa4ca6695a4c43f2",
"/chunks/pages.js": "/chunks/pages.js?id=b18e753a266e4d6e",
"/chunks/page-edit.js": "/chunks/page-edit.js?id=0122891b250ee8c7",
"/chunks/plans.js": "/chunks/plans.js?id=8950c28ea8d9273d",
"/chunks/users.js": "/chunks/users.js?id=16f7770d2b8a7043",
"/chunks/user-create.js": "/chunks/user-create.js?id=5b1f7e752521c02a",
"/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=44bbf94f2267d262",
"/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=cfb50d511c78ec04",
"/chunks/user.js": "/chunks/user.js?id=c12de27dc40aef36",
"/chunks/user-detail.js": "/chunks/user-detail.js?id=3c2bbf0a6ef97c1c",
"/chunks/user-storage.js": "/chunks/user-storage.js?id=e5c9e1b59264172a",
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=21154e4250e890b3",
"/chunks/user-password.js": "/chunks/user-password.js?id=d6d72d8a0f08cac4",
"/chunks/user-delete.js": "/chunks/user-delete.js?id=b95a20df2fd09190",
"/chunks/plan.js": "/chunks/plan.js?id=2444730c1a0a42fc",
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=f75a62dc82dfd06d",
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=889139d2e1679331",
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=14cb6e7146563c8c",
"/chunks/payments.js": "/chunks/payments.js?id=5ea275fedd8d638a",
"/chunks/payments/billings.js": "/chunks/payments/billings.js?id=a0757d9c2608d7ad",
"/chunks/payments/settings.js": "/chunks/payments/settings.js?id=09b5ed53c184aefc",
"/chunks/app-settings.js": "/chunks/app-settings.js?id=b0ca7cdad56e46fd",
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=47f92b72e275c2c8",
"/chunks/app-index.js": "/chunks/app-index.js?id=6255a58886c31bc6",
"/chunks/app-environment.js": "/chunks/app-environment.js?id=9d37862ac5c57c1e",
"/chunks/app-others.js": "/chunks/app-others.js?id=918ccb0a9edff971",
"/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=9e6099c710a1f774",
"/chunks/app-adsense.js": "/chunks/app-adsense.js?id=ce66e5cd4d33b77f",
"/chunks/app-server.js": "/chunks/app-server.js?id=000b75779c7b2df7",
"/chunks/app-language.js": "/chunks/app-language.js?id=9fea501b5651db74",
"/chunks/homepage.js": "/chunks/homepage.js?id=cc55de7273bd9699",
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=a20e623585f77df6",
"/chunks/contact-us.js": "/chunks/contact-us.js?id=5d02f74ec520ae00",
"/chunks/successfully-email-verified.js": "/chunks/successfully-email-verified.js?id=cadce663beaa7f88",
"/chunks/successfully-email-send.js": "/chunks/successfully-email-send.js?id=f14b81ce738531a5",
"/chunks/sign-in.js": "/chunks/sign-in.js?id=5d8ffa33a3b2ef19",
"/chunks/sign-up.js": "/chunks/sign-up.js?id=7ef0f23926cf5303",
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=283220c4946806d4",
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=59775b0f2612479a",
"/chunks/settings.js": "/chunks/settings.js?id=0bec2688576b2298",
"/chunks/profile.js": "/chunks/profile.js?id=ec621bd75eada0ee",
"/chunks/settings-password.js": "/chunks/settings-password.js?id=3e094b17498f56df",
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=cddf4c1f69a29992",
"/chunks/billing.js": "/chunks/billing.js?id=9a21ec44813c1ac7",
"/chunks/platform.js": "/chunks/platform.js?id=6ffadcbcf86dc5ab",
"/chunks/files.js": "/chunks/files.js?id=fd71f31714a64a8b",
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=8c21be0d599d5561",
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=4c02f15bed9ef243",
"/chunks/trash.js": "/chunks/trash.js?id=9c6d6189b5573a73",
"/chunks/team-folders.js": "/chunks/team-folders.js?id=7ab5bcc233cb5e1d",
"/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=8161d1d553faf2d6",
"/chunks/invitation.js": "/chunks/invitation.js?id=4884f1794da246a6",
"/css/tailwind.css": "/css/tailwind.css",
"/css/app.css": "/css/app.css"
}

View File

@@ -0,0 +1,224 @@
<?php
namespace App\Console\Commands;
use App\Users\Models\User;
use Illuminate\Support\Str;
use Domain\Files\Models\File;
use Illuminate\Console\Command;
use Domain\Folders\Models\Folder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Foundation\Testing\WithFaker;
use Domain\Teams\Models\TeamFolderInvitation;
use Intervention\Image\ImageManagerStatic as Image;
class DemoNotificationDataCommand extends Command
{
use WithFaker;
/**
* The name and signature of the console command.
*/
protected $signature = 'demo:notifications';
/**
* The console command description.
*/
protected $description = 'Set up demo notifications data';
/**
* Execute the console command.
*/
public function handle(): void
{
$this->info('Setting up notification demo data');
$this->generateTeamInvitationNotification();
$this->generateFileRequestFilledNotification();
$this->info('Everything is done, congratulations! 🥳🥳🥳');
}
private function generateTeamInvitationNotification()
{
$alice = User::whereEmail('alice@hi5ve.digital')
->first();
$howdy = User::whereEmail('howdy@hi5ve.digital')
->first();
$newV2Wallpaper = Folder::factory()
->create([
'user_id' => $alice->id,
'team_folder' => true,
'name' => 'New v2 Wallpaper',
]);
$invitation = TeamFolderInvitation::factory()
->create([
'email' => 'howdy@hi5ve.digital',
'parent_id' => $newV2Wallpaper->id,
'inviter_id' => $newV2Wallpaper->user_id,
'status' => 'pending',
'permission' => 'can-edit',
]);
DB::table('notifications')
->insert([
'id' => Str::uuid(),
'type' => 'Domain\UploadRequest\Notifications\UploadRequestFulfilledNotification',
'notifiable_type' => 'App\Users\Models\User',
'notifiable_id' => $howdy->id,
'data' => json_encode([
'type' => 'team-invitation',
'title' => 'New Team Invitation',
'description' => "Jane Doe invite you to join into Team Folder.",
'action' => [
'type' => 'invitation',
'params' => [
'id' => $invitation->id,
],
],
]),
'read_at' => now(),
'created_at' => now(),
'updated_at' => now(),
]);
}
private function generateFileRequestFilledNotification()
{
$howdy = User::whereEmail('howdy@hi5ve.digital')
->first();
$sharedFolder = Folder::where('name', 'Shared Folder')
->first();
$fileRequestFolder = Folder::factory()
->create([
'parent_id' => $sharedFolder->id,
'user_id' => $howdy->id,
'team_folder' => false,
'name' => 'Upload Request from 10. Mar. 2022',
]);
DB::table('notifications')
->insert([
'id' => Str::uuid(),
'type' => 'Domain\UploadRequest\Notifications\UploadRequestFulfilledNotification',
'notifiable_type' => 'App\Users\Models\User',
'notifiable_id' => $howdy->id,
'data' => json_encode([
'type' => 'file-request',
'title' => 'File Request Filled',
'description' => "Your file request for 'Shared Folder' folder was filled successfully.",
'action' => [
'type' => 'route',
'params' => [
'route' => 'Files',
'button' => 'Show Files',
'id' => $fileRequestFolder->id,
],
],
]),
'created_at' => now(),
'updated_at' => now(),
]);
// Get meme gallery
collect([
'demo/request/v2-wallpaper.jpg',
])
->each(function ($file) use ($howdy, $fileRequestFolder) {
$thumbnail = $this->generate_thumbnails($file, $howdy);
// Create file record
File::create([
'parent_id' => $fileRequestFolder->id,
'user_id' => $howdy->id,
'name' => $thumbnail['name'],
'basename' => $thumbnail['basename'],
'type' => 'image',
'author' => 'user',
'mimetype' => 'jpg',
'filesize' => rand(1000000, 4000000),
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
}
/**
* @param $avatar
* @return string
* @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
*/
private function generate_avatar($avatar): string
{
$image = \Illuminate\Support\Facades\File::get(storage_path("/demo/avatars/{$avatar}"));
// Create avatar name
$avatar_name = Str::uuid() . '.png';
// Create intervention image
$img = Image::make($image);
$this->info("Generating thumbnails for $avatar...");
// Generate avatar
collect(config('vuefilemanager.avatar_sizes'))
->each(function ($size) use ($img, $avatar_name) {
// fit thumbnail
$img->fit($size['size'], $size['size'])->stream();
// Store thumbnail to disk
Storage::put("avatars/{$size['name']}-{$avatar_name}", $img);
});
return $avatar_name;
}
/**
* @param $file
* @param $user
* @return string
* @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
*/
private function generate_thumbnails($file, $user): array
{
// Create image name
$file_name = Str::uuid() . '.jpg';
$this->info("Generating thumbnails for $file...");
// Generate avatar sizes
collect([
config('vuefilemanager.image_sizes.later'),
config('vuefilemanager.image_sizes.immediately'),
])->collapse()
->each(function ($size) use ($file_name, $user, $file) {
$image = \Illuminate\Support\Facades\File::get(storage_path($file));
// Create intervention image
$intervention = Image::make($image)->orientate();
// Create thumbnail only if image is larger than predefined image sizes
if ($intervention->getWidth() > $size['size']) {
// Generate thumbnail
$intervention->resize($size['size'], null, fn($constraint) => $constraint->aspectRatio())->stream();
// Store thumbnail to disk
Storage::put("files/$user->id/{$size['name']}-{$file_name}", $intervention);
}
});
// Store original to disk
Storage::putFileAs("files/$user->id", storage_path($file), $file_name, 'private');
return [
'basename' => $file_name,
'name' => head(explode('.', last(explode('/', $file)))),
];
}
}

View File

@@ -1,6 +1,7 @@
<?php
namespace App\Console;
use App\Console\Commands\DemoNotificationDataCommand;
use Illuminate\Console\Scheduling\Schedule;
use App\Console\Commands\SetupDevEnvironment;
use App\Console\Commands\SetupProdEnvironment;
@@ -20,6 +21,9 @@ class Kernel extends ConsoleKernel
* @var array
*/
protected $commands = [
// V2 demo updates
DemoNotificationDataCommand::class,
// Basic demo content generator
SetupDevEnvironment::class,
SetupProdEnvironment::class,

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 KiB