summaryrefslogtreecommitdiff
path: root/src/client/app/common
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2018-08-09 16:44:34 +0900
committerAcid Chicken (硫酸鶏) <root@acid-chicken.com>2018-08-09 16:44:34 +0900
commit7289d5b401d566bfb71e624b8562b504b7358af0 (patch)
treefe13c65b1cfef481cc6f256b0bed933b68fe8667 /src/client/app/common
parent5.20.0 (diff)
downloadmisskey-7289d5b401d566bfb71e624b8562b504b7358af0.tar.gz
misskey-7289d5b401d566bfb71e624b8562b504b7358af0.tar.bz2
misskey-7289d5b401d566bfb71e624b8562b504b7358af0.zip
Add player
Diffstat (limited to 'src/client/app/common')
-rw-r--r--src/client/app/common/views/components/url-preview.vue56
1 files changed, 16 insertions, 40 deletions
diff --git a/src/client/app/common/views/components/url-preview.vue b/src/client/app/common/views/components/url-preview.vue
index 4f1e34c6ca..6100c1fbfb 100644
--- a/src/client/app/common/views/components/url-preview.vue
+++ b/src/client/app/common/views/components/url-preview.vue
@@ -1,12 +1,6 @@
<template>
-<iframe v-if="youtubeId" type="text/html" height="250"
- :src="`https://www.youtube.com/embed/${youtubeId}?origin=${misskeyUrl}`"
- frameborder="0"/>
-<iframe v-else-if="spotifyId"
- :src="`https://open.spotify.com/embed/track/${spotifyId}`"
- frameborder="0" allowtransparency="true" allow="encrypted-media" />
-<iframe v-else-if="nicovideoId"
- :src="`https://embed.nicovideo.jp/watch/${nicovideoId}?oldScript=1&referer=${misskeyUrl}&from=${position || '0'}&allowProgrammaticFullScreen=1`"
+<iframe v-if="player"
+ :src="player"
frameborder="0" allow="autoplay; encrypted-media" allowfullscreen />
<div v-else-if="tweetUrl && detail" class="twitter">
<blockquote ref="tweet" class="twitter-tweet" :data-theme="$store.state.device.darkmode ? 'dark' : null">
@@ -54,10 +48,7 @@ export default Vue.extend({
thumbnail: null,
icon: null,
sitename: null,
- youtubeId: null,
- spotifyId: null,
- nicovideoId: null,
- position: null,
+ player: null,
tweetUrl: null,
misskeyUrl
};
@@ -65,23 +56,7 @@ export default Vue.extend({
created() {
const url = new URL(this.url);
- if (url.hostname == 'www.youtube.com') {
- this.youtubeId = url.searchParams.get('v');
- return;
- } else if (url.hostname == 'youtu.be') {
- this.youtubeId = url.pathname;
- return;
- } else if (url.hostname == 'open.spotify.com') {
- this.spotifyId = url.pathname.split('/').reverse().filter(x => x !== '')[0];
- return;
- } else if (['nicovideo.jp', 'www.nicovideo.jp', 'nico.ms'].includes(url.hostname)) {
- const id = url.pathname.split('/').reverse().filter(x => x !== '')[0];
- if (['sm', 'nm', 'ax', 'ca', 'cd', 'cw', 'fx', 'ig', 'na', 'om', 'sd', 'sk', 'yk', 'yo', 'za', 'zb', 'zc', 'zd', 'ze', 'nl', 'so', ...Array(10).keys()].some(x => id.startsWith(x)) {
- this.nicovideoId = id;
- this.position = url.searchParams.get('from');
- return;
- }
- } else if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
+ if (this.detail && url.hostname == 'twitter.com' && /^\/.+\/status(es)?\/\d+/.test(url.pathname)) {
this.tweetUrl = url;
const twttr = (window as any).twttr || {};
const loadTweet = () => twttr.widgets.load(this.$refs.tweet);
@@ -100,19 +75,20 @@ export default Vue.extend({
twttr.ready = loadTweet;
(window as any).twttr = twttr;
}
- return;
- }
- fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
- res.json().then(info => {
- this.title = info.title;
- this.description = info.description;
- this.thumbnail = info.thumbnail;
- this.icon = info.icon;
- this.sitename = info.sitename;
+ } else {
+ fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
+ res.json().then(info => {
+ this.title = info.title;
+ this.description = info.description;
+ this.thumbnail = info.thumbnail;
+ this.player = info.player;
+ this.icon = info.icon;
+ this.sitename = info.sitename;
- this.fetching = false;
+ this.fetching = false;
+ });
});
- });
+ }
}
});
</script>