Merge pull request #4047 from pixelfed/staging

Staging
This commit is contained in:
daniel 2022-12-30 21:45:30 -07:00 committed by GitHub
commit f4cfff0271
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 132 additions and 97 deletions

View file

@ -83,8 +83,6 @@ class DeleteAccountPipeline implements ShouldQueue
StatusDelete::dispatchNow($status); StatusDelete::dispatchNow($status);
} }
}); });
$this->deleteUserColumns($user);
AccountService::del($user->profile_id);
AccountLog::whereItemType('App\User')->whereItemId($user->id)->forceDelete(); AccountLog::whereItemType('App\User')->whereItemId($user->id)->forceDelete();
@ -176,6 +174,8 @@ class DeleteAccountPipeline implements ShouldQueue
Report::whereUserId($user->id)->forceDelete(); Report::whereUserId($user->id)->forceDelete();
PublicTimelineService::warmCache(true, 400); PublicTimelineService::warmCache(true, 400);
$this->deleteUserColumns($user);
AccountService::del($user->profile_id);
Profile::whereUserId($user->id)->delete(); Profile::whereUserId($user->id)->delete();
} }

View file

@ -74,11 +74,12 @@ class StatusDelete implements ShouldQueue
$profile = $this->status->profile; $profile = $this->status->profile;
StatusService::del($status->id, true); StatusService::del($status->id, true);
if($profile) {
if(in_array($status->type, ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])) { if(in_array($status->type, ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])) {
$profile->status_count = $profile->status_count - 1; $profile->status_count = $profile->status_count - 1;
$profile->save(); $profile->save();
} }
}
if(config_cache('federation.activitypub.enabled') == true) { if(config_cache('federation.activitypub.enabled') == true) {
return $this->fanoutDelete($status); return $this->fanoutDelete($status);
@ -92,7 +93,7 @@ class StatusDelete implements ShouldQueue
Media::whereStatusId($status->id) Media::whereStatusId($status->id)
->get() ->get()
->each(function($media) { ->each(function($media) {
MediaDeletePipeline::dispatch($media)->onQueue('mmo'); MediaDeletePipeline::dispatchNow($media);
}); });
if($status->in_reply_to_id) { if($status->in_reply_to_id) {
@ -141,9 +142,14 @@ class StatusDelete implements ShouldQueue
public function fanoutDelete($status) public function fanoutDelete($status)
{ {
$audience = $status->profile->getAudienceInbox();
$profile = $status->profile; $profile = $status->profile;
if(!$profile) {
return;
}
$audience = $status->profile->getAudienceInbox();
$fractal = new Fractal\Manager(); $fractal = new Fractal\Manager();
$fractal->setSerializer(new ArraySerializer()); $fractal->setSerializer(new ArraySerializer());
$resource = new Fractal\Resource\Item($status, new DeleteNote()); $resource = new Fractal\Resource\Item($status, new DeleteNote());

View file

@ -137,7 +137,6 @@ class StatusService
public static function del($id, $purge = false) public static function del($id, $purge = false)
{ {
if($purge) { if($purge) {
$status = self::get($id); $status = self::get($id);
if($status && isset($status['account']) && isset($status['account']['id'])) { if($status && isset($status['account']) && isset($status['account']['id'])) {

View file

@ -5,6 +5,7 @@ namespace App\Transformer\Api;
use App\Status; use App\Status;
use League\Fractal; use League\Fractal;
use Cache; use Cache;
use App\Services\AccountService;
use App\Services\HashidService; use App\Services\HashidService;
use App\Services\LikeService; use App\Services\LikeService;
use App\Services\MediaService; use App\Services\MediaService;
@ -12,7 +13,6 @@ use App\Services\MediaTagService;
use App\Services\StatusHashtagService; use App\Services\StatusHashtagService;
use App\Services\StatusLabelService; use App\Services\StatusLabelService;
use App\Services\StatusMentionService; use App\Services\StatusMentionService;
use App\Services\ProfileService;
use App\Services\PollService; use App\Services\PollService;
use App\Models\CustomEmoji; use App\Models\CustomEmoji;
@ -63,7 +63,7 @@ class StatusStatelessTransformer extends Fractal\TransformerAbstract
'label' => StatusLabelService::get($status), 'label' => StatusLabelService::get($status),
'liked_by' => LikeService::likedBy($status), 'liked_by' => LikeService::likedBy($status),
'media_attachments' => MediaService::get($status->id), 'media_attachments' => MediaService::get($status->id),
'account' => ProfileService::get($status->profile_id), 'account' => AccountService::get($status->profile_id, true),
'tags' => StatusHashtagService::statusTags($status->id), 'tags' => StatusHashtagService::statusTags($status->id),
'poll' => $poll 'poll' => $poll
]; ];

View file

@ -5,47 +5,47 @@ namespace App\Util\Media;
class Filter { class Filter {
public static $filters = [ public static $filters = [
'1977' => 'filter-1977', '1984' => 'filter-1977',
'Aden' => 'filter-aden', 'Azen' => 'filter-aden',
'Amaro' => 'filter-amaro', 'Astairo' => 'filter-amaro',
'Ashby' => 'filter-ashby', 'Grassbee' => 'filter-ashby',
'Brannan' => 'filter-brannan', 'Bookrun' => 'filter-brannan',
'Brooklyn' => 'filter-brooklyn', 'Borough' => 'filter-brooklyn',
'Charmes' => 'filter-charmes', 'Farms' => 'filter-charmes',
'Clarendon' => 'filter-clarendon', 'Hairsadone' => 'filter-clarendon',
'Crema' => 'filter-crema', 'Cleana ' => 'filter-crema',
'Dogpatch' => 'filter-dogpatch', 'Catpatch' => 'filter-dogpatch',
'Earlybird' => 'filter-earlybird', 'Earlyworm' => 'filter-earlybird',
'Gingham' => 'filter-gingham', 'Plaid' => 'filter-gingham',
'Ginza' => 'filter-ginza', 'Kyo' => 'filter-ginza',
'Hefe' => 'filter-hefe', 'Yefe' => 'filter-hefe',
'Helena' => 'filter-helena', 'Goddess' => 'filter-helena',
'Hudson' => 'filter-hudson', 'Yards' => 'filter-hudson',
'Inkwell' => 'filter-inkwell', 'Quill' => 'filter-inkwell',
'Kelvin' => 'filter-kelvin', 'Rankine' => 'filter-kelvin',
'Kuno' => 'filter-juno', 'Juno' => 'filter-juno',
'Lark' => 'filter-lark', 'Mark' => 'filter-lark',
'Lo-Fi' => 'filter-lofi', 'Chill' => 'filter-lofi',
'Ludwig' => 'filter-ludwig', 'Van' => 'filter-ludwig',
'Maven' => 'filter-maven', 'Apache' => 'filter-maven',
'Mayfair' => 'filter-mayfair', 'Mayflower' => 'filter-mayfair',
'Moon' => 'filter-moon', 'Ceres' => 'filter-moon',
'Nashville' => 'filter-nashville', 'Knoxville' => 'filter-nashville',
'Perpetua' => 'filter-perpetua', 'Felicity' => 'filter-perpetua',
'Poprocket' => 'filter-poprocket', 'Sandblast' => 'filter-poprocket',
'Reyes' => 'filter-reyes', 'Daisy' => 'filter-reyes',
'Rise' => 'filter-rise', 'Elevate' => 'filter-rise',
'Sierra' => 'filter-sierra', 'Nevada' => 'filter-sierra',
'Skyline' => 'filter-skyline', 'Futura' => 'filter-skyline',
'Slumber' => 'filter-slumber', 'Sleepy' => 'filter-slumber',
'Stinson' => 'filter-stinson', 'Steward' => 'filter-stinson',
'Sutro' => 'filter-sutro', 'Savoy' => 'filter-sutro',
'Toaster' => 'filter-toaster', 'Blaze' => 'filter-toaster',
'Valencia' => 'filter-valencia', 'Apricot' => 'filter-valencia',
'Vesper' => 'filter-vesper', 'Gloming' => 'filter-vesper',
'Walden' => 'filter-walden', 'Walter' => 'filter-walden',
'Willow' => 'filter-willow', 'Poplar' => 'filter-willow',
'X-Pro II' => 'filter-xpro-ii' 'Xenon' => 'filter-xpro-ii'
]; ];
public static function classes() public static function classes()

View file

@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use App\Status;
use App\Jobs\StatusPipeline\StatusDelete;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Status::doesntHave('profile')->get()->each(function($status) { StatusDelete::dispatch($status); });
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
};

BIN
public/js/app.js vendored

Binary file not shown.

Binary file not shown.

BIN
public/js/compose.js vendored

Binary file not shown.

BIN
public/js/spa.js vendored

Binary file not shown.

Binary file not shown.

View file

@ -149,47 +149,47 @@ window.App.util = {
}) })
}, },
filters: [ filters: [
['1977','filter-1977'], ['1984','filter-1977'],
['Aden','filter-aden'], ['Azen','filter-aden'],
['Amaro','filter-amaro'], ['Astairo','filter-amaro'],
['Ashby','filter-ashby'], ['Grassbee','filter-ashby'],
['Brannan','filter-brannan'], ['Bookrun','filter-brannan'],
['Brooklyn','filter-brooklyn'], ['Borough','filter-brooklyn'],
['Charmes','filter-charmes'], ['Farms','filter-charmes'],
['Clarendon','filter-clarendon'], ['Hairsadone','filter-clarendon'],
['Crema','filter-crema'], ['Cleana ','filter-crema'],
['Dogpatch','filter-dogpatch'], ['Catpatch','filter-dogpatch'],
['Earlybird','filter-earlybird'], ['Earlyworm','filter-earlybird'],
['Gingham','filter-gingham'], ['Plaid','filter-gingham'],
['Ginza','filter-ginza'], ['Kyo','filter-ginza'],
['Hefe','filter-hefe'], ['Yefe','filter-hefe'],
['Helena','filter-helena'], ['Goddess','filter-helena'],
['Hudson','filter-hudson'], ['Yards','filter-hudson'],
['Inkwell','filter-inkwell'], ['Quill','filter-inkwell'],
['Kelvin','filter-kelvin'], ['Rankine','filter-kelvin'],
['Kuno','filter-juno'], ['Juno','filter-juno'],
['Lark','filter-lark'], ['Mark','filter-lark'],
['Lo-Fi','filter-lofi'], ['Chill','filter-lofi'],
['Ludwig','filter-ludwig'], ['Van','filter-ludwig'],
['Maven','filter-maven'], ['Apache','filter-maven'],
['Mayfair','filter-mayfair'], ['Mayflower','filter-mayfair'],
['Moon','filter-moon'], ['Ceres','filter-moon'],
['Nashville','filter-nashville'], ['Knoxville','filter-nashville'],
['Perpetua','filter-perpetua'], ['Felicity','filter-perpetua'],
['Poprocket','filter-poprocket'], ['Sandblast','filter-poprocket'],
['Reyes','filter-reyes'], ['Daisy','filter-reyes'],
['Rise','filter-rise'], ['Elevate','filter-rise'],
['Sierra','filter-sierra'], ['Nevada','filter-sierra'],
['Skyline','filter-skyline'], ['Futura','filter-skyline'],
['Slumber','filter-slumber'], ['Sleepy','filter-slumber'],
['Stinson','filter-stinson'], ['Steward','filter-stinson'],
['Sutro','filter-sutro'], ['Savoy','filter-sutro'],
['Toaster','filter-toaster'], ['Blaze','filter-toaster'],
['Valencia','filter-valencia'], ['Apricot','filter-valencia'],
['Vesper','filter-vesper'], ['Gloming','filter-vesper'],
['Walden','filter-walden'], ['Walter','filter-walden'],
['Willow','filter-willow'], ['Poplar','filter-willow'],
['X-Pro II','filter-xpro-ii'] ['Xenon','filter-xpro-ii']
], ],
filterCss: { filterCss: {
'filter-1977': 'sepia(.5) hue-rotate(-30deg) saturate(1.4)', 'filter-1977': 'sepia(.5) hue-rotate(-30deg) saturate(1.4)',

View file

@ -370,7 +370,7 @@
<div class="p-1 pt-3"> <div class="p-1 pt-3">
<img :src="media[carouselCursor].url" width="100px" height="60px" :class="filter[1]" v-on:click.prevent="toggleFilter($event, filter[1])"> <img :src="media[carouselCursor].url" width="100px" height="60px" :class="filter[1]" v-on:click.prevent="toggleFilter($event, filter[1])">
</div> </div>
<a :class="[media[carouselCursor].filter_class == filter[1] ? 'nav-link text-primary active' : 'nav-link text-muted']" href="#" v-on:click.prevent="toggleFilter($event, filter[1])">i{{filter[0]}}</a> <a :class="[media[carouselCursor].filter_class == filter[1] ? 'nav-link text-primary active' : 'nav-link text-muted']" href="#" v-on:click.prevent="toggleFilter($event, filter[1])">{{filter[0]}}</a>
</li> </li>
</ul> </ul>
</div> </div>
@ -407,7 +407,7 @@
<div class="p-1 pt-3"> <div class="p-1 pt-3">
<img :src="media[carouselCursor].url" width="100px" height="60px" :class="filter[1]" v-on:click.prevent="toggleFilter($event, filter[1])"> <img :src="media[carouselCursor].url" width="100px" height="60px" :class="filter[1]" v-on:click.prevent="toggleFilter($event, filter[1])">
</div> </div>
<a :class="[media[carouselCursor].filter_class == filter[1] ? 'nav-link text-primary active' : 'nav-link text-muted']" href="#" v-on:click.prevent="toggleFilter($event, filter[1])">i{{filter[0]}}</a> <a :class="[media[carouselCursor].filter_class == filter[1] ? 'nav-link text-primary active' : 'nav-link text-muted']" href="#" v-on:click.prevent="toggleFilter($event, filter[1])">{{filter[0]}}</a>
</li> </li>
</ul> </ul>
</div> </div>
@ -1033,7 +1033,7 @@ export default {
}, },
beforeMount() { beforeMount() {
this.filters = window.App.util.filters; this.filters = window.App.util.filters.sort();
axios.get('/api/compose/v0/settings') axios.get('/api/compose/v0/settings')
.then(res => { .then(res => {
this.composeSettings = res.data; this.composeSettings = res.data;