summaryrefslogtreecommitdiff
path: root/packages/frontend
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-02-04 09:12:26 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-02-04 09:12:26 +0900
commit24705a7e3978e867a5fad75ef10f54936fb93737 (patch)
treee7aed83876b70cf138237e18ca621ad9326b558a /packages/frontend
parentMerge branch 'develop' (diff)
parent13.3.1 (diff)
downloadmisskey-24705a7e3978e867a5fad75ef10f54936fb93737.tar.gz
misskey-24705a7e3978e867a5fad75ef10f54936fb93737.tar.bz2
misskey-24705a7e3978e867a5fad75ef10f54936fb93737.zip
Merge branch 'develop'
Diffstat (limited to 'packages/frontend')
-rw-r--r--packages/frontend/src/components/MkAutocomplete.vue3
-rw-r--r--packages/frontend/src/components/MkMediaVideo.vue2
-rw-r--r--packages/frontend/src/components/MkRetentionHeatmap.vue2
-rw-r--r--packages/frontend/src/components/MkSignin.vue1
-rw-r--r--packages/frontend/src/components/MkUrlPreview.vue1
-rw-r--r--packages/frontend/src/components/MkYoutubePlayer.vue1
-rw-r--r--packages/frontend/src/components/global/MkCustomEmoji.vue22
-rw-r--r--packages/frontend/src/components/global/MkUrl.vue1
-rw-r--r--packages/frontend/src/pages/miauth.vue1
-rw-r--r--packages/frontend/src/pages/settings/accounts.vue3
-rw-r--r--packages/frontend/src/scripts/idb-proxy.ts13
11 files changed, 26 insertions, 24 deletions
diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue
index 27997eb330..e523b988b0 100644
--- a/packages/frontend/src/components/MkAutocomplete.vue
+++ b/packages/frontend/src/components/MkAutocomplete.vue
@@ -17,7 +17,8 @@
</ol>
<ol v-else-if="emojis.length > 0" ref="suggests" :class="$style.list">
<li v-for="emoji in emojis" :key="emoji.emoji" :class="$style.item" tabindex="-1" @click="complete(type, emoji.emoji)" @keydown="onKeydown">
- <MkCustomEmoji :name="emoji.emoji" :class="$style.emoji"/>
+ <MkCustomEmoji v-if="'isCustomEmoji' in emoji && emoji.isCustomEmoji" :name="emoji.emoji" :class="$style.emoji"/>
+ <MkEmoji v-else :emoji="emoji.emoji" :class="$style.emoji"/>
<!-- eslint-disable-next-line vue/no-v-html -->
<span v-if="q" :class="$style.emojiName" v-html="sanitizeHtml(emoji.name.replace(q, `<b>${q}</b>`))"></span>
<span v-else v-text="emoji.name"></span>
diff --git a/packages/frontend/src/components/MkMediaVideo.vue b/packages/frontend/src/components/MkMediaVideo.vue
index 5a2da050bb..2c24c16f57 100644
--- a/packages/frontend/src/components/MkMediaVideo.vue
+++ b/packages/frontend/src/components/MkMediaVideo.vue
@@ -9,8 +9,6 @@
<vue-plyr>
<video
controls
- crossorigin
- playsinline
:data-poster="video.thumbnailUrl"
>
<source
diff --git a/packages/frontend/src/components/MkRetentionHeatmap.vue b/packages/frontend/src/components/MkRetentionHeatmap.vue
index b7886d1dc2..52c8b6d026 100644
--- a/packages/frontend/src/components/MkRetentionHeatmap.vue
+++ b/packages/frontend/src/components/MkRetentionHeatmap.vue
@@ -56,8 +56,6 @@ async function renderChart() {
}
}
- console.log(data);
-
fetching = false;
await nextTick();
diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue
index cc1a7c4af5..8cce1d43f6 100644
--- a/packages/frontend/src/components/MkSignin.vue
+++ b/packages/frontend/src/components/MkSignin.vue
@@ -154,7 +154,6 @@ function queryKey() {
function onSubmit() {
signing = true;
- console.log('submit');
if (!totpLogin && user && user.twoFactorEnabled) {
if (window.PublicKeyCredential && user.securityKeys) {
os.api('signin', {
diff --git a/packages/frontend/src/components/MkUrlPreview.vue b/packages/frontend/src/components/MkUrlPreview.vue
index 4689f5e772..f7677faf74 100644
--- a/packages/frontend/src/components/MkUrlPreview.vue
+++ b/packages/frontend/src/components/MkUrlPreview.vue
@@ -86,6 +86,7 @@ let tweetHeight = $ref(150);
let unknownUrl = $ref(false);
const requestUrl = new URL(props.url);
+if (!['http:', 'https:'].includes(requestUrl.protocol)) throw new Error('invalid url');
if (requestUrl.hostname === 'twitter.com' || requestUrl.hostname === 'mobile.twitter.com') {
const m = requestUrl.pathname.match(/^\/.+\/status(?:es)?\/(\d+)/);
diff --git a/packages/frontend/src/components/MkYoutubePlayer.vue b/packages/frontend/src/components/MkYoutubePlayer.vue
index d1f1f9e9c5..50d38a71bd 100644
--- a/packages/frontend/src/components/MkYoutubePlayer.vue
+++ b/packages/frontend/src/components/MkYoutubePlayer.vue
@@ -26,6 +26,7 @@ const props = defineProps<{
}>();
const requestUrl = new URL(props.url);
+if (!['http:', 'https:'].includes(requestUrl.protocol)) throw new Error('invalid url');
let fetching = $ref(true);
let title = $ref<string | null>(null);
diff --git a/packages/frontend/src/components/global/MkCustomEmoji.vue b/packages/frontend/src/components/global/MkCustomEmoji.vue
index 93c47f0c27..e6dedd0354 100644
--- a/packages/frontend/src/components/global/MkCustomEmoji.vue
+++ b/packages/frontend/src/components/global/MkCustomEmoji.vue
@@ -18,19 +18,23 @@ const props = defineProps<{
}>();
const customEmojiName = computed(() => (props.name[0] === ':' ? props.name.substr(1, props.name.length - 2) : props.name).replace('@.', ''));
-const url = computed(() => {
+
+const rawUrl = computed(() => {
if (props.url) {
return props.url;
- } else if (props.host == null && !customEmojiName.value.includes('@')) {
- const found = customEmojis.value.find(x => x.name === customEmojiName.value);
- return found ? defaultStore.state.disableShowingAnimatedImages ? getStaticImageUrl(found.url) : found.url : null;
- } else {
- const rawUrl = props.host ? `/emoji/${customEmojiName.value}@${props.host}.webp` : `/emoji/${customEmojiName.value}.webp`;
- return defaultStore.state.disableShowingAnimatedImages
- ? getStaticImageUrl(rawUrl)
- : rawUrl;
}
+ if (props.host == null && !customEmojiName.value.includes('@')) {
+ return customEmojis.value.find(x => x.name === customEmojiName.value)?.url || null;
+ }
+ return props.host ? `/emoji/${customEmojiName.value}@${props.host}.webp` : `/emoji/${customEmojiName.value}.webp`;
});
+
+const url = computed(() =>
+ defaultStore.reactiveState.disableShowingAnimatedImages.value && rawUrl.value
+ ? getStaticImageUrl(rawUrl.value)
+ : rawUrl.value
+);
+
const alt = computed(() => `:${customEmojiName.value}:`);
let errored = $ref(url.value == null);
</script>
diff --git a/packages/frontend/src/components/global/MkUrl.vue b/packages/frontend/src/components/global/MkUrl.vue
index 27c8329dcc..2a92780306 100644
--- a/packages/frontend/src/components/global/MkUrl.vue
+++ b/packages/frontend/src/components/global/MkUrl.vue
@@ -33,6 +33,7 @@ const props = defineProps<{
const self = props.url.startsWith(local);
const url = new URL(props.url);
+if (!['http:', 'https:'].includes(url.protocol)) throw new Error('invalid url');
const el = ref();
useTooltip(el, (showing) => {
diff --git a/packages/frontend/src/pages/miauth.vue b/packages/frontend/src/pages/miauth.vue
index a01c7c5c4b..3debaeeb61 100644
--- a/packages/frontend/src/pages/miauth.vue
+++ b/packages/frontend/src/pages/miauth.vue
@@ -70,6 +70,7 @@ async function accept(): Promise<void> {
state = 'accepted';
if (props.callback) {
const cbUrl = new URL(props.callback);
+ if (!['http:', 'https:'].includes(cbUrl.protocol)) throw new Error('invalid url');
cbUrl.searchParams.set('session', props.session);
location.href = cbUrl.href;
}
diff --git a/packages/frontend/src/pages/settings/accounts.vue b/packages/frontend/src/pages/settings/accounts.vue
index c2d511e744..a5eaae2bad 100644
--- a/packages/frontend/src/pages/settings/accounts.vue
+++ b/packages/frontend/src/pages/settings/accounts.vue
@@ -38,14 +38,11 @@ const init = async () => {
getAccounts().then(accounts => {
storedAccounts.value = accounts.filter(x => x.id !== $i!.id);
- console.log(storedAccounts.value);
-
return os.api('users/show', {
userIds: storedAccounts.value.map(x => x.id),
});
}).then(response => {
accounts.value = response;
- console.log(accounts.value);
});
};
diff --git a/packages/frontend/src/scripts/idb-proxy.ts b/packages/frontend/src/scripts/idb-proxy.ts
index 218682bb56..7dbca01dea 100644
--- a/packages/frontend/src/scripts/idb-proxy.ts
+++ b/packages/frontend/src/scripts/idb-proxy.ts
@@ -8,14 +8,15 @@ import {
const fallbackName = (key: string) => `idbfallback::${key}`;
-let idbAvailable = typeof window !== 'undefined' ? !!window.indexedDB : true;
+let idbAvailable = typeof window !== 'undefined' ? !!(window.indexedDB && window.indexedDB.open) : true;
if (idbAvailable) {
- iset('idb-test', 'test').catch(err => {
- console.error('idb error', err);
- console.error('indexedDB is unavailable. It will use localStorage.');
- idbAvailable = false;
- });
+ await iset('idb-test', 'test')
+ .catch(err => {
+ console.error('idb error', err);
+ console.error('indexedDB is unavailable. It will use localStorage.');
+ idbAvailable = false;
+ });
} else {
console.error('indexedDB is unavailable. It will use localStorage.');
}