Remove content/MIME from message list API

This commit is contained in:
Ian Kent 2014-04-22 20:39:54 +01:00
parent 07df8aa087
commit fa2e16587c
3 changed files with 27 additions and 8 deletions

View file

@ -39,7 +39,15 @@ func (mongo *MongoDB) Store(m *data.SMTPMessage) (string, error) {
func (mongo *MongoDB) List(start int, limit int) (*data.Messages, error) {
messages := &data.Messages{}
err := mongo.Collection.Find(bson.M{}).Skip(start).Limit(limit).All(messages)
err := mongo.Collection.Find(bson.M{}).Skip(start).Limit(limit).Select(bson.M{
"id": 1,
"_id": 1,
"from": 1,
"to": 1,
"content.headers": 1,
"content.size": 1,
"created": 1,
}).All(messages)
if err != nil {
log.Printf("Error loading messages: %s", err)
return nil, err

View file

@ -61,7 +61,7 @@ func Index() string {
<th>Actions</th>
</tr>
<tbody>
<tr ng-repeat="message in messages" ng-click="selectMessage(message)" ng-class="{ selected: message == preview }">
<tr ng-repeat="message in messages" ng-click="selectMessage(message)" ng-class="{ selected: message.Id == preview.Id }">
<td>
{{ message.From.Mailbox }}@{{ message.From.Domain }}
</td>
@ -101,7 +101,7 @@ func Index() string {
<li><a href="#preview-source" data-toggle="tab">Source</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="preview-html" ng-bind-html="previewHTML"></div>
<div class="tab-pane active" id="preview-html" ng-bind-html="preview.previewHTML"></div>
<div class="tab-pane" id="preview-plain"><pre>{{ getMessagePlain(preview) }}</pre></div>
<div class="tab-pane" id="preview-source"><pre>{{ getSource(preview) }}</pre></div>
</div>

View file

@ -5,6 +5,8 @@ func Controllers() string {
var mailhogApp = angular.module('mailhogApp', []);
mailhogApp.controller('MailCtrl', function ($scope, $http, $sce) {
$scope.cache = {};
$scope.refresh = function() {
$http.get('/api/v1/messages').success(function(data) {
$scope.messages = data;
@ -12,6 +14,20 @@ mailhogApp.controller('MailCtrl', function ($scope, $http, $sce) {
}
$scope.refresh();
$scope.selectMessage = function(message) {
if($scope.cache[message.Id]) {
$scope.preview = $scope.cache[message.Id];
} else {
$scope.preview = message;
$http.get('/api/v1/messages/' + message.Id).success(function(data) {
$scope.cache[message.Id] = data;
data.previewHTML = $sce.trustAsHtml($scope.getMessageHTML(data));
$scope.preview = data;
preview = $scope.cache[message.Id];
});
}
}
$scope.getMessagePlain = function(message) {
var part;
@ -49,11 +65,6 @@ mailhogApp.controller('MailCtrl', function ($scope, $http, $sce) {
return (new Date(timestamp)).toString();
};
$scope.selectMessage = function(message) {
$scope.previewHTML = $sce.trustAsHtml($scope.getMessageHTML(message));
$scope.preview = message;
}
$scope.deleteAll = function() {
$('#confirm-delete-all').modal('show');
}