index.jsView |
---|
22 | 22 … | var Mentions = require('ssb-mentions') |
23 | 23 … | var many = require('pull-many') |
24 | 24 … | var ident = require('pull-identify-filetype') |
25 | 25 … | var mime = require('mime-types') |
| 26 … | +var moment = require('moment') |
26 | 27 … | |
27 | 28 … | var hlCssPath = path.resolve(require.resolve('highlight.js'), '../../styles') |
28 | 29 … | |
29 | 30 … | function ParamError(msg) { |
108 | 109 … | this.reconnect = reconnect |
109 | 110 … | |
110 | 111 … | if (config.logging && config.logging.level) |
111 | 112 … | this.logLevel = this.logLevels.indexOf(config.logging.level) |
112 | | - this.ssbAppname = config.appname || 'gitmx' |
| 113 … | + this.ssbAppname = config.appname |
113 | 114 … | this.isPublic = config.public |
114 | 115 … | this.getVotes = require('./lib/votes')(ssb) |
115 | 116 … | this.getMsg = asyncMemo(ssb.get) |
116 | 117 … | this.issues = Issues.init(ssb) |
435 | 436 … | [code || 200, { |
436 | 437 … | 'Content-Type': 'text/html' |
437 | 438 … | }], |
438 | 439 … | '<!doctype html><html><head><meta charset=utf-8>', |
439 | | - '<title>' + (title || app) + " | " + "gitmx" + '</title>', |
| 440 … | + '<title>' + (title || app) + '</title>', |
440 | 441 … | '<link rel=stylesheet href="/static/styles.css"/>', |
441 | 442 … | '<link rel=stylesheet href="/highlight/github.css"/>', |
442 | 443 … | '</head>\n', |
443 | 444 … | '<body>', |
521 | 522 … | return c.type in msgTypes |
522 | 523 … | || (c.type == 'post' && c.repo && c.issue) |
523 | 524 … | }), |
524 | 525 … | typeof filter == 'function' ? filter(opts) : filter, |
525 | | - pull.take(20), |
| 526 … | + pull.take(50), |
526 | 527 … | this.addAuthorName(), |
527 | 528 … | query.forwards && u.pullReverse(), |
528 | 529 … | paginate( |
529 | 530 … | function (first, cb) { |
562 | 563 … | |
563 | 564 … | G.renderFeedItem = function (req, msg, cb) { |
564 | 565 … | var self = this |
565 | 566 … | var c = msg.value.content |
566 | | - var msgLink = u.link([msg.key], |
567 | | - new Date(msg.value.timestamp).toLocaleString(req._locale)) |
| 567 … | + var msgDate = moment(new Date(msg.value.timestamp)).fromNow() |
568 | 568 … | var author = msg.value.author |
569 | 569 … | var authorLink = u.link([msg.value.author], msg.authorName) |
570 | 570 … | switch (c.type) { |
571 | 571 … | case 'git-repo': |
575 | 575 … | return self.getMsg(c.upstream, function (err, upstreamMsg) { |
576 | 576 … | if (err) return cb(null, self.serveError(req, err)) |
577 | 577 … | self.getRepoName(upstreamMsg.author, c.upstream, done()) |
578 | 578 … | done(function (err, repoName, upstreamName) { |
579 | | - cb(null, '<section class="collapse">' + msgLink + '<br>' + |
| 579 … | + cb(null, '<section class="collapse">' + |
580 | 580 … | req._t('Forked', { |
581 | 581 … | name: authorLink, |
582 | 582 … | upstream: u.link([c.upstream], upstreamName), |
583 | 583 … | repo: u.link([msg.key], repoName) |
584 | | - }) + '</section>') |
| 584 … | + }) + ' <span class="date">' + msgDate + '</span></section>') |
585 | 585 … | }) |
586 | 586 … | }) |
587 | 587 … | } else { |
588 | 588 … | return done(function (err, repoName) { |
589 | 589 … | if (err) return cb(err) |
590 | 590 … | var repoLink = u.link([msg.key], repoName) |
591 | | - cb(null, '<section class="collapse">' + msgLink + '<br>' + |
| 591 … | + cb(null, '<section class="collapse">' + |
592 | 592 … | req._t('CreatedRepo', { |
593 | 593 … | name: authorLink, |
594 | 594 … | repo: repoLink |
595 | | - }) + '</section>') |
| 595 … | + }) + ' <span class="date">' + msgDate + '</span></section>') |
596 | 596 … | }) |
597 | 597 … | } |
598 | 598 … | case 'git-update': |
599 | 599 … | return self.getRepoName(author, c.repo, function (err, repoName) { |
600 | 600 … | if (err) return cb(err) |
601 | 601 … | var repoLink = u.link([c.repo], repoName) |
602 | | - cb(null, '<section class="collapse">' + msgLink + '<br>' + |
| 602 … | + cb(null, '<section class="collapse">' + |
603 | 603 … | req._t('Pushed', { |
604 | 604 … | name: authorLink, |
605 | 605 … | repo: repoLink |
606 | | - }) + '</section>') |
| 606 … | + }) + ' <span class="date">' + msgDate + '</span></section>') |
607 | 607 … | }) |
608 | 608 … | case 'issue': |
609 | 609 … | case 'pull-request': |
610 | 610 … | var issueLink = u.link([msg.key], u.messageTitle(msg)) |
614 | 614 … | self.getRepoName(projectMsg.author, c.project, |
615 | 615 … | function (err, repoName) { |
616 | 616 … | if (err) return cb(err) |
617 | 617 … | var repoLink = u.link([c.project], repoName) |
618 | | - cb(null, '<section class="collapse">' + msgLink + '<br>' + |
| 618 … | + cb(null, '<section class="collapse">' + |
619 | 619 … | req._t('OpenedIssue', { |
620 | 620 … | name: authorLink, |
621 | 621 … | type: req._t(c.type == 'pull-request' ? |
622 | 622 … | 'pull request' : 'issue.'), |
623 | 623 … | title: issueLink, |
624 | 624 … | project: repoLink |
625 | | - }) + '</section>') |
| 625 … | + }) + ' <span class="date">' + msgDate + '</span></section>') |
626 | 626 … | }) |
627 | 627 … | }) |
628 | 628 … | case 'about': |
629 | | - return cb(null, '<section class="collapse">' + msgLink + '<br>' + |
| 629 … | + return cb(null, '<section class="collapse">' + |
630 | 630 … | req._t('Named', { |
631 | 631 … | author: authorLink, |
632 | 632 … | target: '<tt>' + u.escape(c.about) + '</tt>', |
633 | 633 … | name: u.link([c.about], c.name) |
637 | 637 … | if (err) return cb(err) |
638 | 638 … | var type = pr.msg.value.content.type == 'pull-request' ? |
639 | 639 … | 'pull request' : 'issue.' |
640 | 640 … | var changed = self.issues.isStatusChanged(msg, pr) |
641 | | - return cb(null, '<section class="collapse">' + msgLink + '<br>' + |
| 641 … | + return cb(null, '<section class="collapse">' + |
642 | 642 … | req._t(changed == null ? 'CommentedOn' : |
643 | 643 … | changed ? 'ReopenedIssue' : 'ClosedIssue', { |
644 | 644 … | name: authorLink, |
645 | 645 … | type: req._t(type), |