1
0
Fork 0
forked from mirror/pixelfed

Update DirectMessageController to support new Metro 2.0 UI DMs

This commit is contained in:
Daniel Supernault 2022-05-09 00:15:03 -06:00
parent d43908780f
commit a4659fd2ab
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7

View file

@ -19,6 +19,8 @@ use App\Services\MediaBlocklistService;
use App\Jobs\StatusPipeline\NewStatusPipeline; use App\Jobs\StatusPipeline\NewStatusPipeline;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use App\Util\ActivityPub\Helpers; use App\Util\ActivityPub\Helpers;
use App\Services\AccountService;
use App\Services\StatusService;
use App\Services\WebfingerService; use App\Services\WebfingerService;
use App\Models\Conversation; use App\Models\Conversation;
@ -435,8 +437,10 @@ class DirectMessageController extends Controller
->get(); ->get();
} }
$res = $res->filter(function($s) {
$res = $res->map(function($s) use ($uid){ return $s && $s->status;
})
->map(function($s) use ($uid) {
return [ return [
'id' => (string) $s->id, 'id' => (string) $s->id,
'hidden' => (bool) $s->is_hidden, 'hidden' => (bool) $s->is_hidden,
@ -449,7 +453,8 @@ class DirectMessageController extends Controller
'reportId' => (string) $s->status_id, 'reportId' => (string) $s->status_id,
'meta' => json_decode($s->meta,true) 'meta' => json_decode($s->meta,true)
]; ];
}); })
->values();
$w = [ $w = [
'id' => (string) $r->id, 'id' => (string) $r->id,
@ -488,11 +493,56 @@ class DirectMessageController extends Controller
$status = Status::whereProfileId($pid) $status = Status::whereProfileId($pid)
->findOrFail($dm->status_id); ->findOrFail($dm->status_id);
if($dm->recipient->domain) { $recipient = AccountService::get($dm->to_id);
if(!$recipient) {
return response('', 422);
}
if($recipient['local'] == false) {
$dmc = $dm; $dmc = $dm;
$this->remoteDelete($dmc); $this->remoteDelete($dmc);
} }
if(Conversation::whereStatusId($sid)->count()) {
$latest = DirectMessage::where(['from_id' => $dm->from_id, 'to_id' => $dm->to_id])
->orWhere(['to_id' => $dm->from_id, 'from_id' => $dm->to_id])
->latest()
->first();
if($latest->status_id == $sid) {
Conversation::where(['to_id' => $dm->from_id, 'from_id' => $dm->to_id])
->update([
'updated_at' => $latest->updated_at,
'status_id' => $latest->status_id,
'type' => $latest->type,
'is_hidden' => false
]);
Conversation::where(['to_id' => $dm->to_id, 'from_id' => $dm->from_id])
->update([
'updated_at' => $latest->updated_at,
'status_id' => $latest->status_id,
'type' => $latest->type,
'is_hidden' => false
]);
} else {
Conversation::where([
'status_id' => $sid,
'to_id' => $dm->from_id,
'from_id' => $dm->to_id
])->delete();
Conversation::where([
'status_id' => $sid,
'from_id' => $dm->from_id,
'to_id' => $dm->to_id
])->delete();
}
}
StatusService::del($status->id, true);
$status->delete(); $status->delete();
$dm->delete(); $dm->delete();