Merge branch 'hotfix/21.56.9' into master
[gitter.git] / shared / templates / partials / room-card-context-generator.js
blob956c9607e4ab6f32a176e4ad488a73273db7d34a
1 'use strict';
3 var _ = require('lodash');
4 var validateTag = require('../../validation/validate-tag').validateTag;
5 var getRoomNameFromTroupeName = require('../../get-room-name-from-troupe-name');
7 // via http://stackoverflow.com/a/17633552/796832
8 var ranges = [
9 { divider: 1e18, suffix: 'P' },
10 { divider: 1e15, suffix: 'E' },
11 { divider: 1e12, suffix: 'T' },
12 { divider: 1e9, suffix: 'G' },
13 { divider: 1e6, suffix: 'M' },
14 { divider: 1e3, suffix: 'k' }
16 var formatNumberWithSiPrefix = function(n) {
17 for (var i = 0; i < ranges.length; i++) {
18 if (n >= ranges[i].divider) {
19 var siValue = n / ranges[i].divider;
20 return (Math.round(siValue * 10) / 10).toString() + ranges[i].suffix;
23 return n.toString();
26 var defaults = {
27 isStaff: false
30 // generateRoomCardContext
31 module.exports = function(room, options) {
32 var opts = _.extend({}, defaults, options);
33 var result = _.extend({}, room);
35 result.isPrivate =
36 result.security !== 'PUBLIC' && result.security !== null && result.security !== undefined;
37 result.canEditTags = opts.isStaff;
39 var roomName = room.name;
40 if (opts.stripGroupName) {
41 roomName = getRoomNameFromTroupeName(room.name);
43 result.name = roomName;
44 result.roomNameParts = roomName.split('/');
46 result.topic = room.topic || room.description;
47 if (room.messageCount) {
48 result.messageCountSiPrefixed = formatNumberWithSiPrefix(room.messageCount);
50 result.displayTags = (result.tags || []).filter(function(tag) {
51 return validateTag(tag, opts.isStaff).isValid;
52 });
54 return result;