Merge pull request #886 from pixelfed/frontend-ui-refactor
Frontend ui refactor
This commit is contained in:
commit
2e83ac9063
|
@ -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) {
|
||||
|
|
|
@ -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' => [
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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());
|
||||
});
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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(),
|
||||
|
|
|
@ -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}";
|
||||
|
|
|
@ -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'])) {
|
||||
|
|
|
@ -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());
|
||||
});
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue