1
0
mirror of https://github.com/flarum/core.git synced 2025-08-23 16:43:21 +02:00

fix: delete conversation when no messages are left

This commit is contained in:
Sami Mazouz
2025-08-22 13:57:04 +01:00
parent a46ce07255
commit 1f09ff1942
2 changed files with 28 additions and 0 deletions

View File

@@ -59,6 +59,22 @@ const MessageControls = {
return message.delete().then(() => { return message.delete().then(() => {
context.attrs.state.remove(message); context.attrs.state.remove(message);
const noMessagesLeft =
context.attrs.state.getAllItems().filter((m) => {
const mDialog = m.dialog();
const messageDialog = message.dialog();
if (!mDialog || !messageDialog) return false;
return mDialog?.id() === messageDialog!.id();
}).length === 0;
if (noMessagesLeft && message.dialog()) {
app.dialogs.remove(message.dialog()!);
m.route.set(app.route('messages'));
}
m.redraw(); m.redraw();
}); });
}, },

View File

@@ -70,6 +70,18 @@ class DialogMessage extends AbstractModel implements Formattable
->toSql() ->toSql()
.')'); .')');
}); });
static::deleted(function (self $message) {
if ($message->dialog) {
if ($message->dialog->messages()->count() === 0) {
$message->dialog->delete();
} elseif ($message->dialog->first_message_id === $message->id) {
$message->dialog->setFirstMessage(
$message->dialog->messages()->oldest('id')->first()
);
}
}
});
} }
public function dialog(): BelongsTo public function dialog(): BelongsTo