Improve hashtag suggestion

This commit is contained in:
syuilo 2018-07-21 03:15:31 +09:00
parent 7316352ff5
commit afcf2fddb1
2 changed files with 22 additions and 14 deletions

View file

@ -144,23 +144,28 @@ export default Vue.extend({
}); });
} }
} else if (this.type == 'hashtag') { } else if (this.type == 'hashtag') {
const cacheKey = 'autocomplete:hashtag:' + this.q; if (this.q == null || this.q == '') {
const cache = sessionStorage.getItem(cacheKey); this.hashtags = JSON.parse(localStorage.getItem('hashtags') || '[]');
if (cache) {
const hashtags = JSON.parse(cache);
this.hashtags = hashtags;
this.fetching = false; this.fetching = false;
} else { } else {
(this as any).api('hashtags/search', { const cacheKey = 'autocomplete:hashtag:' + this.q;
query: this.q, const cache = sessionStorage.getItem(cacheKey);
limit: 30 if (cache) {
}).then(hashtags => { const hashtags = JSON.parse(cache);
this.hashtags = hashtags; this.hashtags = hashtags;
this.fetching = false; this.fetching = false;
} else {
(this as any).api('hashtags/search', {
query: this.q,
limit: 30
}).then(hashtags => {
this.hashtags = hashtags;
this.fetching = false;
// //
sessionStorage.setItem(cacheKey, JSON.stringify(hashtags)); sessionStorage.setItem(cacheKey, JSON.stringify(hashtags));
}); });
}
} }
} else if (this.type == 'emoji') { } else if (this.type == 'emoji') {
const matched = []; const matched = [];

View file

@ -79,7 +79,10 @@ class Autocomplete {
hashtagIndex == -1 ? Infinity : hashtagIndex, hashtagIndex == -1 ? Infinity : hashtagIndex,
emojiIndex == -1 ? Infinity : emojiIndex); emojiIndex == -1 ? Infinity : emojiIndex);
if (start == Infinity) return; if (start == Infinity) {
this.close();
return;
}
const isMention = mentionIndex == start; const isMention = mentionIndex == start;
const isHashtag = hashtagIndex == start; const isHashtag = hashtagIndex == start;
@ -97,7 +100,7 @@ class Autocomplete {
if (isHashtag || opened == false) { if (isHashtag || opened == false) {
const hashtag = text.substr(hashtagIndex + 1); const hashtag = text.substr(hashtagIndex + 1);
if (hashtag != '' && !hashtag.includes(' ') && !hashtag.includes('\n')) { if (!hashtag.includes(' ') && !hashtag.includes('\n')) {
this.open('hashtag', hashtag); this.open('hashtag', hashtag);
opened = true; opened = true;
} }