diff --git a/src/utils/mixin.js b/src/utils/mixin.js index 7dbb4fa..94bc6e0 100644 --- a/src/utils/mixin.js +++ b/src/utils/mixin.js @@ -1,5 +1,6 @@ import relative from 'relative-date' import {date} from 'quasar' +import Tribute from 'tributejs' import {shorten} from './helpers' export default { @@ -38,6 +39,47 @@ export default { } return text.replace(/\B#\[(\d+)\]\B/g, replacer) + }, + + createMentionsProvider(options) { + const tribute = new Tribute({ + spaceSelectsMatch: true, + menuShowMinLength: 1, + + selectTemplate: item => `@${item.original.value.pubkey}`, + + menuItemTemplate: item => { + return ` +
+
+
${item.string}
+ ${item.original.value.nip05 + ? '' + : ''} +
+
${shorten(item.original.value.pubkey)}
+
+ ` + }, + + values: (_pattern, callback) => { + callback( + this.$store.getters + .namedProfiles + .map(profile => ({ + key: this.$store.getters.displayName(profile.pubkey), + value: profile, + })) + ) + }, + + noMatchTemplate: () => undefined, // hide "No matches" + }) + + return { + attach: element => tribute.attach(element), + detach: element => tribute.detach(element), + } } } }