From 550d356bd3b13139ed7cab8725068235f719c5b3 Mon Sep 17 00:00:00 2001 From: Ricardo Arturo Cabral Mejia Date: Sun, 30 Jan 2022 02:12:19 +0000 Subject: [PATCH] feat: add createMentionsProvider mixin --- src/utils/mixin.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) 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), + } } } }