-
Notifications
You must be signed in to change notification settings - Fork 0
/
tredingCtrl.js
126 lines (93 loc) · 3.46 KB
/
tredingCtrl.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
app.controller('trendingCtrl',function($scope, $http, $location, $routeParams,Steem) {
$scope.trendingTab = 'active';
$scope.steem = new Steem('get_discussions_by_trending',true);
});
app.controller('newCtrl',function($scope, $http, $location, $routeParams,Steem) {
$scope.newTab = 'active';
var cacheState = true;
if ($routeParams.reloadState == 'reload')
cacheState = false;
$scope.steem = new Steem('get_discussions_by_created',cacheState);
});
app.controller('hotCtrl',function($scope, $http, $location, $routeParams,Steem) {
$scope.hotTab = 'active';
$scope.steem = new Steem('get_discussions_by_hot',true);
});
//Infinite scroll front page
app.factory('Steem', function($http,tagString) {
var Steem = function(activeTab,cacheState) {
this.lists = [];
this.busy = false;
this.after = '';
this.done = false;
this.first = false;
this.activeTab = activeTab;
this.cacheState = cacheState;
};
Steem.prototype.nextPage = function() {
if (this.busy) return;
this.busy = true;
$http({
method: 'GET',
cache: this.cacheState,
url: 'https://api.steemjs.com/'+this.activeTab+'?query={"tag":"'+tagString+'", "limit": "10"'+this.after+'}'
}).then(function successCallback(response) {
var lists = response.data;
for(var i=0; i < lists.length ; i++){
lists[i].body = lists[i].body.substring(0,170)+'...';
// lists[i].body = lists[i].body = md.render( lists[i].body);
lists[i].created = formatDate(new Date(Date.parse(lists[i].created)));
lists[i].json_metadata = angular.fromJson(lists[i].json_metadata);
lists[i].author_reputation = steem.formatter.reputation(lists[i].author_reputation);
}
var i = 1;
//Check for first time loading
if(!this.first)
{
i = 0;
this.first = true;
}
for (; i < lists.length; i++) {
this.lists.push(lists[i]);
}
var index = lists.length -1;
this.after = ',"start_author":"'+lists[index].author+'","start_permlink":"'+lists[index].permlink+'"';
this.busy = false;
//change value of done if no more posts are available
if(lists.length == 1)
this.done = true;
}.bind(this));
};
return Steem;
});
function formatDate(date) {
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
var day = date.getDate();
var monthIndex = date.getMonth();
var year = date.getFullYear();
return monthNames[monthIndex] + ' ' + day + ', ' + year;
}
/*
function change(reputation){
if (reputation == null) return reputation;
reputation = parseInt(reputation);
let rep = String(reputation);
const neg = rep.charAt(0) === "-";
rep = neg ? rep.substring(1) : rep;
const str = rep;
const leadingDigits = parseInt(str.substring(0, 4));
const log = Math.log(leadingDigits) / Math.log(10);
const n = str.length - 1;
let out = n + (log - parseInt(log));
if (isNaN(out)) out = 0;
out = Math.max(out - 9, 0);
out = (neg ? -1 : 1) * out;
out = out * 9 + 25;
out = parseInt(out);
return out;
};*/