From fa2e16587c5d95c7ce961b953ff9218755238c5d Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Tue, 22 Apr 2014 20:39:54 +0100 Subject: [PATCH] Remove content/MIME from message list API --- mailhog/storage/mongodb.go | 10 +++++++++- mailhog/templates/index.go | 4 ++-- mailhog/templates/js/controllers.go | 21 ++++++++++++++++----- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/mailhog/storage/mongodb.go b/mailhog/storage/mongodb.go index 8261717..2953664 100644 --- a/mailhog/storage/mongodb.go +++ b/mailhog/storage/mongodb.go @@ -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 diff --git a/mailhog/templates/index.go b/mailhog/templates/index.go index a85d21f..61ee293 100644 --- a/mailhog/templates/index.go +++ b/mailhog/templates/index.go @@ -61,7 +61,7 @@ func Index() string { Actions - + {{ message.From.Mailbox }}@{{ message.From.Domain }} @@ -101,7 +101,7 @@ func Index() string {
  • Source
  • -
    +
    {{ getMessagePlain(preview) }}
    {{ getSource(preview) }}
    diff --git a/mailhog/templates/js/controllers.go b/mailhog/templates/js/controllers.go index 5558eba..9b3853b 100644 --- a/mailhog/templates/js/controllers.go +++ b/mailhog/templates/js/controllers.go @@ -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'); }