1
0
Эх сурвалжийг харах

Merge pull request #348 from pixelfed/frontend-ui-refactor

Frontend UI Refactor
daniel 7 жил өмнө
parent
commit
c6947acd98

+ 71 - 0
app/Http/Controllers/Api/BaseApiController.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use Auth;
+use App\{Like, Profile, Status};
+use League\Fractal;
+use Illuminate\Http\Request;
+use App\Http\Controllers\Controller;
+use App\Util\Webfinger\Webfinger;
+use App\Transformer\Api\{
+  AccountTransformer,
+  StatusTransformer
+};
+use League\Fractal\Serializer\ArraySerializer;
+
+class BaseApiController extends Controller
+{
+    protected $fractal;
+
+    public function __construct()
+    {
+        $this->middleware('auth');
+        $this->fractal = new Fractal\Manager();
+        $this->fractal->setSerializer(new ArraySerializer());
+    }
+
+    public function accounts(Request $request, $id)
+    {
+        $profile = Profile::findOrFail($id);
+        $resource = new Fractal\Resource\Item($profile, new AccountTransformer);
+        $res = $this->fractal->createData($resource)->toArray();
+        return response()->json($res, 200, [], JSON_PRETTY_PRINT);
+    }
+
+    public function accountFollowers(Request $request, $id)
+    {
+        $profile = Profile::findOrFail($id);
+        $followers = $profile->followers;
+        $resource = new Fractal\Resource\Collection($followers, new AccountTransformer);
+        $res = $this->fractal->createData($resource)->toArray();
+        return response()->json($res, 200, [], JSON_PRETTY_PRINT);
+    }
+
+    public function accountFollowing(Request $request, $id)
+    {
+        $profile = Profile::findOrFail($id);
+        $following = $profile->following;
+        $resource = new Fractal\Resource\Collection($following, new AccountTransformer);
+        $res = $this->fractal->createData($resource)->toArray();
+        return response()->json($res, 200, [], JSON_PRETTY_PRINT);
+    }
+
+    public function accountStatuses(Request $request, $id)
+    {
+        $profile = Profile::findOrFail($id);
+        $statuses = $profile->statuses()->orderBy('id', 'desc')->paginate(20);
+        $resource = new Fractal\Resource\Collection($statuses, new StatusTransformer);
+        $res = $this->fractal->createData($resource)->toArray();
+        return response()->json($res, 200, [], JSON_PRETTY_PRINT);
+    }
+
+    
+    public function followSuggestions(Request $request)
+    {
+        $followers = Auth::user()->profile->recommendFollowers();
+        $resource = new Fractal\Resource\Collection($followers, new AccountTransformer);
+        $res = $this->fractal->createData($resource)->toArray();
+        return response()->json($res);
+    }
+}

+ 10 - 6
app/Http/Controllers/BookmarkController.php

@@ -16,23 +16,27 @@ class BookmarkController extends Controller
     public function store(Request $request)
     {
         $this->validate($request, [
-          'item' => 'required|integer|min:1'
+            'item' => 'required|integer|min:1'
         ]);
 
         $profile = Auth::user()->profile;
         $status = Status::findOrFail($request->input('item'));
 
         $bookmark = Bookmark::firstOrCreate(
-          ['status_id' => $status->id], ['profile_id' => $profile->id]
+            ['status_id' => $status->id], ['profile_id' => $profile->id]
         );
 
+        if(!$bookmark->wasRecentlyCreated) {
+            $bookmark->delete();
+        }
+
         if($request->ajax()) {
           $response = ['code' => 200, 'msg' => 'Bookmark saved!'];
-        } else {
+      } else {
           $response = redirect()->back();
-        }
+      }
 
-        return $response;
-    }
+      return $response;
+  }
 
 }

+ 2 - 1
app/Http/Controllers/ProfileController.php

@@ -109,11 +109,12 @@ class ProfileController extends Controller
         abort(403);
       }
       $user = Auth::user()->profile;
+      $settings = User::whereUsername($username)->firstOrFail()->settings;
       $owner = true;
       $following = false;
       $timeline = $user->bookmarks()->withCount(['likes','comments'])->orderBy('created_at','desc')->simplePaginate(10);
       $is_following = ($owner == false && Auth::check()) ? $user->followedBy(Auth::user()->profile) : false;
       $is_admin = is_null($user->domain) ? $user->user->is_admin : false;
-      return view('profile.show', compact('user', 'owner', 'following', 'timeline', 'is_following', 'is_admin'));
+      return view('profile.show', compact('user', 'settings', 'owner', 'following', 'timeline', 'is_following', 'is_admin'));
     }
 }

+ 6 - 0
app/Util/Lexer/RestrictedNames.php

@@ -118,6 +118,7 @@ class RestrictedNames {
 
      // Static Assets
      "assets",
+     "storage",
 
      // Laravel Horizon
      "horizon",
@@ -127,14 +128,19 @@ class RestrictedNames {
      "api",
      "auth",
      "i",
+     "dashboard",
      "discover",
+     "docs",
      "home",
      "login",
      "logout",
+     "media",
      "p",
      "password",
+     "reports",
      "search",
      "settings",
+     "statuses",
      "site",
      "timeline",
      "user",

+ 3 - 19
app/Util/Webfinger/Webfinger.php

@@ -31,13 +31,9 @@ class Webfinger {
 
   public function generateAliases()
   {
-    $host = parse_url(config('app.url'), PHP_URL_HOST);
-    $username = $this->user->username;
-    $url = $this->user->url();
-
     $this->aliases = [
-      'acct:'.$username.'@'.$host,
-      $url
+      $this->user->url(),
+      $this->user->permalink()
     ];
     return $this;
   }
@@ -55,24 +51,12 @@ class Webfinger {
       [
         'rel' => 'http://schemas.google.com/g/2010#updates-from',
         'type' => 'application/atom+xml',
-        'href' => url("/users/{$user->username}.atom")
+        'href' => $user->permalink('.atom')
       ],
       [
         'rel' => 'self',
         'type' => 'application/activity+json',
         'href' => $user->permalink()
-      ],
-      [
-        'rel' => 'magic-public-key',
-        'href' => null//$user->public_key
-      ],
-      [
-        'rel' => 'salmon',
-        'href' => $user->permalink('/salmon')
-      ],
-      [
-        'rel' => 'http://ostatus.org/schema/1.0/subscribe',
-        'href' => url('/main/ostatussub?profile={uri}')
       ]
     ];
     return $this;

+ 1 - 1
composer.json

@@ -12,7 +12,7 @@
         "fideloper/proxy": "^4.0",
         "greggilbert/recaptcha": "dev-master",
         "intervention/image": "^2.4",
-        "kitetail/zttp": "^0.3.0",
+        "pixelfed/zttp": "^0.4",
         "laravel/framework": "5.6.*",
         "laravel/horizon": "^1.2",
         "laravel/passport": "^6.0",

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 210 - 335
composer.lock


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно