lib/render-msg.jsView |
---|
18 | 18 … | this.c = content || {} |
19 | 19 … | this.isMissing = !content |
20 | 20 … | this.hasFullLink = |
21 | 21 … | this.c.type === 'chess_move' || |
22 | | - this.c.type === 'ssb_chess_move' |
| 22 … | + this.c.type === 'ssb_chess_move' || |
| 23 … | + (this.c.type === 'about' && this.c.about == this.value.author |
| 24 … | + && typeof this.c.description === 'string') |
23 | 25 … | |
24 | 26 … | if (typeof opts === 'boolean') opts = {raw: opts} |
25 | 27 … | this.opts = opts || {} |
26 | 28 … | this.shouldWrap = this.opts.wrap !== false |
27 | 29 … | var ts = this.value.timestamp |
28 | 30 … | this.date = ts ? new Date(ts) : null |
| 31 … | + this.thread = opts.links || [] |
| 32 … | + this.single = opts.single |
29 | 33 … | } |
30 | 34 … | |
31 | 35 … | RenderMsg.prototype.getMsg = function (id, cb) { |
32 | 36 … | if (!id) return cb() |
644 | 648 … | 'talenet-version': true, |
645 | 649 … | } |
646 | 650 … | |
647 | 651 … | RenderMsg.prototype.about = function (cb) { |
| 652 … | + var self = this |
648 | 653 … | var keys = Object.keys(this.c).filter(function (k) { |
649 | 654 … | return k !== 'about' && k !== 'type' && k !== 'recps' |
650 | 655 … | }).sort().join() |
651 | 656 … | var isSelf = this.c.about === this.msg.value.author |
701 | 706 … | var showComputedName = !isSelf && !this.c.name |
702 | 707 … | var target = this.c.about |
703 | 708 … | var pwh = this.c.publicWebHosting |
704 | 709 … | |
| 710 … | + function descriptionOrDiff(cb) { |
| 711 … | + |
| 712 … | + |
| 713 … | + var prevMsg = !self.opts.full && self.getPreviousAboutInThreadSync() |
| 714 … | + cb() |
| 715 … | + if (prevMsg) return self.render.textEditDiffTable(prevMsg, self.msg) |
| 716 … | + return h('div', {innerHTML: self.render.markdown(self.c.description)}) |
| 717 … | + } |
| 718 … | + |
705 | 719 … | this.wrap([ |
706 | 720 … | this.c.root && this.c.root !== target ? h('div', |
707 | 721 … | h('small', '→ ', this.link1(this.c.root, done())) |
708 | 722 … | ) : '', |
730 | 744 … | ] : '' |
731 | 745 … | ]) : '', |
732 | 746 … | this.c.genre ? h('div', ['genre: ', h('u', u.toString(this.c.genre))]) : '', |
733 | 747 … | this.c.shelve ? h('div', ['shelf: ', h('u', u.toString(this.c.shelve))]) : '', |
734 | | - this.c.description ? h('div', |
735 | | - {innerHTML: this.render.markdown(this.c.description)}) : '', |
| 748 … | + this.c.description ? descriptionOrDiff(done()) : '', |
736 | 749 … | this.c.review ? h('blockquote', |
737 | 750 … | {innerHTML: this.render.markdown(this.c.review)}) : '', |
738 | 751 … | this.c.attendee ? h('div', |
739 | 752 … | this.link1(this.c.attendee.link, done()), |
762 | 775 … | ], elCb) |
763 | 776 … | done(cb) |
764 | 777 … | } |
765 | 778 … | |
| 779 … | +RenderMsg.prototype.getPreviousAboutInThreadSync = function () { |
| 780 … | + var self = this |
| 781 … | + var root = this.thread[0] |
| 782 … | + if (!root) return |
| 783 … | + if (this.c.about !== root.key) { |
| 784 … | + |
| 785 … | + return |
| 786 … | + } |
| 787 … | + var i = this.thread.indexOf(this.msg) |
| 788 … | + var target = this.c.about |
| 789 … | + if (i === -1) return |
| 790 … | + for (var j = i-1; j >= 0; j--) { |
| 791 … | + var msg = this.thread[j] |
| 792 … | + var c = msg && msg.value && msg.value.content |
| 793 … | + if (c && c.type === 'about' && c.about === target |
| 794 … | + && typeof c.description === 'string') { |
| 795 … | + return msg |
| 796 … | + } |
| 797 … | + } |
| 798 … | +} |
| 799 … | + |
766 | 800 … | RenderMsg.prototype.aboutRating = function (cb) { |
767 | 801 … | var rating = Number(this.c.rating) |
768 | 802 … | var max = Number(this.c.ratingMax) |
769 | 803 … | var type = this.c.ratingType |