mirror of
https://github.com/flarum/framework.git
synced 2024-11-24 22:03:27 +08:00
fix: call abstract Notification
methods with fallback
Only call Notification methods if they are defined, falling back to `undefined` if not through the use of the optional chaining operator.
This commit is contained in:
parent
57d3c9a99a
commit
81cf6047f9
|
@ -13,6 +13,8 @@ export interface INotificationAttrs extends ComponentAttrs {
|
|||
notification: NotificationModel;
|
||||
}
|
||||
|
||||
// TODO [Flarum 2.0]: Remove `?.` from abstract function calls.
|
||||
|
||||
/**
|
||||
* The `Notification` component abstract displays a single notification.
|
||||
* Subclasses should implement the `icon`, `href`, and `content` methods.
|
||||
|
@ -20,7 +22,7 @@ export interface INotificationAttrs extends ComponentAttrs {
|
|||
export default abstract class Notification<CustomAttrs extends INotificationAttrs = INotificationAttrs> extends Component<CustomAttrs> {
|
||||
view(vnode: Mithril.Vnode<CustomAttrs, this>) {
|
||||
const notification = this.attrs.notification;
|
||||
const href = this.href();
|
||||
const href = this.href?.() ?? '';
|
||||
|
||||
const fromUser = notification.fromUser();
|
||||
|
||||
|
@ -32,9 +34,9 @@ export default abstract class Notification<CustomAttrs extends INotificationAttr
|
|||
onclick={this.markAsRead.bind(this)}
|
||||
>
|
||||
{avatar(fromUser || null)}
|
||||
{icon(this.icon(), { className: 'Notification-icon' })}
|
||||
{icon(this.icon?.(), { className: 'Notification-icon' })}
|
||||
<span className="Notification-title">
|
||||
<span className="Notification-content">{this.content()}</span>
|
||||
<span className="Notification-content">{this.content?.()}</span>
|
||||
<span className="Notification-title-spring" />
|
||||
{humanTime(notification.createdAt())}
|
||||
</span>
|
||||
|
@ -51,7 +53,7 @@ export default abstract class Notification<CustomAttrs extends INotificationAttr
|
|||
}}
|
||||
/>
|
||||
)}
|
||||
<div className="Notification-excerpt">{this.excerpt()}</div>
|
||||
<div className="Notification-excerpt">{this.excerpt?.()}</div>
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user