enhance(client): tweak custom emoji cache
This commit is contained in:
parent
cef448f0f2
commit
7d9d1ae7c2
|
@ -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();
|
||||||
const lastFetchedAt = miLocalStorage.getItem('lastEmojisFetchedAt');
|
|
||||||
if (lastFetchedAt && (now - parseInt(lastFetchedAt)) < 1000 * 60 * 60) return;
|
|
||||||
|
|
||||||
const res = await apiGet('emojis', {});
|
let res;
|
||||||
|
if (force) {
|
||||||
|
res = await api('emojis', {});
|
||||||
|
} else {
|
||||||
|
const lastFetchedAt = miLocalStorage.getItem('lastEmojisFetchedAt');
|
||||||
|
if (lastFetchedAt && (now - parseInt(lastFetchedAt)) < 1000 * 60 * 60) return;
|
||||||
|
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));
|
||||||
|
|
|
@ -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();
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
|
|
Loading…
Reference in New Issue