diff --git a/karma.conf.js b/karma.conf.js index bbb3bb45a8..9f5fe99f30 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -73,6 +73,7 @@ module.exports = function(config) { "website/public/js/directives/when-scrolled.directive.js", "website/public/js/controllers/authCtrl.js", + "website/public/js/controllers/memberModalCtrl.js", "website/public/js/controllers/menuCtrl.js", "website/public/js/controllers/notificationCtrl.js", "website/public/js/controllers/rootCtrl.js", diff --git a/website/public/js/controllers/groupsCtrl.js b/website/public/js/controllers/groupsCtrl.js index f7b05701d4..fab6dae3f6 100644 --- a/website/public/js/controllers/groupsCtrl.js +++ b/website/public/js/controllers/groupsCtrl.js @@ -159,70 +159,6 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' }; }]) - .controller("MemberModalCtrl", ['$scope', '$rootScope', 'Members', 'Shared', '$http', 'Notification', 'Groups', 'Chat', '$controller', 'Stats', - function($scope, $rootScope, Members, Shared, $http, Notification, Groups, Chat, $controller, Stats) { - - $controller('RootCtrl', {$scope: $scope}); - - $scope.timestamp = function(timestamp){ - return moment(timestamp).format($rootScope.User.user.preferences.dateFormat.toUpperCase()); - } - - $scope.statCalc = Stats; - - // We watch Members.selectedMember because it's asynchronously set, so would be a hassle to handle updates here - $scope.$watch( function() { return Members.selectedMember; }, function (member) { - if(member) { - member.petCount = Shared.countPets($rootScope.countExists(member.items.pets), member.items.pets); - member.mountCount = Shared.countMounts($rootScope.countExists(member.items.mounts), member.items.mounts); - $scope.profile = member; - } - }); - - $scope.sendPrivateMessage = function(uuid, message){ - // Don't do anything if the user somehow gets here without a message. - if (!message) return; - - $http.post('/api/v2/members/'+uuid+'/message',{message:message}).success(function(){ - Notification.text(window.env.t('messageSentAlert')); - $rootScope.User.sync(); - $scope.$close(); - }); - }; - - $scope.gift = { - type: 'gems', - gems: {amount:0, fromBalance:true}, - subscription: {key:''}, - message:'' - }; - - $scope.sendGift = function(uuid, gift){ - $http.post('/api/v2/members/'+uuid+'/gift', gift).success(function(){ - Notification.text('Gift sent!') - $rootScope.User.sync(); - $scope.$close(); - }) - }; - - $scope.reportAbuse = function(reporter, message, groupId) { - message.flags[reporter._id] = true; - Chat.utils.flagChatMessage({gid: groupId, messageId: message.id}, undefined, function(data){ - Notification.text(window.env.t('abuseReported')); - $scope.$close(); - }); - }; - - $scope.clearFlagCount = function(message, groupId) { - Chat.utils.clearFlagCount({gid: groupId, messageId: message.id}, undefined, function(data){ - message.flagCount = 0; - Notification.text("Flags cleared"); - $scope.$close(); - }); - } - } - ]) - .controller('AutocompleteCtrl', ['$scope', '$timeout', 'Groups', 'User', 'InputCaret', function ($scope,$timeout,Groups,User,InputCaret) { $scope.clearUserlist = function() { $scope.response = []; diff --git a/website/public/js/controllers/memberModalCtrl.js b/website/public/js/controllers/memberModalCtrl.js new file mode 100644 index 0000000000..f5cb70a77d --- /dev/null +++ b/website/public/js/controllers/memberModalCtrl.js @@ -0,0 +1,66 @@ +"use strict"; + +habitrpg + .controller("MemberModalCtrl", ['$scope', '$rootScope', 'Members', 'Shared', '$http', 'Notification', 'Groups', 'Chat', '$controller', 'Stats', + function($scope, $rootScope, Members, Shared, $http, Notification, Groups, Chat, $controller, Stats) { + + $controller('RootCtrl', {$scope: $scope}); + + $scope.timestamp = function(timestamp){ + return moment(timestamp).format($rootScope.User.user.preferences.dateFormat.toUpperCase()); + } + + $scope.statCalc = Stats; + + // We watch Members.selectedMember because it's asynchronously set, so would be a hassle to handle updates here + $scope.$watch( function() { return Members.selectedMember; }, function (member) { + if(member) { + member.petCount = Shared.countPets($rootScope.countExists(member.items.pets), member.items.pets); + member.mountCount = Shared.countMounts($rootScope.countExists(member.items.mounts), member.items.mounts); + $scope.profile = member; + } + }); + + $scope.sendPrivateMessage = function(uuid, message){ + // Don't do anything if the user somehow gets here without a message. + if (!message) return; + + $http.post('/api/v2/members/'+uuid+'/message',{message:message}).success(function(){ + Notification.text(window.env.t('messageSentAlert')); + $rootScope.User.sync(); + $scope.$close(); + }); + }; + + $scope.gift = { + type: 'gems', + gems: {amount:0, fromBalance:true}, + subscription: {key:''}, + message:'' + }; + + $scope.sendGift = function(uuid, gift){ + $http.post('/api/v2/members/'+uuid+'/gift', gift).success(function(){ + Notification.text('Gift sent!') + $rootScope.User.sync(); + $scope.$close(); + }) + }; + + $scope.reportAbuse = function(reporter, message, groupId) { + message.flags[reporter._id] = true; + Chat.utils.flagChatMessage({gid: groupId, messageId: message.id}, undefined, function(data){ + Notification.text(window.env.t('abuseReported')); + $scope.$close(); + }); + }; + + $scope.clearFlagCount = function(message, groupId) { + Chat.utils.clearFlagCount({gid: groupId, messageId: message.id}, undefined, function(data){ + message.flagCount = 0; + Notification.text("Flags cleared"); + $scope.$close(); + }); + } + } + ]); diff --git a/website/public/manifest.json b/website/public/manifest.json index 7d4189887a..3abf41969d 100644 --- a/website/public/manifest.json +++ b/website/public/manifest.json @@ -71,6 +71,7 @@ "js/controllers/authCtrl.js", "js/controllers/menuCtrl.js", + "js/controllers/memberModalCtrl.js", "js/controllers/notificationCtrl.js", "js/controllers/rootCtrl.js", "js/controllers/settingsCtrl.js",