diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts index 113324d4947563845c35af2aeb73b226582ef299..b15291174b1c236fbdec8330572d7aa37e93d53f 100644 --- a/packages/client/src/init.ts +++ b/packages/client/src/init.ts @@ -29,7 +29,7 @@ import { stream } from '@/stream'; import * as sound from '@/scripts/sound'; import { $i, refreshAccount, login, updateAccount, signout } from '@/account'; import { defaultStore, ColdDeviceStorage } from '@/store'; -import { fetchInstance, instance } from '@/instance'; +import { instance, instanceMetaReady } from '@/instance'; import { makeHotkey } from '@/scripts/hotkey'; import { search } from '@/scripts/search'; import { deviceKind } from '@/scripts/device-kind'; @@ -159,7 +159,7 @@ if ($i && $i.token) { } //#endregion -fetchInstance().then(() => { +instanceMetaReady.then(() => { localStorage.setItem('v', instance.version); // Init service worker diff --git a/packages/client/src/instance.ts b/packages/client/src/instance.ts index 6e912aa2e51786d7a69b51f621e5e0db79537a86..85ad84b43c14c9aea2a58e3a3650902bce6078a7 100644 --- a/packages/client/src/instance.ts +++ b/packages/client/src/instance.ts @@ -8,11 +8,11 @@ const data = localStorage.getItem('instance'); // TODO: instanceをリアクティブã«ã™ã‚‹ã‹ã¯å†è€ƒã®ä½™åœ°ã‚ã‚Š -export const instance: Misskey.entities.InstanceMetadata = reactive(data ? JSON.parse(data) : { +export const instance: Misskey.entities.InstanceMetadata = reactive(data != null ? JSON.parse(data) : { // TODO: set default values }); -export async function fetchInstance() { +async function fetchInstance() { const meta = await api('meta', { detail: false }); @@ -24,6 +24,11 @@ export async function fetchInstance() { localStorage.setItem('instance', JSON.stringify(instance)); } +const initialFetchPromise = fetchInstance(); +export const instanceMetaReady = data != null ? Promise.resolve() : initialFetchPromise; + +export const refetchInstanceMeta = fetchInstance; + export const emojiCategories = computed(() => { if (instance.emojis == null) return []; const categories = new Set(); diff --git a/packages/client/src/pages/admin/bot-protection.vue b/packages/client/src/pages/admin/bot-protection.vue index 82ab1553178d8775b97bcdd6f9dc05f143c5fcd1..797080c1d22e933fd2d9e8d09213e534248f4000 100644 --- a/packages/client/src/pages/admin/bot-protection.vue +++ b/packages/client/src/pages/admin/bot-protection.vue @@ -52,7 +52,7 @@ import FormSuspense from '@/components/form/suspense.vue'; import FormSlot from '@/components/form/slot.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -109,7 +109,7 @@ export default defineComponent({ recaptchaSiteKey: this.recaptchaSiteKey, recaptchaSecretKey: this.recaptchaSecretKey, }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/email-settings.vue b/packages/client/src/pages/admin/email-settings.vue index 6491a453ab7792dae9df61bd9ca3759a62065a90..c8135e6baf6fd9d0b68678c27d235f3b337ae1fa 100644 --- a/packages/client/src/pages/admin/email-settings.vue +++ b/packages/client/src/pages/admin/email-settings.vue @@ -52,7 +52,7 @@ import FormSplit from '@/components/form/split.vue'; import FormSection from '@/components/form/section.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -129,7 +129,7 @@ export default defineComponent({ smtpUser: this.smtpUser, smtpPass: this.smtpPass, }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/instance-block.vue b/packages/client/src/pages/admin/instance-block.vue index 6cadc7df391e8123a9b87d5f950964b76f7c95ad..97b2887d44151a8acf3102b7b1f2a47b3fb73eb8 100644 --- a/packages/client/src/pages/admin/instance-block.vue +++ b/packages/client/src/pages/admin/instance-block.vue @@ -18,7 +18,7 @@ import FormTextarea from '@/components/form/textarea.vue'; import FormSuspense from '@/components/form/suspense.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -50,7 +50,7 @@ export default defineComponent({ os.apiWithDialog('admin/update-meta', { blockedHosts: this.blockedHosts.split('\n') || [], }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/integrations.discord.vue b/packages/client/src/pages/admin/integrations.discord.vue index 8fc340150a841dd3d9139a48f3daf3469e029773..87ea65e26ef179068657d272d156ee6d6dd31820 100644 --- a/packages/client/src/pages/admin/integrations.discord.vue +++ b/packages/client/src/pages/admin/integrations.discord.vue @@ -33,7 +33,7 @@ import FormInfo from '@/components/ui/info.vue'; import FormSuspense from '@/components/form/suspense.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -72,7 +72,7 @@ export default defineComponent({ discordClientId: this.discordClientId, discordClientSecret: this.discordClientSecret, }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/integrations.github.vue b/packages/client/src/pages/admin/integrations.github.vue index d9db9c00f1d2f18be08dc2248d5f3716b6ce33e6..6990fa6f4797d37cc840475eb183cab672817944 100644 --- a/packages/client/src/pages/admin/integrations.github.vue +++ b/packages/client/src/pages/admin/integrations.github.vue @@ -33,7 +33,7 @@ import FormInfo from '@/components/ui/info.vue'; import FormSuspense from '@/components/form/suspense.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -72,7 +72,7 @@ export default defineComponent({ githubClientId: this.githubClientId, githubClientSecret: this.githubClientSecret, }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/integrations.twitter.vue b/packages/client/src/pages/admin/integrations.twitter.vue index 1f8074535aa64648c7b677e08cc6bcbaa82fb13d..3337b5e0ed4fb9ffda1bbd6d7cd945485a89ce19 100644 --- a/packages/client/src/pages/admin/integrations.twitter.vue +++ b/packages/client/src/pages/admin/integrations.twitter.vue @@ -33,7 +33,7 @@ import FormInfo from '@/components/ui/info.vue'; import FormSuspense from '@/components/form/suspense.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -72,7 +72,7 @@ export default defineComponent({ twitterConsumerKey: this.twitterConsumerKey, twitterConsumerSecret: this.twitterConsumerSecret, }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/integrations.vue b/packages/client/src/pages/admin/integrations.vue index 91d03fef31729b79f330753c45f0030432644020..23ae5d1b767eab38ebad5df8277c9cd04a7850f3 100644 --- a/packages/client/src/pages/admin/integrations.vue +++ b/packages/client/src/pages/admin/integrations.vue @@ -33,7 +33,7 @@ import XGithub from './integrations.github.vue'; import XDiscord from './integrations.discord.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { diff --git a/packages/client/src/pages/admin/object-storage.vue b/packages/client/src/pages/admin/object-storage.vue index 6c5be220f85b07da509292b77c83283d1ecdfee0..64c08e30ab927e719272b589869cf2cb80e5ce37 100644 --- a/packages/client/src/pages/admin/object-storage.vue +++ b/packages/client/src/pages/admin/object-storage.vue @@ -75,7 +75,7 @@ import FormSplit from '@/components/form/split.vue'; import FormSection from '@/components/form/section.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -151,7 +151,7 @@ export default defineComponent({ objectStorageSetPublicRead: this.objectStorageSetPublicRead, objectStorageS3ForcePathStyle: this.objectStorageS3ForcePathStyle, }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/other-settings.vue b/packages/client/src/pages/admin/other-settings.vue index 6b588e88aaa4f12f195636fd9b53177d09f65152..abf420b156a333464ee489e82a46ff89be1a38a6 100644 --- a/packages/client/src/pages/admin/other-settings.vue +++ b/packages/client/src/pages/admin/other-settings.vue @@ -14,7 +14,7 @@ import FormSection from '@/components/form/section.vue'; import FormSuspense from '@/components/form/suspense.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -49,7 +49,7 @@ export default defineComponent({ save() { os.apiWithDialog('admin/update-meta', { }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/proxy-account.vue b/packages/client/src/pages/admin/proxy-account.vue index 5c4fbffa0c8813e758948e24c02ccc4c889d7ea7..4a2b22d2a6013442e4e2f018cf5eb1f3753c24a2 100644 --- a/packages/client/src/pages/admin/proxy-account.vue +++ b/packages/client/src/pages/admin/proxy-account.vue @@ -20,7 +20,7 @@ import MkInfo from '@/components/ui/info.vue'; import FormSuspense from '@/components/form/suspense.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -65,7 +65,7 @@ export default defineComponent({ os.apiWithDialog('admin/update-meta', { proxyAccountId: this.proxyAccountId, }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/security.vue b/packages/client/src/pages/admin/security.vue index d069891647883d9ed00a63c216c0294a0ba826dd..af5f458654e8fad50c8c5025ba11bb463b397d35 100644 --- a/packages/client/src/pages/admin/security.vue +++ b/packages/client/src/pages/admin/security.vue @@ -41,7 +41,7 @@ import FormButton from '@/components/ui/button.vue'; import XBotProtection from './bot-protection.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -82,7 +82,7 @@ export default defineComponent({ os.apiWithDialog('admin/update-meta', { summalyProxy: this.summalyProxy, }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/admin/settings.vue b/packages/client/src/pages/admin/settings.vue index 5cf4d6c882faf4b77ce3485797363a803fea547a..84462c7e841c05b79c8ef6925991c642a58f9104 100644 --- a/packages/client/src/pages/admin/settings.vue +++ b/packages/client/src/pages/admin/settings.vue @@ -139,7 +139,7 @@ import FormSplit from '@/components/form/split.vue'; import FormSuspense from '@/components/form/suspense.vue'; import * as os from '@/os'; import * as symbols from '@/symbols'; -import { fetchInstance } from '@/instance'; +import { refetchInstanceMeta } from '@/instance'; export default defineComponent({ components: { @@ -244,7 +244,7 @@ export default defineComponent({ deeplAuthKey: this.deeplAuthKey, deeplIsPro: this.deeplIsPro, }).then(() => { - fetchInstance(); + refetchInstanceMeta(); }); } } diff --git a/packages/client/src/pages/settings/theme.vue b/packages/client/src/pages/settings/theme.vue index 3e4ec1b2af79f07a59eae97aead3f10eb6ab9179..72b7e69174b76afc28fe14206c22c81f5fc1c563 100644 --- a/packages/client/src/pages/settings/theme.vue +++ b/packages/client/src/pages/settings/theme.vue @@ -123,8 +123,8 @@ export default defineComponent({ const installedThemes = ref(getThemes()); const themes = computed(() => builtinThemes.concat(installedThemes.value)); - const darkThemes = computed(() => themes.value.filter(t => t.base == 'dark' || t.kind == 'dark')); - const lightThemes = computed(() => themes.value.filter(t => t.base == 'light' || t.kind == 'light')); + const darkThemes = computed(() => themes.value.filter(t => t.base === 'dark' || t.kind === 'dark')); + const lightThemes = computed(() => themes.value.filter(t => t.base === 'light' || t.kind === 'light')); const darkTheme = ColdDeviceStorage.ref('darkTheme'); const darkThemeId = computed({ get() {