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

Frontend ui refactor
This commit is contained in:
daniel 2019-02-25 14:26:10 -07:00 committed by GitHub
commit 2e83ac9063
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 39 additions and 36 deletions

View file

@ -36,16 +36,16 @@ trait AdminSettingsController
public function settingsStorage(Request $request)
{
$databaseSum = Cache::remember('admin:settings:storage:db:storageUsed', 360, function() {
$databaseSum = Cache::remember('admin:settings:storage:db:storageUsed', now()->addMinutes(360), function() {
$q = 'SELECT sum(ROUND(((data_length + index_length)), 0)) AS size FROM information_schema.TABLES WHERE table_schema = ?';
$db = config('database.default');
$db = config("database.connections.{$db}.database");
return DB::select($q, [$db])[0]->size;
});
$mediaSum = Cache::remember('admin:settings:storage:media:storageUsed', 360, function() {
$mediaSum = Cache::remember('admin:settings:storage:media:storageUsed', now()->addMinutes(360), function() {
return Media::sum('size');
});
$backupSum = Cache::remember('admin:settings:storage:backups:storageUsed', 360, function() {
$backupSum = Cache::remember('admin:settings:storage:backups:storageUsed', now()->addMinutes(360), function() {
$dir = storage_path('app/'.config('app.name'));
$size = 0;
foreach (glob(rtrim($dir, '/').'/*', GLOB_NOSORT) as $each) {

View file

@ -44,7 +44,7 @@ class AdminController extends Controller
public function home()
{
$data = Cache::remember('admin:dashboard:home:data', 15, function() {
$data = Cache::remember('admin:dashboard:home:data', now()->addMinutes(15), function() {
$day = config('database.default') == 'pgsql' ? 'DATE_PART(\'day\',' : 'day(';
return [
'failedjobs' => [

View file

@ -57,7 +57,7 @@ class BaseApiController extends Controller
{
$pid = Auth::user()->profile->id;
$page = $request->input('page') ?? 1;
$res = Cache::remember('profile:notifications:'.$pid.':page:'.$page, 5, function() use($pid) {
$res = Cache::remember('profile:notifications:'.$pid.':page:'.$page, now()->addMinutes(5), function() use($pid) {
$timeago = Carbon::now()->subMonths(6);
$notifications = Notification::whereHas('actor')
->whereProfileId($pid)

View file

@ -11,7 +11,7 @@ class InstanceApiController extends Controller {
protected function getData()
{
$contact = Cache::remember('api:v1:instance:contact', 1440, function() {
$contact = Cache::remember('api:v1:instance:contact', now()->addMinutes(1440), function() {
$admin = User::whereIsAdmin(true)->first()->profile;
return [
'id' => $admin->id,
@ -56,7 +56,7 @@ class InstanceApiController extends Controller {
public function instance()
{
$res = Cache::remember('api:v1:instance', 60, function() {
$res = Cache::remember('api:v1:instance', now()->addMinutes(60), function() {
return json_encode($this->getData());
});

View file

@ -10,6 +10,7 @@ use Illuminate\Http\Request;
class ApiController extends BaseApiController
{
// todo: deprecate and remove
public function hydrateLikes(Request $request)
{
$this->validate($request, [
@ -18,7 +19,7 @@ class ApiController extends BaseApiController
]);
$profile = Auth::user()->profile;
$res = Cache::remember('api:like-ids:user:'.$profile->id, 1440, function () use ($profile) {
$res = Cache::remember('api:like-ids:user:'.$profile->id, now()->addDays(1), function () use ($profile) {
return Like::whereProfileId($profile->id)
->orderBy('id', 'desc')
->take(1000)

View file

@ -80,7 +80,7 @@ class FederationController extends Controller
public function nodeinfo()
{
$res = Cache::remember('api:nodeinfo', 60, function () {
$res = Cache::remember('api:nodeinfo', now()->addHours(1), function () {
return [
'metadata' => [
'nodeName' => config('app.name'),

View file

@ -105,10 +105,10 @@ class InternalApiController extends Controller
{
$profile = Auth::user()->profile;
$pid = $profile->id;
$following = Cache::remember('feature:discover:following:'.$pid, 60, function() use ($pid) {
$following = Cache::remember('feature:discover:following:'.$pid, now()->addMinutes(60), function() use ($pid) {
return Follower::whereProfileId($pid)->pluck('following_id')->toArray();
});
$filters = Cache::remember("user:filter:list:$pid", 60, function() use($pid) {
$filters = Cache::remember("user:filter:list:$pid", now()->addMinutes(60), function() use($pid) {
return UserFilter::whereUserId($pid)
->whereFilterableType('App\Profile')
->whereIn('filter_type', ['mute', 'block'])
@ -161,10 +161,10 @@ class InternalApiController extends Controller
{
$profile = Auth::user()->profile;
$pid = $profile->id;
$following = Cache::remember('feature:discover:following:'.$pid, 60, function() use ($pid) {
$following = Cache::remember('feature:discover:following:'.$pid, now()->addMinutes(60), function() use ($pid) {
return Follower::whereProfileId($pid)->pluck('following_id')->toArray();
});
$filters = Cache::remember("user:filter:list:$pid", 60, function() use($pid) {
$filters = Cache::remember("user:filter:list:$pid", now()->addMinutes(60), function() use($pid) {
return UserFilter::whereUserId($pid)
->whereFilterableType('App\Profile')
->whereIn('filter_type', ['mute', 'block'])
@ -200,10 +200,10 @@ class InternalApiController extends Controller
{
$profile = Auth::user()->profile;
$pid = $profile->id;
$following = Cache::remember('feature:discover:following:'.$pid, 15, function() use ($pid) {
$following = Cache::remember('feature:discover:following:'.$pid, now()->addMinutes(15), function() use ($pid) {
return Follower::whereProfileId($pid)->pluck('following_id')->toArray();
});
$filters = Cache::remember("user:filter:list:$pid", 15, function() use($pid) {
$filters = Cache::remember("user:filter:list:$pid", now()->addMinutes(15), function() use($pid) {
$private = Profile::whereIsPrivate(true)
->orWhere('unlisted', true)
->orWhere('status', '!=', null)

View file

@ -48,7 +48,7 @@ class LikeController extends Controller
->take(1000)
->pluck('status_id');
Cache::put('api:like-ids:user:'.$profile->id, $likes, 1440);
Cache::put('api:like-ids:user:'.$profile->id, $likes, now()->addMinutes(1440));
if ($request->ajax()) {
$response = ['code' => 200, 'msg' => 'Like saved', 'count' => $count];

View file

@ -223,7 +223,7 @@ class PublicApiController extends Controller
// $timeline = Timeline::build()->local();
$pid = Auth::user()->profile->id;
$private = Cache::remember('profiles:private', 1440, function() {
$private = Cache::remember('profiles:private', now()->addMinutes(1440), function() {
return Profile::whereIsPrivate(true)
->orWhere('unlisted', true)
->orWhere('status', '!=', null)
@ -317,7 +317,7 @@ class PublicApiController extends Controller
// $timeline = Timeline::build()->local();
$pid = Auth::user()->profile->id;
$following = Cache::remember('profile:following:'.$pid, 1440, function() use($pid) {
$following = Cache::remember('profile:following:'.$pid, now()->addMinutes(1440), function() use($pid) {
$following = Follower::whereProfileId($pid)->pluck('following_id');
return $following->push($pid)->toArray();
});

View file

@ -23,7 +23,7 @@ class SearchController extends Controller
return;
}
$hash = hash('sha256', $tag);
$tokens = Cache::remember('api:search:tag:'.$hash, 5, function () use ($tag) {
$tokens = Cache::remember('api:search:tag:'.$hash, now()->addMinutes(5), function () use ($tag) {
$tokens = collect([]);
if(Helpers::validateUrl($tag)) {
$remote = Helpers::fetchFromUrl($tag);
@ -85,6 +85,7 @@ class SearchController extends Controller
'value' => $item->username,
'tokens' => [$item->username],
'name' => $item->name,
'id' => $item->id
];
});
$tokens->push($profiles);

View file

@ -74,7 +74,7 @@ class SettingsController extends Controller
public function exportFollowing()
{
$data = Cache::remember('account:export:profile:following:'.Auth::user()->profile->id, 1440, function() {
$data = Cache::remember('account:export:profile:following:'.Auth::user()->profile->id, now()->addMinutes(1440), function() {
return Auth::user()->profile->following()->get()->map(function($i) {
return $i->url();
});
@ -86,7 +86,7 @@ class SettingsController extends Controller
public function exportFollowers()
{
$data = Cache::remember('account:export:profile:followers:'.Auth::user()->profile->id, 1440, function() {
$data = Cache::remember('account:export:profile:followers:'.Auth::user()->profile->id, now()->addMinutes(1440), function() {
return Auth::user()->profile->followers()->get()->map(function($i) {
return $i->url();
});
@ -105,7 +105,7 @@ class SettingsController extends Controller
if(!$exists) {
return redirect()->back();
}
$data = Cache::remember('account:export:profile:muteblocklist:'.Auth::user()->profile->id, 1440, function() use($profile) {
$data = Cache::remember('account:export:profile:muteblocklist:'.Auth::user()->profile->id, now()->addMinutes(1440), function() use($profile) {
return json_encode([
'muted' => $profile->mutedProfileUrls(),
'blocked' => $profile->blockedProfileUrls()

View file

@ -41,10 +41,10 @@ class SiteController extends Controller
public function about()
{
$res = Cache::remember('site:about', 120, function() {
$res = Cache::remember('site:about', now()->addMinutes(120), function() {
$custom = Page::whereSlug('/site/about')->whereActive(true)->exists();
if($custom) {
$stats = Cache::remember('site:about:stats', 60, function() {
$stats = Cache::remember('site:about:stats', now()->addMinutes(60), function() {
return [
'posts' => Status::whereLocal(true)->count(),
'users' => User::count(),
@ -53,7 +53,7 @@ class SiteController extends Controller
});
return View::make('site.about')->with('stats', $stats)->render();
} else {
$stats = Cache::remember('site:about:stats', 60, function() {
$stats = Cache::remember('site:about:stats', now()->addMinutes(60), function() {
return [
'posts' => Status::whereLocal(true)->count(),
'users' => User::count(),

View file

@ -124,7 +124,7 @@ class Profile extends Model
public function avatarUrl()
{
$url = Cache::remember("avatar:{$this->id}", 1440, function () {
$url = Cache::remember("avatar:{$this->id}", now()->addDays(1), function () {
$path = optional($this->avatar)->media_path;
$version = hash('sha1', $this->avatar->updated_at);
$path = "{$path}?v={$version}";

View file

@ -2,11 +2,10 @@
namespace App;
use Auth, Cache;
use Auth, Cache, Hashids, Storage;
use App\Http\Controllers\StatusController;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Storage;
class Status extends Model
{
@ -77,7 +76,7 @@ class Status extends Model
public function thumb($showNsfw = false)
{
return Cache::remember('status:thumb:'.$this->id, 40320, function() use ($showNsfw) {
return Cache::remember('status:thumb:'.$this->id, now()->addMinutes(15), function() use ($showNsfw) {
$type = $this->type ?? $this->setType();
$is_nsfw = !$showNsfw ? $this->is_nsfw : false;
if ($this->media->count() == 0 || $is_nsfw || !in_array($type,['photo', 'photo:album'])) {

View file

@ -62,7 +62,7 @@ class StatusTransformer extends Fractal\TransformerAbstract
public function includeMediaAttachments(Status $status)
{
return Cache::remember('status:transformer:media:attachments:'.$status->id, 1440, function() use($status) {
return Cache::remember('status:transformer:media:attachments:'.$status->id, now()->addMinutes(1440), function() use($status) {
$media = $status->media()->orderBy('order')->get();
return $this->collection($media, new MediaTransformer());
});

View file

@ -30,7 +30,7 @@ class Helpers {
public static function validateObject($data)
{
// todo: undo
$verbs = ['Create', 'Announce', 'Like', 'Follow', 'Delete', 'Accept', 'Reject'];
$verbs = ['Create', 'Announce', 'Like', 'Follow', 'Delete', 'Accept', 'Reject', 'Undo'];
$valid = Validator::make($data, [
'type' => [
@ -136,7 +136,7 @@ class Helpers {
'127.0.0.1', 'localhost', '::1'
];
$valid = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED|FILTER_FLAG_HOST_REQUIRED);
$valid = filter_var($url, FILTER_VALIDATE_URL);
if(in_array(parse_url($valid, PHP_URL_HOST), $localhosts)) {
return false;
@ -232,8 +232,8 @@ class Helpers {
$ts = is_array($res['published']) ? $res['published'][0] : $res['published'];
$status = new Status;
$status->profile_id = $profile->id;
$status->url = $url;
$status->uri = $url;
$status->url = isset($res['url']) ? $res['url'] : $url;
$status->uri = isset($res['url']) ? $res['url'] : $url;
$status->caption = strip_tags($res['content']);
$status->rendered = Purify::clean($res['content']);
$status->created_at = Carbon::parse($ts);

View file

@ -108,7 +108,8 @@ class HttpSignature {
'(request-target)' => 'post '.parse_url($url, PHP_URL_PATH),
'Date' => $date->format('D, d M Y H:i:s \G\M\T'),
'Host' => parse_url($url, PHP_URL_HOST),
'Content-Type' => 'application/activity+json',
'Accept' => 'application/activity+json, application/json',
'Content-Type' => 'application/activity+json'
];
if($digest) {

View file

@ -4,7 +4,7 @@ namespace App\Util\Media;
use App\Media;
use Image as Intervention;
use Storage;
use Cache, Storage;
class Image
{
@ -141,6 +141,7 @@ class Image
}
$media->save();
Cache::forget('status:thumb:'.$media->status_id);
} catch (Exception $e) {
}
}