forked from mirror/pixelfed
Update Status model, use AccountService to generate urls instead of loading profile relation
This commit is contained in:
parent
694ce6ff3d
commit
2ae527c0f3
2 changed files with 15 additions and 5 deletions
|
@ -15,7 +15,7 @@ class AccountService
|
|||
{
|
||||
const CACHE_KEY = 'pf:services:account:';
|
||||
|
||||
public static function get($id)
|
||||
public static function get($id, $softFail = false)
|
||||
{
|
||||
if($id > PHP_INT_MAX || $id < 1) {
|
||||
return [];
|
||||
|
@ -24,10 +24,16 @@ class AccountService
|
|||
$key = self::CACHE_KEY . $id;
|
||||
$ttl = now()->addHours(12);
|
||||
|
||||
return Cache::remember($key, $ttl, function() use($id) {
|
||||
return Cache::remember($key, $ttl, function() use($id, $softFail) {
|
||||
$fractal = new Fractal\Manager();
|
||||
$fractal->setSerializer(new ArraySerializer());
|
||||
$profile = Profile::findOrFail($id);
|
||||
$profile = Profile::find($id);
|
||||
if(!$profile) {
|
||||
if($softFail) {
|
||||
return null;
|
||||
}
|
||||
abort(404);
|
||||
}
|
||||
$resource = new Fractal\Resource\Item($profile, new AccountTransformer());
|
||||
return $fractal->createData($resource)->toArray();
|
||||
});
|
||||
|
|
|
@ -8,6 +8,7 @@ use App\HasSnowflakePrimary;
|
|||
use App\Http\Controllers\StatusController;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use App\Models\Poll;
|
||||
use App\Services\AccountService;
|
||||
|
||||
class Status extends Model
|
||||
{
|
||||
|
@ -108,8 +109,11 @@ class Status extends Model
|
|||
return $forceLocal ? "/i/web/post/_/{$this->profile_id}/{$this->id}" : $this->uri;
|
||||
} else {
|
||||
$id = $this->id;
|
||||
$username = $this->profile->username;
|
||||
$path = url(config('app.url')."/p/{$username}/{$id}");
|
||||
$account = AccountService::get($this->profile_id, true);
|
||||
if(!$account || !isset($account['username'])) {
|
||||
return '/404';
|
||||
}
|
||||
$path = url(config('app.url')."/p/{$account['username']}/{$id}");
|
||||
return $path;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue