enhance(client): tweak custom emoji cache

This commit is contained in:
syuilo 2023-01-27 11:28:51 +09:00
parent cef448f0f2
commit 7d9d1ae7c2
2 changed files with 14 additions and 6 deletions

View file

@ -1,6 +1,6 @@
import { shallowRef, computed, markRaw } from 'vue'; import { shallowRef, computed, markRaw } from 'vue';
import * as Misskey from 'misskey-js'; import * as Misskey from 'misskey-js';
import { apiGet } from './os'; import { api, apiGet } from './os';
import { miLocalStorage } from './local-storage'; import { miLocalStorage } from './local-storage';
import { stream } from '@/stream'; import { stream } from '@/stream';
@ -28,12 +28,17 @@ stream.on('emojiDeleted', emojiData => {
customEmojis.value = customEmojis.value.filter(item => !emojiData.emojis.some(search => search.name === item.name)); customEmojis.value = customEmojis.value.filter(item => !emojiData.emojis.some(search => search.name === item.name));
}); });
export async function fetchCustomEmojis() { export async function fetchCustomEmojis(force = false) {
const now = Date.now(); const now = Date.now();
let res;
if (force) {
res = await api('emojis', {});
} else {
const lastFetchedAt = miLocalStorage.getItem('lastEmojisFetchedAt'); const lastFetchedAt = miLocalStorage.getItem('lastEmojisFetchedAt');
if (lastFetchedAt && (now - parseInt(lastFetchedAt)) < 1000 * 60 * 60) return; if (lastFetchedAt && (now - parseInt(lastFetchedAt)) < 1000 * 60 * 60) return;
res = await apiGet('emojis', {});
const res = await apiGet('emojis', {}); }
customEmojis.value = res.emojis; customEmojis.value = res.emojis;
miLocalStorage.setItem('emojis', JSON.stringify(res.emojis)); miLocalStorage.setItem('emojis', JSON.stringify(res.emojis));

View file

@ -34,6 +34,7 @@ import { useRouter } from '@/router';
import { definePageMetadata, provideMetadataReceiver, setPageMetadata } from '@/scripts/page-metadata'; import { definePageMetadata, provideMetadataReceiver, setPageMetadata } from '@/scripts/page-metadata';
import * as os from '@/os'; import * as os from '@/os';
import { miLocalStorage } from '@/local-storage'; import { miLocalStorage } from '@/local-storage';
import { fetchCustomEmojis } from '@/custom-emojis';
const indexInfo = { const indexInfo = {
title: i18n.ts.settings, title: i18n.ts.settings,
@ -180,11 +181,13 @@ const menuDef = computed(() => [{
type: 'button', type: 'button',
icon: 'ti ti-trash', icon: 'ti ti-trash',
text: i18n.ts.clearCache, text: i18n.ts.clearCache,
action: () => { action: async () => {
os.waiting();
miLocalStorage.removeItem('locale'); miLocalStorage.removeItem('locale');
miLocalStorage.removeItem('theme'); miLocalStorage.removeItem('theme');
miLocalStorage.removeItem('emojis'); miLocalStorage.removeItem('emojis');
miLocalStorage.removeItem('lastEmojisFetchedAt'); miLocalStorage.removeItem('lastEmojisFetchedAt');
await fetchCustomEmojis();
unisonReload(); unisonReload();
}, },
}, { }, {