diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 3fd18534..4c9226bf 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -12,7 +12,7 @@ "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~f312a84e.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~f312a84e.js?id=004c11df35e63517608d", "/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=0e511f0ceaac7257bf25", "/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=f3bc2f8030f1dd06472a", - "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=8a92b1d0d66e0dc8fb71", + "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=99b4e9845e03f9d2e8ed", "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=5f8d3e698c1fd5b9b5a5", "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js?id=055d17c4463d3ef30218", "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js?id=fd6936cca8f3b8b4de9a", @@ -204,8 +204,8 @@ "/js/main.eed73e10bc48ddd70f77.hot-update.js": "/js/main.eed73e10bc48ddd70f77.hot-update.js", "/js/main.06f03f5764345d4a21ae.hot-update.js": "/js/main.06f03f5764345d4a21ae.hot-update.js", "/chunks/admin~chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/my-shared-item~0919ded8.js": "/chunks/admin~chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/my-shared-item~0919ded8.js?id=e08424c8b2e29269c282", - "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~6dc4969c.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~6dc4969c.js?id=52a5d33ca4b4749dd679", - "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.js?id=5e36dcf07975aa1955fb", + "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~6dc4969c.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~6dc4969c.js?id=4746e578131ec5449693", + "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.js?id=fc74f2c33b38bd414bca", "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~860e9aef.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~860e9aef.js?id=285952e7d81a73c1b366", "/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/my-shared-items~chunks/page~9b5759a9.js": "/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/my-shared-items~chunks/page~9b5759a9.js?id=eb26643e072aa1f2b4b5", "/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared/files~chunks/trash.js": "/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared/files~chunks/trash.js?id=854ed8a5f3a883f6d4c5", @@ -275,5 +275,15 @@ "/js/main.ab10910fe063d675001a.hot-update.js": "/js/main.ab10910fe063d675001a.hot-update.js", "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared/files~chunks/trash.67dbc41f14111befc449.hot-update.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared/files~chunks/trash.67dbc41f14111befc449.hot-update.js", "/js/main.742b35a7325a1164ece6.hot-update.js": "/js/main.742b35a7325a1164ece6.hot-update.js", - "/js/main.c17fbc0fc4ce44a45291.hot-update.js": "/js/main.c17fbc0fc4ce44a45291.hot-update.js" + "/js/main.c17fbc0fc4ce44a45291.hot-update.js": "/js/main.c17fbc0fc4ce44a45291.hot-update.js", + "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.7ecca405e896e99c7399.hot-update.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.7ecca405e896e99c7399.hot-update.js", + "/js/main.aacf02735be6683380cb.hot-update.js": "/js/main.aacf02735be6683380cb.hot-update.js", + "/js/main.7aadf25c13d1dd531752.hot-update.js": "/js/main.7aadf25c13d1dd531752.hot-update.js", + "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~6dc4969c.c0c029c2523ca0cf38fb.hot-update.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~6dc4969c.c0c029c2523ca0cf38fb.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.027c39918be3318827b9.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.027c39918be3318827b9.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.64becd27fa67df342538.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.64becd27fa67df342538.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.0712655bd72af19a44db.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.0712655bd72af19a44db.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.0d0a3ec768afdd56172b.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.0d0a3ec768afdd56172b.hot-update.js", + "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.79e795629c63b8c2bd6f.hot-update.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.79e795629c63b8c2bd6f.hot-update.js", + "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.805e066dbc352fc4f11f.hot-update.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~8d246649.805e066dbc352fc4f11f.hot-update.js" } diff --git a/resources/js/components/FilesView/FileItemList.vue b/resources/js/components/FilesView/FileItemList.vue index 8922c22e..983d6aa3 100644 --- a/resources/js/components/FilesView/FileItemList.vue +++ b/resources/js/components/FilesView/FileItemList.vue @@ -161,7 +161,7 @@ export default { events.$emit('mobile-context-menu:show', this.item) }, dragEnter() { - if (this.item.type !== 'folder') return + if (this.item.data.type !== 'folder') return this.area = true }, @@ -226,7 +226,7 @@ export default { this.$router.push({name: 'Public', params: {token: this.$route.params.token, id: this.item.data.id}}) } else if (route === 'Trash') { this.$router.push({name: 'Trash', params: {id: this.item.data.id}}) - } else if (route === 'Files') { + } else if (['Files', 'MySharedItems'].includes(route)) { this.$router.push({name: 'Files', params: {id: this.item.data.id}}) } else if (route === 'TeamFolders') { this.$router.push({name: 'TeamFolders', params: {id: this.item.data.id}}) @@ -269,7 +269,7 @@ export default { this.$router.push({name: 'Public', params: {token: this.$route.params.token, id: this.item.data.id}}) } else if (route === 'Trash') { this.$router.push({name: 'Trash', params: {id: this.item.data.id}}) - } else if (route === 'Files') { + } else if (['Files', 'MySharedItems'].includes(route)) { this.$router.push({name: 'Files', params: {id: this.item.data.id}}) } else if (route === 'TeamFolders') { this.$router.push({name: 'TeamFolders', params: {id: this.item.data.id}}) diff --git a/resources/js/components/FilesView/FolderIcon.vue b/resources/js/components/FilesView/FolderIcon.vue index df255bf3..054eb329 100644 --- a/resources/js/components/FilesView/FolderIcon.vue +++ b/resources/js/components/FilesView/FolderIcon.vue @@ -29,7 +29,7 @@ }, computed: { isDeleted() { - return this.item.data.attributes.deleted_at ? true : false + return this.item.data.attributes.deleted_at }, emoji() { // Return emoji if is changed from rename popup diff --git a/resources/js/components/Spotlight/Spotlight.vue b/resources/js/components/Spotlight/Spotlight.vue index 55c79978..0edfbb02 100644 --- a/resources/js/components/Spotlight/Spotlight.vue +++ b/resources/js/components/Spotlight/Spotlight.vue @@ -22,7 +22,7 @@
-
+
{ - this.results = response.data + + let files = response.data.files.data + let folders = response.data.folders.data + + console.log(files); + + this.results = folders.concat(files) }) .catch(() => this.$isSomethingWrong()) .finally(() => this.isLoading = false) diff --git a/resources/js/store/modules/fileBrowser.js b/resources/js/store/modules/fileBrowser.js index ef7d5806..c33993e6 100644 --- a/resources/js/store/modules/fileBrowser.js +++ b/resources/js/store/modules/fileBrowser.js @@ -81,7 +81,7 @@ const actions = { axios .get(getters.api + '/browse/latest') .then(response => { - commit('LOADING_STATE', {loading: false, data: response.data}) + commit('LOADING_STATE', {loading: false, data: response.data.files.data}) commit('SET_CURRENT_FOLDER', undefined) events.$emit('scrollTop') @@ -94,7 +94,11 @@ const actions = { axios .get(getters.api + '/browse/share' + getters.sorting.URI) .then(response => { - commit('LOADING_STATE', {loading: false, data: response.data}) + + let folders = response.data.folders.data + let files = response.data.files.data + + commit('LOADING_STATE', {loading: false, data: folders.concat(files)}) commit('SET_CURRENT_FOLDER', undefined) events.$emit('scrollTop') @@ -107,7 +111,11 @@ const actions = { axios .get(`${getters.api}/browse/trash/${id}/${getters.sorting.URI}`) .then(response => { - commit('LOADING_STATE', {loading: false, data: response.data.content}) + + let folders = response.data.folders.data + let files = response.data.files.data + + commit('LOADING_STATE', {loading: false, data: folders.concat(files)}) commit('SET_CURRENT_FOLDER', response.data.folder) events.$emit('scrollTop') diff --git a/src/App/Users/Models/User.php b/src/App/Users/Models/User.php index 688378bd..38d7f0d0 100644 --- a/src/App/Users/Models/User.php +++ b/src/App/Users/Models/User.php @@ -1,4 +1,5 @@ $this->usedCapacity, 'used_formatted' => Metric::bytes($this->usedCapacity)->format(), @@ -103,7 +104,7 @@ class User extends Authenticatable implements MustVerifyEmail } return [ - 'used' => (float) get_storage_fill_percentage($this->usedCapacity, $this->settings->storage_capacity), + 'used' => (float)get_storage_fill_percentage($this->usedCapacity, $this->settings->storage_capacity), 'used_formatted' => get_storage_fill_percentage($this->usedCapacity, $this->settings->storage_capacity) . '%', 'capacity' => $this->settings->storage_capacity, 'capacity_formatted' => format_gigabytes($this->settings->storage_capacity), @@ -116,7 +117,7 @@ class User extends Authenticatable implements MustVerifyEmail public function getUsedCapacityAttribute(): int { return $this->filesWithTrashed - ->map(fn ($item) => $item->getRawOriginal())->sum('filesize'); + ->map(fn($item) => $item->getRawOriginal())->sum('filesize'); } /** @@ -165,7 +166,10 @@ class User extends Authenticatable implements MustVerifyEmail public function latestUploads(): HasMany { return $this->hasMany(File::class) - ->with(['parent:id,name']) + ->with([ + 'parent:id,name', + 'shared:token,id,item_id,permission,is_protected,expire_in', + ]) ->take(40); } diff --git a/src/Domain/Browsing/Controllers/BrowseLatestFilesController.php b/src/Domain/Browsing/Controllers/BrowseLatestFilesController.php index ca59f845..eca20d3d 100644 --- a/src/Domain/Browsing/Controllers/BrowseLatestFilesController.php +++ b/src/Domain/Browsing/Controllers/BrowseLatestFilesController.php @@ -2,12 +2,12 @@ namespace Domain\Browsing\Controllers; use App\Users\Models\User; -use Illuminate\Support\Collection; +use Domain\Files\Resources\FilesCollection; use Illuminate\Support\Facades\Auth; class BrowseLatestFilesController { - public function __invoke(): Collection + public function __invoke(): array { $user = User::with([ 'latestUploads' => fn ($query) => $query->sortable(['created_at' => 'desc']), @@ -15,6 +15,9 @@ class BrowseLatestFilesController ->where('id', Auth::id()) ->first(); - return $user->latestUploads; + return [ + 'files' => new FilesCollection($user->latestUploads), + 'root' => null, + ]; } } diff --git a/src/Domain/Browsing/Controllers/BrowseSharedItemsController.php b/src/Domain/Browsing/Controllers/BrowseSharedItemsController.php index 3339a2ad..20f4181e 100644 --- a/src/Domain/Browsing/Controllers/BrowseSharedItemsController.php +++ b/src/Domain/Browsing/Controllers/BrowseSharedItemsController.php @@ -2,14 +2,15 @@ namespace Domain\Browsing\Controllers; use Domain\Files\Models\File; +use Domain\Files\Resources\FilesCollection; +use Domain\Folders\Resources\FolderCollection; use Domain\Sharing\Models\Share; use Domain\Folders\Models\Folder; -use Illuminate\Support\Collection; use Illuminate\Support\Facades\Auth; class BrowseSharedItemsController { - public function __invoke(): Collection + public function __invoke(): array { $user_id = Auth::id(); @@ -36,7 +37,10 @@ class BrowseSharedItemsController ->get(); // Collect folders and files to single array - return collect([$folders, $files]) - ->collapse(); + return [ + 'folders' => new FolderCollection($folders), + 'files' => new FilesCollection($files), + 'root' => null, + ]; } } diff --git a/src/Domain/Browsing/Controllers/BrowseTrashContentController.php b/src/Domain/Browsing/Controllers/BrowseTrashContentController.php index 4d8d6073..4f5fe6e2 100644 --- a/src/Domain/Browsing/Controllers/BrowseTrashContentController.php +++ b/src/Domain/Browsing/Controllers/BrowseTrashContentController.php @@ -2,7 +2,10 @@ namespace Domain\Browsing\Controllers; use Domain\Files\Models\File; +use Domain\Files\Resources\FilesCollection; use Domain\Folders\Models\Folder; +use Domain\Folders\Resources\FolderCollection; +use Illuminate\Http\Resources\Json\ResourceCollection; use Illuminate\Support\Facades\Auth; class BrowseTrashContentController @@ -60,8 +63,9 @@ class BrowseTrashContentController // Collect folders and files to single array return [ - 'content' => collect([$folders, $files_trashed])->collapse(), - 'folder' => $requestedFolder, + 'folders' => new FolderCollection($folders), + 'files' => new FilesCollection($files_trashed), + 'root' => $requestedFolder, ]; } } diff --git a/src/Domain/Browsing/Controllers/SearchFilesAndFoldersController.php b/src/Domain/Browsing/Controllers/SearchFilesAndFoldersController.php index 0fd8c984..f145f280 100644 --- a/src/Domain/Browsing/Controllers/SearchFilesAndFoldersController.php +++ b/src/Domain/Browsing/Controllers/SearchFilesAndFoldersController.php @@ -2,8 +2,9 @@ namespace Domain\Browsing\Controllers; use Domain\Files\Models\File; +use Domain\Files\Resources\FilesCollection; use Domain\Folders\Models\Folder; -use Illuminate\Support\Collection; +use Domain\Folders\Resources\FolderCollection; use Illuminate\Support\Facades\Auth; use Domain\Items\Requests\SearchRequest; @@ -11,7 +12,7 @@ class SearchFilesAndFoldersController { public function __invoke( SearchRequest $request - ): Collection { + ): array { $user_id = Auth::id(); $query = remove_accents( @@ -19,17 +20,18 @@ class SearchFilesAndFoldersController ); // Search files id db - $searched_files = File::search($query) + $files = File::search($query) ->where('user_id', $user_id) ->get(); - $searched_folders = Folder::search($query) + $folders = Folder::search($query) ->where('user_id', $user_id) ->get(); // Collect folders and files to single array - return collect([$searched_folders, $searched_files]) - ->collapse() - ->take(10); + return [ + 'folders' => new FolderCollection($folders), + 'files' => new FilesCollection($files), + ]; } } diff --git a/src/Domain/Browsing/Controllers/VisitorBrowseFolderController.php b/src/Domain/Browsing/Controllers/VisitorBrowseFolderController.php index 51d305ac..8696ba65 100644 --- a/src/Domain/Browsing/Controllers/VisitorBrowseFolderController.php +++ b/src/Domain/Browsing/Controllers/VisitorBrowseFolderController.php @@ -2,10 +2,13 @@ namespace Domain\Browsing\Controllers; use Domain\Files\Models\File; +use Domain\Files\Resources\FilesCollection; +use Domain\Folders\Resources\FolderCollection; use Domain\Sharing\Models\Share; use Domain\Folders\Models\Folder; use Domain\Sharing\Actions\ProtectShareRecordAction; use Domain\Sharing\Actions\VerifyAccessToItemAction; +use Illuminate\Http\Resources\Json\ResourceCollection; /** * Browse shared folder @@ -44,10 +47,10 @@ class VisitorBrowseFolderController // Set thumbnail links for public files $files->map(fn ($file) => $file->setPublicUrl($shared->token)); - // Collect folders and files to single array return [ - 'content' => collect([$folders, $files])->collapse(), - 'folder' => $requestedFolder, + 'folders' => new FolderCollection($folders), + 'files' => new FilesCollection($files), + 'root' => $requestedFolder, ]; } } diff --git a/src/Domain/Browsing/Controllers/VisitorSearchFilesAndFoldersController.php b/src/Domain/Browsing/Controllers/VisitorSearchFilesAndFoldersController.php index 7f04c9f3..5da0a457 100644 --- a/src/Domain/Browsing/Controllers/VisitorSearchFilesAndFoldersController.php +++ b/src/Domain/Browsing/Controllers/VisitorSearchFilesAndFoldersController.php @@ -1,12 +1,13 @@ protectShareRecord)($shared); @@ -64,8 +65,9 @@ class VisitorSearchFilesAndFoldersController extends Controller }); // Collect folders and files to single array - return collect([$folders, $files]) - ->collapse() - ->take(10); + return [ + 'folders' => new FolderCollection($folders), + 'files' => new FilesCollection($files), + ]; } } diff --git a/src/Domain/Files/Models/File.php b/src/Domain/Files/Models/File.php index 082ab434..e3f28911 100644 --- a/src/Domain/Files/Models/File.php +++ b/src/Domain/Files/Models/File.php @@ -84,32 +84,6 @@ class File extends Model $this->public_access = $token; } - /** - * Format created at date - */ - public function getCreatedAtAttribute(): string - { - return format_date( - set_time_by_user_timezone($this->attributes['created_at']), - __t('time') - ); - } - - /** - * Format deleted at date reformat - */ - public function getDeletedAtAttribute(): string | null - { - if (! $this->attributes['deleted_at']) { - return null; - } - - return format_date( - set_time_by_user_timezone($this->attributes['deleted_at']), - __t('time') - ); - } - /** * Format fileSize */ diff --git a/src/Domain/Files/Resources/FileResource.php b/src/Domain/Files/Resources/FileResource.php index fe8d7a0f..b69999bb 100644 --- a/src/Domain/Files/Resources/FileResource.php +++ b/src/Domain/Files/Resources/FileResource.php @@ -29,12 +29,15 @@ class FileResource extends JsonResource 'thumbnail' => $this->thumbnail, 'metadata' => $this->metadata, 'folder_id' => $this->folder_id, - 'updated_at' => format_date( + 'updated_at' => $this->updated_at, + 'created_at' => $this->created_at, + 'deleted_at' => $this->deleted_at, + /*'updated_at' => format_date( set_time_by_user_timezone($this->updated_at), __t('time') ), 'created_at' => format_date( set_time_by_user_timezone($this->created_at), __t('time') - ), + ),*/ ], 'relationships' => [ $this->mergeWhen($this->shared, fn() => [ diff --git a/src/Domain/Folders/Models/Folder.php b/src/Domain/Folders/Models/Folder.php index bde45d04..cc8ecd0c 100644 --- a/src/Domain/Folders/Models/Folder.php +++ b/src/Domain/Folders/Models/Folder.php @@ -116,21 +116,6 @@ class Folder extends Model return $folders + $files; } - /** - * Format deleted at date reformat - */ - public function getDeletedAtAttribute(): string | null - { - if (! $this->attributes['deleted_at']) { - return null; - } - - return format_date( - set_time_by_user_timezone($this->attributes['deleted_at']), - __t('time') - ); - } - /** * Get parent */ diff --git a/src/Domain/Folders/Resources/FolderResource.php b/src/Domain/Folders/Resources/FolderResource.php index ea8cea8c..ff708f05 100644 --- a/src/Domain/Folders/Resources/FolderResource.php +++ b/src/Domain/Folders/Resources/FolderResource.php @@ -24,12 +24,14 @@ class FolderResource extends JsonResource 'isTeamFolder' => $this->team_folder, 'items' => $this->items, 'trashed_items' => $this->trashed_items, - 'updated_at' => format_date( + 'updated_at' => $this->updated_at, + 'created_at' => $this->created_at, + /*'updated_at' => format_date( set_time_by_user_timezone($this->updated_at), __t('time') ), 'created_at' => format_date( set_time_by_user_timezone($this->created_at), __t('time') - ), + ),*/ ], 'relationships' => [ $this->mergeWhen($this->teamMembers, fn() => [