diff --git a/src/Domain/Teams/Controllers/TeamFoldersController.php b/src/Domain/Teams/Controllers/TeamFoldersController.php index eaf9f99b..1cbad088 100644 --- a/src/Domain/Teams/Controllers/TeamFoldersController.php +++ b/src/Domain/Teams/Controllers/TeamFoldersController.php @@ -3,6 +3,7 @@ namespace Domain\Teams\Controllers; use DB; +use Domain\Files\Models\File; use Domain\Teams\Actions\InviteMembersIntoTeamFolderAction; use Illuminate\Http\Request; use Illuminate\Http\Response; @@ -19,18 +20,28 @@ class TeamFoldersController extends Controller public function show($id) { - $folder_id = $id !== 'undefined' - ? Folder::findOrFail($id)->id - : null; + $isHomepage = $id === 'undefined'; + $rootId = $id === 'undefined' ? null : $id; + $requestedFolder = $rootId ? Folder::findOrFail($rootId) : null; $folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in']) - ->where('parent_id', $folder_id) - ->where('team_folder', 1) + ->where('parent_id', $rootId) + ->where('team_folder', $isHomepage) ->where('user_id', Auth::id()) ->sortable() ->get(); - return response($folders); + $files = File::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in']) + ->where('folder_id', $rootId) + ->where('user_id', Auth::id()) + ->sortable() + ->get(); + + // Collect folders and files to single array + return [ + 'content' => collect([$folders, $files])->collapse(), + 'folder' => $requestedFolder, + ]; } public function store( diff --git a/tests/Domain/Teams/TeamsTest.php b/tests/Domain/Teams/TeamsTest.php index 4ed9c1c8..e835cfa7 100644 --- a/tests/Domain/Teams/TeamsTest.php +++ b/tests/Domain/Teams/TeamsTest.php @@ -2,6 +2,7 @@ namespace Tests\Domain\Teams; +use Domain\Files\Models\File; use Domain\Folders\Models\Folder; use Domain\Teams\Models\TeamFoldersInvitation; use Illuminate\Support\Facades\DB; @@ -252,6 +253,35 @@ class TeamsTest extends TestCase ]); } + /** + * @test + */ + public function it_get_content_of_team_folder() + { + $user = User::factory(User::class) + ->create(); + + $folder = Folder::factory() + ->create([ + 'user_id' => $user->id, + 'team_folder' => 1, + ]); + + $file = File::factory() + ->create([ + 'folder_id' => $folder->id, + 'user_id' => $user->id, + ]); + + $this + ->actingAs($user) + ->getJson("/api/teams/folders/{$folder->id}") + ->assertOk() + ->assertJsonFragment([ + 'id' => $file->id, + ]); + } + /** * */