ソースを参照

Merge pull request #4047 from pixelfed/staging

Staging
daniel 2 年 前
コミット
f4cfff0271

+ 2 - 2
app/Jobs/DeletePipeline/DeleteAccountPipeline.php

@@ -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();
 	}
 	}
 
 

+ 12 - 6
app/Jobs/StatusPipeline/StatusDelete.php

@@ -74,10 +74,11 @@ class StatusDelete implements ShouldQueue
 		$profile = $this->status->profile;
 		$profile = $this->status->profile;
 
 
 		StatusService::del($status->id, true);
 		StatusService::del($status->id, true);
-
-		if(in_array($status->type, ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])) {
-			$profile->status_count = $profile->status_count - 1;
-			$profile->save();
+		if($profile) {
+			if(in_array($status->type, ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])) {
+				$profile->status_count = $profile->status_count - 1;
+				$profile->save();
+			}
 		}
 		}
 
 
 		if(config_cache('federation.activitypub.enabled') == true) {
 		if(config_cache('federation.activitypub.enabled') == true) {
@@ -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());

+ 0 - 1
app/Services/StatusService.php

@@ -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'])) {

+ 2 - 2
app/Transformer/Api/StatusStatelessTransformer.php

@@ -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
 		];
 		];

+ 42 - 42
app/Util/Media/Filter.php

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

+ 30 - 0
database/migrations/2022_12_31_034627_fix_account_status_deletes.php

@@ -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


BIN
public/js/compose-12722-3lkw2.js


BIN
public/js/compose.js


BIN
public/js/spa.js


BIN
public/mix-manifest.json


+ 41 - 41
resources/assets/js/app.js

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

+ 3 - 3
resources/assets/js/components/ComposeModal.vue

@@ -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;