Merge pull request #4351 from pixelfed/staging

Staging
This commit is contained in:
daniel 2023-05-05 00:05:03 -06:00 committed by GitHub
commit bc7d431369
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 88 additions and 16 deletions

View file

@ -1,6 +1,10 @@
# Release Notes # Release Notes
## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.11.6...dev) ## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.11.6...dev)
### Updates
- Update admin dashboard, fix search and dropdown menu ([dac0d083](https://github.com/pixelfed/pixelfed/commit/dac0d083))
- Update sudo mode view, fix trusted device checkbox ([8ef900bf](https://github.com/pixelfed/pixelfed/commit/8ef900bf))
- ([](https://github.com/pixelfed/pixelfed/commit/)) - ([](https://github.com/pixelfed/pixelfed/commit/))
## [v0.11.6 (2023-05-03)](https://github.com/pixelfed/pixelfed/compare/v0.11.5...v0.11.6) ## [v0.11.6 (2023-05-03)](https://github.com/pixelfed/pixelfed/compare/v0.11.5...v0.11.6)

View file

@ -0,0 +1,23 @@
<?php
namespace App\Services;
use Cache;
use App\Profile;
class AvatarService
{
public static function get($profile_id)
{
$exists = Cache::get('avatar:' . $profile_id);
if($exists) {
return $exists;
}
$profile = Profile::find($profile_id);
if(!$profile) {
return config('app.url') . '/storage/avatars/default.jpg';
}
return $profile->avatarUrl();
}
}

View file

@ -7,6 +7,7 @@ use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Util\RateLimit\User as UserRateLimit; use App\Util\RateLimit\User as UserRateLimit;
use App\Services\AvatarService;
class User extends Authenticatable class User extends Authenticatable
{ {
@ -97,4 +98,13 @@ class User extends Authenticatable
return $this->hasMany(AccountInterstitial::class); return $this->hasMany(AccountInterstitial::class);
} }
public function avatarUrl()
{
if(!$this->profile_id || $this->status) {
return config('app.url') . '/storage/avatars/default.jpg';
}
return AvatarService::get($this->profile_id);
}
} }

BIN
public/js/spa.js vendored

Binary file not shown.

View file

@ -1 +1,3 @@
/*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */ /*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */

Binary file not shown.

View file

@ -1,7 +1,8 @@
<nav class="navbar navbar-top navbar-expand navbar-dark bg-primary border-bottom"> <nav class="navbar navbar-top navbar-expand navbar-dark bg-primary border-bottom">
<div class="container-fluid"> <div class="container-fluid">
<div class="collapse navbar-collapse" id="navbarSupportedContent"> <div class="collapse navbar-collapse" id="navbarSupportedContent">
<form class="navbar-search navbar-search-light form-inline mr-sm-3" id="navbar-search-main" method="get" action="/i/results"> <form class="navbar-search navbar-search-light form-inline mr-sm-3" id="navbar-search-main" method="get" action="/i/web">
<input type="hidden" name="src" value="ac">
<div class="form-group mb-0"> <div class="form-group mb-0">
<div class="input-group input-group-alternative input-group-merge"> <div class="input-group input-group-alternative input-group-merge">
<div class="input-group-prepend"> <div class="input-group-prepend">
@ -35,25 +36,57 @@
<a class="nav-link pr-0" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <a class="nav-link pr-0" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<div class="media align-items-center"> <div class="media align-items-center">
<span class="avatar avatar-sm rounded-circle"> <span class="avatar avatar-sm rounded-circle">
<img alt="avatar" src="{{request()->user()->profile->avatarUrl()}}" onerror="this.onerror=null;this.src='/storage/avatars/default.png?v=0';"> <img alt="avatar" src="{{request()->user()->avatarUrl()}}" onerror="this.onerror=null;this.src='/storage/avatars/default.png?v=0';" width="36" height="36" style="object-fit: cover;">
</span> </span>
<div class="media-body ml-2 d-none d-lg-block"> <div class="media-body ml-2 d-none d-lg-block">
<span class="mb-0 text-sm font-weight-bold">{{request()->user()->username}}</span> <span class="mb-0 text-sm font-weight-bold">{{request()->user()->username}}</span>
</div> </div>
</div> </div>
</a> </a>
<div class="dropdown-menu dropdown-menu-right "> <div class="dropdown-menu dropdown-menu-right ">
<div class="dropdown-header noti-title"> <a href="/i/web" class="dropdown-item d-flex align-items-center">
<h6 class="text-overflow m-0">Welcome!</h6> <span style="width:30px;">
</div> <i class="far fa-home text-light"></i>
<a href="/i/me" class="dropdown-item"> </span>
<i class="ni ni-single-02"></i> <span class="font-weight-bold">Home</span>
<span>Profile</span>
</a> </a>
<a href="/settings/home" class="dropdown-item">
<i class="ni ni-settings-gear-65"></i> <a href="/i/web/discover" class="dropdown-item d-flex align-items-center">
<span>Settings</span> <span style="width:30px;">
<i class="far fa-compass text-light"></i>
</span>
<span class="font-weight-bold">Discover</span>
</a> </a>
<div class="dropdown-divider"></div>
<a href="/i/me" class="dropdown-item d-flex align-items-center">
<span style="width:30px;">
<i class="far fa-user text-light"></i>
</span>
<span class="font-weight-bold">Profile</span>
</a>
<a href="/settings/home" class="dropdown-item d-flex align-items-center">
<span style="width:30px;">
<i class="far fa-cog text-light"></i>
</span>
<span class="font-weight-bold">Settings</span>
</a>
<div class="dropdown-divider"></div>
<a
href="#"
class="dropdown-item d-flex align-items-center"
onclick="event.preventDefault();document.getElementById('logout-form').submit();">
<span style="width:30px;">
<i class="far fa-sign-out text-light"></i>
</span>
<span class="font-weight-bold">{{ __('navmenu.logout') }}</span>
</a>
<form id="logout-form" action="/logout" method="POST" style="display: none;">
@csrf
</form>
</div> </div>
</li> </li>
</ul> </ul>

View file

@ -40,9 +40,9 @@
@endif @endif
</div> </div>
<div class="form-group"> <div class="form-group" id="trusted-device-wrapper">
<div class="custom-control custom-checkbox" id="trusted-device"> <div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="trustDevice"> <input type="checkbox" class="custom-control-input" name="trustDevice" id="trusted-device">
<label class="custom-control-label text-muted" for="trusted-device">Trust this device and don't ask again</label> <label class="custom-control-label text-muted" for="trusted-device">Trust this device and don't ask again</label>
</div> </div>
</div> </div>
@ -91,7 +91,7 @@
email.setAttribute('readonly', 'readonly'); email.setAttribute('readonly', 'readonly');
email.style.opacity = '20%'; email.style.opacity = '20%';
let trustedDevice = document.getElementById('trusted-device'); let trustedDevice = document.getElementById('trusted-device-wrapper');
trustedDevice.style.opacity = '20%'; trustedDevice.style.opacity = '20%';
let btn = document.getElementById('sbtn'); let btn = document.getElementById('sbtn');