diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php
index fba1e40b3..5c6e4b082 100644
--- a/app/Http/Controllers/ProfileController.php
+++ b/app/Http/Controllers/ProfileController.php
@@ -33,7 +33,7 @@ class ProfileController extends Controller
}
// redirect authed users to Metro 2.0
- if ($request->user()) {
+ if ($request->user() && !$request->filled('carousel')) {
// unless they force static view
if (! $request->has('fs') || $request->input('fs') != '1') {
$pid = AccountService::usernameToId($username);
@@ -64,6 +64,7 @@ class ProfileController extends Controller
protected function buildProfile(Request $request, $user)
{
+ $carousel = (bool) $request->filled('carousel');
$username = $user->username;
$loggedIn = Auth::check();
$isPrivate = false;
@@ -97,6 +98,9 @@ class ProfileController extends Controller
],
];
+ if($carousel) {
+ return view('profile.show_carousel', compact('profile', 'settings'));
+ }
return view('profile.show', compact('profile', 'settings'));
} else {
$key = 'profile:settings:'.$user->id;
@@ -135,7 +139,9 @@ class ProfileController extends Controller
'list' => $settings->show_profile_followers,
],
];
-
+ if($carousel) {
+ return view('profile.show_carousel', compact('profile', 'settings'));
+ }
return view('profile.show', compact('profile', 'settings'));
}
}
diff --git a/package-lock.json b/package-lock.json
index 0856697af..971e78307 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,6 +7,7 @@
"name": "pixelfed",
"dependencies": {
"@fancyapps/fancybox": "^3.5.7",
+ "@glidejs/glide": "^3.6.2",
"@hcaptcha/vue-hcaptcha": "^1.3.0",
"@peertube/p2p-media-loader-core": "^1.0.14",
"@peertube/p2p-media-loader-hlsjs": "^1.0.14",
@@ -2140,6 +2141,11 @@
"jquery": ">=1.9.0"
}
},
+ "node_modules/@glidejs/glide": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/@glidejs/glide/-/glide-3.6.2.tgz",
+ "integrity": "sha512-oXw7In0IZV69PC0PChQakY+yh+UnqIb5+zfVuEIzub6Kkfl1foo7TAhr2PZXPzihOG9YS57t8wvdzBFEZ0aPVA=="
+ },
"node_modules/@hcaptcha/vue-hcaptcha": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/@hcaptcha/vue-hcaptcha/-/vue-hcaptcha-1.3.0.tgz",
diff --git a/package.json b/package.json
index 0fced8c08..7724f040c 100644
--- a/package.json
+++ b/package.json
@@ -34,6 +34,7 @@
},
"dependencies": {
"@fancyapps/fancybox": "^3.5.7",
+ "@glidejs/glide": "^3.6.2",
"@hcaptcha/vue-hcaptcha": "^1.3.0",
"@peertube/p2p-media-loader-core": "^1.0.14",
"@peertube/p2p-media-loader-hlsjs": "^1.0.14",
diff --git a/resources/assets/components/FullscreenCarousel.vue b/resources/assets/components/FullscreenCarousel.vue
new file mode 100644
index 000000000..1aac449f9
--- /dev/null
+++ b/resources/assets/components/FullscreenCarousel.vue
@@ -0,0 +1,336 @@
+
+ Oops! This account hasn't posted yet or is private.
+ Go back home
+