mirror of
https://github.com/flarum/framework.git
synced 2025-04-25 14:14:03 +08:00

Record when the discussion was renamed, from what, and by whom. Information is stored in the `content` field as a serialised JSON object because proper polymorphism will be too difficult with Ember Data and especially when extensions try to add new post types.
51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
import Ember from 'ember';
|
|
import DS from 'ember-data';
|
|
|
|
export default DS.Model.extend({
|
|
title: DS.attr('string'),
|
|
slug: Ember.computed('title', function() {
|
|
return this.get('title').toLowerCase().replace(/[^a-z0-9]/gi, '-').replace(/-+/g, '-');
|
|
}),
|
|
|
|
startTime: DS.attr('date'),
|
|
startUser: DS.belongsTo('user'),
|
|
startPost: DS.belongsTo('post'),
|
|
|
|
lastTime: DS.attr('date'),
|
|
lastUser: DS.belongsTo('user'),
|
|
lastPost: DS.belongsTo('post'),
|
|
lastPostNumber: DS.attr('number'),
|
|
|
|
canReply: DS.attr('boolean'),
|
|
canEdit: DS.attr('boolean'),
|
|
canDelete: DS.attr('boolean'),
|
|
|
|
commentsCount: DS.attr('number'),
|
|
repliesCount: Ember.computed('commentsCount', function() {
|
|
return Math.max(0, this.get('commentsCount') - 1);
|
|
}),
|
|
|
|
// The API returns the `posts` relationship as a list of IDs. To hydrate a
|
|
// post-stream object, we're only interested in obtaining a list of IDs, so
|
|
// we make it a string and then split it by comma. Instead, we'll put a
|
|
// relationship on `loadedPosts`.
|
|
posts: DS.attr('string'),
|
|
postIds: Ember.computed('posts', function() {
|
|
var posts = this.get('posts') || '';
|
|
return posts.split(',');
|
|
}),
|
|
loadedPosts: DS.hasMany('post'),
|
|
relevantPosts: DS.hasMany('post'),
|
|
addedPosts: DS.hasMany('post'),
|
|
|
|
readTime: DS.attr('date'),
|
|
readNumber: DS.attr('number'),
|
|
unreadCount: Ember.computed('lastPostNumber', 'readNumber', 'session.user.readTime', function() {
|
|
return this.get('session.user.readTime') < this.get('lastTime') ? Math.max(0, this.get('lastPostNumber') - (this.get('readNumber') || 0)) : 0;
|
|
}),
|
|
isUnread: Ember.computed.bool('unreadCount'),
|
|
|
|
// Only used to save a new discussion
|
|
content: DS.attr('string')
|
|
});
|