diff --git a/art/themes/luciano_blocktronics/MSGMNU.ANS b/art/themes/luciano_blocktronics/MSGMNU.ANS index 3585799b..9c373944 100644 Binary files a/art/themes/luciano_blocktronics/MSGMNU.ANS and b/art/themes/luciano_blocktronics/MSGMNU.ANS differ diff --git a/art/themes/luciano_blocktronics/MYMSGLST.ANS b/art/themes/luciano_blocktronics/MYMSGLST.ANS new file mode 100644 index 00000000..a56197bc Binary files /dev/null and b/art/themes/luciano_blocktronics/MYMSGLST.ANS differ diff --git a/art/themes/luciano_blocktronics/theme.hjson b/art/themes/luciano_blocktronics/theme.hjson index 4a35eb15..998d4c34 100644 --- a/art/themes/luciano_blocktronics/theme.hjson +++ b/art/themes/luciano_blocktronics/theme.hjson @@ -450,6 +450,21 @@ } } + messageAreaMyMessagesList: { + config: { + // Fri Sep 25th + dateTimeFormat: ddd MMM Do + } + mci: { + VM1: { + height: 16 + width: 71 + itemFormat: "|00|15 {msgNum:<4.4} |03{subject:<34.33} {fromUserName:<19.18} |03{ts:<12.12}" + focusItemFormat: "|00|19> |15{msgNum:<4.4} {subject:<34.33} {fromUserName:<19.18} {ts:<12.12}" + } + } + } + messageAreaViewPost: { 0: { mci: { diff --git a/core/my_messages.js b/core/my_messages.js new file mode 100644 index 00000000..721e1f9d --- /dev/null +++ b/core/my_messages.js @@ -0,0 +1,59 @@ +/* jslint node: true */ +'use strict'; + +// ENiGMA½ +const MenuModule = require('./menu_module.js').MenuModule; +const Message = require('./message.js'); +const UserProps = require('./user_property.js'); + +exports.moduleInfo = { + name : 'My Messages', + desc : 'Finds messages addressed to the current user.', + author : 'NuSkooler', +}; + +exports.getModule = class MyMessagesModule extends MenuModule { + constructor(options) { + super(options); + } + + initSequence() { + const filter = { + toUserName : [ this.client.user.username, this.client.user.getProperty(UserProps.RealName) ], + sort : 'modTimestamp', + resultType : 'messageList', + limit : 1024 * 16, // we want some sort of limit... + }; + + Message.findMessages(filter, (err, messageList) => { + if(err) { + this.client.log.warn( { error : err.message }, 'Error finding messages addressed to current user'); + return this.prevMenu(); + } + this.messageList = messageList; + this.finishedLoading(); + }); + } + + finishedLoading() { + if(!this.messageList || 0 === this.messageList.length) { + return this.gotoMenu( + this.menuConfig.config.noResultsMenu || 'messageSearchNoResults', + { menuFlags : [ 'popParent' ] } + ); + } + + const menuOpts = { + extraArgs : { + messageList : this.messageList, + noUpdateLastReadId : true + }, + menuFlags : [ 'popParent' ], + }; + + return this.gotoMenu( + this.menuConfig.config.messageListMenu || 'messageAreaMessageList', + menuOpts + ); + } +}; diff --git a/misc/menu_template.in.hjson b/misc/menu_template.in.hjson index bdcf97cd..ac51397f 100644 --- a/misc/menu_template.in.hjson +++ b/misc/menu_template.in.hjson @@ -1970,6 +1970,43 @@ } } + messageAreaMyMessagesList: { + desc: Personal Messages + module: msg_list + art: MYMSGLST + config: { + menuViewPost: messageAreaViewPost + } + form: { + 0: { + mci: { + VM1: { + focus: true + submit: true + argName: message + } + TL6: { + // theme me! + } + } + submit: { + *: [ + { + value: { message: null } + action: @method:selectMessage + } + ] + } + actionKeys: [ + { + keys: [ "escape", "q", "shift + q" ] + action: @systemMethod:prevMenu + } + ] + } + } + } + messageSearchNoResults: { desc: Message Search art: MSRCNORES