{"version":3,"sources":["public/src/client/account/header.js"],"names":["define","coverPhoto","pictureCropper","components","translator","Benchpress","AccountsDelete","AccountHeader","isAdminOrSelfOrGlobalMod","init","ajaxify","data","isAdmin","isSelf","isGlobalModerator","hidePrivateLinks","selectActivePill","setupCoverPhoto","get","on","toggleFollow","socket","emit","uid","err","roomId","app","alertError","message","openChat","newChat","parent","removeClass","banAccount","theirid","unbanAccount","handleDeleteEvent","bind","flagAccount","toggleBlockAccount","type","user","parseInt","$","addClass","each","href","this","find","attr","decodeURIComponent","window","location","pathname","imageData","position","callback","show","title","socketMethod","aspectRatio","NaN","allowSkippingCrop","restrictImageDimension","paramName","paramValue","accept","imageUrlOnServer","startsWith","config","relative_path","Date","now","css","removeCover","toggleClass","alertSuccess","username","onSuccess","parse","html","bootbox","dialog","className","buttons","close","label","submit","formData","serializeArray","reduce","cur","name","value","until","length","unit","uids","reason","refresh","require","flags","showFlagModal","id","targetEl","blockeeUid","blockerUid","blocked","translate","text","translated","confirm"],"mappings":"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","file":"public/src/client/account/header.js","sourcesContent":["'use strict';\n\n\ndefine('forum/account/header', [\n\t'coverPhoto',\n\t'pictureCropper',\n\t'components',\n\t'translator',\n\t'benchpress',\n\t'accounts/delete',\n], function (coverPhoto, pictureCropper, components, translator, Benchpress, AccountsDelete) {\n\tvar AccountHeader = {};\n\tvar isAdminOrSelfOrGlobalMod;\n\n\tAccountHeader.init = function () {\n\t\tisAdminOrSelfOrGlobalMod = ajaxify.data.isAdmin || ajaxify.data.isSelf || ajaxify.data.isGlobalModerator;\n\n\t\thidePrivateLinks();\n\t\tselectActivePill();\n\n\t\tif (isAdminOrSelfOrGlobalMod) {\n\t\t\tsetupCoverPhoto();\n\t\t}\n\n\t\tcomponents.get('account/follow').on('click', function () {\n\t\t\ttoggleFollow('follow');\n\t\t});\n\n\t\tcomponents.get('account/unfollow').on('click', function () {\n\t\t\ttoggleFollow('unfollow');\n\t\t});\n\n\t\tcomponents.get('account/chat').on('click', function () {\n\t\t\tsocket.emit('modules.chats.hasPrivateChat', ajaxify.data.uid, function (err, roomId) {\n\t\t\t\tif (err) {\n\t\t\t\t\treturn app.alertError(err.message);\n\t\t\t\t}\n\t\t\t\tif (roomId) {\n\t\t\t\t\tapp.openChat(roomId);\n\t\t\t\t} else {\n\t\t\t\t\tapp.newChat(ajaxify.data.uid);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tcomponents.get('account/new-chat').on('click', function () {\n\t\t\tapp.newChat(ajaxify.data.uid, function () {\n\t\t\t\tcomponents.get('account/chat').parent().removeClass('hidden');\n\t\t\t});\n\t\t});\n\n\n\t\tcomponents.get('account/ban').on('click', function () {\n\t\t\tbanAccount(ajaxify.data.theirid);\n\t\t});\n\t\tcomponents.get('account/unban').on('click', unbanAccount);\n\t\tcomponents.get('account/delete-account').on('click', handleDeleteEvent.bind(null, 'account'));\n\t\tcomponents.get('account/delete-content').on('click', handleDeleteEvent.bind(null, 'content'));\n\t\tcomponents.get('account/delete-all').on('click', handleDeleteEvent.bind(null, 'purge'));\n\t\tcomponents.get('account/flag').on('click', flagAccount);\n\t\tcomponents.get('account/block').on('click', toggleBlockAccount);\n\t};\n\n\tfunction handleDeleteEvent(type) {\n\t\tAccountsDelete[type](ajaxify.data.theirid);\n\t}\n\n\t// TODO: This exported method is used in forum/flags/detail -- refactor??\n\tAccountHeader.banAccount = banAccount;\n\n\tfunction hidePrivateLinks() {\n\t\tif (!app.user.uid || app.user.uid !== parseInt(ajaxify.data.theirid, 10)) {\n\t\t\t$('.account-sub-links .plugin-link.private').addClass('hide');\n\t\t}\n\t}\n\n\tfunction selectActivePill() {\n\t\t$('.account-sub-links li').removeClass('active').each(function () {\n\t\t\tvar href = $(this).find('a').attr('href');\n\n\t\t\tif (decodeURIComponent(href) === decodeURIComponent(window.location.pathname)) {\n\t\t\t\t$(this).addClass('active');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction setupCoverPhoto() {\n\t\tcoverPhoto.init(\n\t\t\tcomponents.get('account/cover'),\n\t\t\tfunction (imageData, position, callback) {\n\t\t\t\tsocket.emit('user.updateCover', {\n\t\t\t\t\tuid: ajaxify.data.uid,\n\t\t\t\t\timageData: imageData,\n\t\t\t\t\tposition: position,\n\t\t\t\t}, callback);\n\t\t\t},\n\t\t\tfunction () {\n\t\t\t\tpictureCropper.show({\n\t\t\t\t\ttitle: '[[user:upload_cover_picture]]',\n\t\t\t\t\tsocketMethod: 'user.updateCover',\n\t\t\t\t\taspectRatio: NaN,\n\t\t\t\t\tallowSkippingCrop: true,\n\t\t\t\t\trestrictImageDimension: false,\n\t\t\t\t\tparamName: 'uid',\n\t\t\t\t\tparamValue: ajaxify.data.theirid,\n\t\t\t\t\taccept: '.png,.jpg,.bmp',\n\t\t\t\t}, function (imageUrlOnServer) {\n\t\t\t\t\timageUrlOnServer = (!imageUrlOnServer.startsWith('http') ? config.relative_path : '') + imageUrlOnServer + '?' + Date.now();\n\t\t\t\t\tcomponents.get('account/cover').css('background-image', 'url(' + imageUrlOnServer + ')');\n\t\t\t\t});\n\t\t\t},\n\t\t\tremoveCover\n\t\t);\n\t}\n\n\tfunction toggleFollow(type) {\n\t\tsocket.emit('user.' + type, {\n\t\t\tuid: ajaxify.data.uid,\n\t\t}, function (err) {\n\t\t\tif (err) {\n\t\t\t\treturn app.alertError(err.message);\n\t\t\t}\n\n\t\t\tcomponents.get('account/follow').toggleClass('hide', type === 'follow');\n\t\t\tcomponents.get('account/unfollow').toggleClass('hide', type === 'unfollow');\n\t\t\tapp.alertSuccess('[[global:alert.' + type + ', ' + ajaxify.data.username + ']]');\n\t\t});\n\t\treturn false;\n\t}\n\n\tfunction banAccount(theirid, onSuccess) {\n\t\ttheirid = theirid || ajaxify.data.theirid;\n\n\t\tBenchpress.parse('admin/partials/temporary-ban', {}, function (html) {\n\t\t\tbootbox.dialog({\n\t\t\t\tclassName: 'ban-modal',\n\t\t\t\ttitle: '[[user:ban_account]]',\n\t\t\t\tmessage: html,\n\t\t\t\tshow: true,\n\t\t\t\tbuttons: {\n\t\t\t\t\tclose: {\n\t\t\t\t\t\tlabel: '[[global:close]]',\n\t\t\t\t\t\tclassName: 'btn-link',\n\t\t\t\t\t},\n\t\t\t\t\tsubmit: {\n\t\t\t\t\t\tlabel: '[[user:ban_account]]',\n\t\t\t\t\t\tcallback: function () {\n\t\t\t\t\t\t\tvar formData = $('.ban-modal form').serializeArray().reduce(function (data, cur) {\n\t\t\t\t\t\t\t\tdata[cur.name] = cur.value;\n\t\t\t\t\t\t\t\treturn data;\n\t\t\t\t\t\t\t}, {});\n\n\t\t\t\t\t\t\tvar until = formData.length > 0 ? (Date.now() + (formData.length * 1000 * 60 * 60 * (parseInt(formData.unit, 10) ? 24 : 1))) : 0;\n\n\t\t\t\t\t\t\tsocket.emit('user.banUsers', {\n\t\t\t\t\t\t\t\tuids: [theirid],\n\t\t\t\t\t\t\t\tuntil: until,\n\t\t\t\t\t\t\t\treason: formData.reason || '',\n\t\t\t\t\t\t\t}, function (err) {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\treturn app.alertError(err.message);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (typeof onSuccess === 'function') {\n\t\t\t\t\t\t\t\t\treturn onSuccess();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tajaxify.refresh();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tfunction unbanAccount() {\n\t\tsocket.emit('user.unbanUsers', [ajaxify.data.theirid], function (err) {\n\t\t\tif (err) {\n\t\t\t\treturn app.alertError(err.message);\n\t\t\t}\n\t\t\tajaxify.refresh();\n\t\t});\n\t}\n\n\tfunction flagAccount() {\n\t\trequire(['flags'], function (flags) {\n\t\t\tflags.showFlagModal({\n\t\t\t\ttype: 'user',\n\t\t\t\tid: ajaxify.data.uid,\n\t\t\t});\n\t\t});\n\t}\n\n\tfunction toggleBlockAccount() {\n\t\tvar targetEl = this;\n\t\tsocket.emit('user.toggleBlock', {\n\t\t\tblockeeUid: ajaxify.data.uid,\n\t\t\tblockerUid: app.user.uid,\n\t\t}, function (err, blocked) {\n\t\t\tif (err) {\n\t\t\t\treturn app.alertError(err.message);\n\t\t\t}\n\n\t\t\ttranslator.translate('[[user:' + (blocked ? 'unblock' : 'block') + '_user]]', function (label) {\n\t\t\t\t$(targetEl).text(label);\n\t\t\t});\n\t\t});\n\n\t\t// Keep dropdown open\n\t\treturn false;\n\t}\n\n\tfunction removeCover() {\n\t\ttranslator.translate('[[user:remove_cover_picture_confirm]]', function (translated) {\n\t\t\tbootbox.confirm(translated, function (confirm) {\n\t\t\t\tif (!confirm) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsocket.emit('user.removeCover', {\n\t\t\t\t\tuid: ajaxify.data.uid,\n\t\t\t\t}, function (err) {\n\t\t\t\t\tif (!err) {\n\t\t\t\t\t\tajaxify.refresh();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tapp.alertError(err.message);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\treturn AccountHeader;\n});\n"]}