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:
@@ -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();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user