Skip to content

Commit ce21163

Browse files
committed
Revert "feat(frontend): Audio player で波形を表示するように (MisskeyIO#827)"
This reverts commit c0dc9cd.
1 parent d39edc0 commit ce21163

12 files changed

+149
-581
lines changed

packages/frontend/package.json

+2-5
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,8 @@
7272
"uuid": "10.0.0",
7373
"v-code-diff": "1.13.1",
7474
"vite": "5.4.11",
75-
"vue": "3.5.13",
76-
"vue-gtag": "2.0.1",
77-
"vuedraggable": "next",
78-
"webgl-audiovisualizer": "github:tar-bin/webgl-audiovisualizer"
75+
"vue": "3.5.12",
76+
"vuedraggable": "next"
7977
},
8078
"devDependencies": {
8179
"@misskey-dev/summaly": "5.1.0",
@@ -106,7 +104,6 @@
106104
"@types/punycode": "2.1.4",
107105
"@types/sanitize-html": "2.13.0",
108106
"@types/seedrandom": "3.0.8",
109-
"@types/three": "0.170.0",
110107
"@types/throttle-debounce": "5.0.2",
111108
"@types/tinycolor2": "1.4.6",
112109
"@types/uuid": "10.0.0",

packages/frontend/src/components/MkAudioVisualizer.vue

-219
This file was deleted.

packages/frontend/src/components/MkMediaAudio.vue

+10-36
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,15 @@ SPDX-License-Identifier: AGPL-3.0-only
7474
<i v-else class="ti ti-volume"></i>
7575
</button>
7676
<MkMediaRange
77-
v-model="rangePercent"
78-
:class="$style.seekbarRoot"
79-
:buffer="bufferedDataRatio"
77+
v-model="volume"
78+
:class="$style.volumeSeekbar"
8079
/>
8180
</div>
81+
<MkMediaRange
82+
v-model="rangePercent"
83+
:class="$style.seekbarRoot"
84+
:buffer="bufferedDataRatio"
85+
/>
8286
</div>
8387
</div>
8488
</template>
@@ -93,13 +97,11 @@ import * as os from '@/os.js';
9397
import { type Keymap } from '@/scripts/hotkey.js';
9498
import bytes from '@/filters/bytes.js';
9599
import { hms } from '@/filters/hms.js';
96-
import MkAudioVisualizer from '@/components/MkAudioVisualizer.vue';
97100
import MkMediaRange from '@/components/MkMediaRange.vue';
98101
import { $i, iAmModerator } from '@/account.js';
99102

100103
const props = defineProps<{
101104
audio: Misskey.entities.DriveFile;
102-
user?: Misskey.entities.UserLite;
103105
}>();
104106

105107
const keymap = {
@@ -150,7 +152,6 @@ function hasFocus() {
150152

151153
const playerEl = shallowRef<HTMLDivElement>();
152154
const audioEl = shallowRef<HTMLAudioElement>();
153-
const audioVisualizer = ref<InstanceType<typeof MkAudioVisualizer>>();
154155

155156
// eslint-disable-next-line vue/no-setup-props-reactivity-loss
156157
const hide = ref((defaultStore.state.nsfw === 'force' || defaultStore.state.dataSaver.media) ? true : (props.audio.isSensitive && defaultStore.state.nsfw !== 'ignore'));
@@ -249,11 +250,6 @@ const isPlaying = ref(false);
249250
const isActuallyPlaying = ref(false);
250251
const elapsedTimeMs = ref(0);
251252
const durationMs = ref(0);
252-
const audioContext = ref<AudioContext | null>(null);
253-
const sourceNode = ref<MediaElementAudioSourceNode | null>(null);
254-
const gainNode = ref<GainNode | null>(null);
255-
const analyserGainNode = ref<GainNode | null>(null);
256-
const analyserNode = ref<AnalyserNode | null>(null);
257253
const rangePercent = computed({
258254
get: () => {
259255
return (elapsedTimeMs.value / durationMs.value) || 0;
@@ -276,33 +272,11 @@ const bufferedDataRatio = computed(() => {
276272
function togglePlayPause() {
277273
if (!isReady.value || !audioEl.value) return;
278274

279-
if (!sourceNode.value) {
280-
audioContext.value = new (window.AudioContext || window.webkitAudioContext)();
281-
sourceNode.value = audioContext.value.createMediaElementSource(audioEl.value);
282-
283-
analyserGainNode.value = audioContext.value.createGain();
284-
gainNode.value = audioContext.value.createGain();
285-
analyserNode.value = audioContext.value.createAnalyser();
286-
287-
sourceNode.value.connect(analyserGainNode.value);
288-
analyserGainNode.value.connect(analyserNode.value);
289-
analyserNode.value.connect(gainNode.value);
290-
gainNode.value.connect(audioContext.value.destination);
291-
292-
analyserNode.value.fftSize = 2048;
293-
294-
analyserGainNode.value.gain.setValueAtTime(0.8, audioContext.value.currentTime);
295-
296-
gainNode.value.gain.setValueAtTime(volume.value, audioContext.value.currentTime);
297-
}
298-
299275
if (isPlaying.value) {
300276
audioEl.value.pause();
301-
audioVisualizer.value?.pauseAnimation();
302277
isPlaying.value = false;
303278
} else {
304279
audioEl.value.play();
305-
audioVisualizer.value?.resumeAnimation();
306280
isPlaying.value = true;
307281
oncePlayed.value = true;
308282
}
@@ -360,7 +334,6 @@ function init() {
360334
oncePlayed.value = false;
361335
isActuallyPlaying.value = false;
362336
isPlaying.value = false;
363-
audioVisualizer.value?.pauseAnimation();
364337
});
365338

366339
durationMs.value = audioEl.value.duration * 1000;
@@ -369,15 +342,16 @@ function init() {
369342
durationMs.value = audioEl.value.duration * 1000;
370343
}
371344
});
372-
gainNode.value?.gain.setValueAtTime(volume.value, audioContext.value?.currentTime);
345+
346+
audioEl.value.volume = volume.value;
373347
}
374348
}, {
375349
immediate: true,
376350
});
377351
}
378352

379353
watch(volume, (to) => {
380-
if (audioEl.value) gainNode.value?.gain.setValueAtTime(to, audioContext.value?.currentTime);
354+
if (audioEl.value) audioEl.value.volume = to;
381355
});
382356

383357
watch(speed, (to) => {

packages/frontend/src/components/MkMediaBanner.vue

+4-6
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ SPDX-License-Identifier: AGPL-3.0-only
55

66
<template>
77
<div :class="$style.root">
8-
<div v-if="media.isSensitive && hide" :class="$style.sensitive" @click="showHiddenContent">
8+
<MkMediaAudio v-if="media.type.startsWith('audio') && media.type !== 'audio/midi'" :audio="media"/>
9+
<div v-else-if="media.isSensitive && hide" :class="$style.sensitive" @click="show">
910
<span style="font-size: 1.6em;"><i class="ti ti-alert-triangle"></i></span>
1011
<b>{{ i18n.ts.sensitive }}</b>
1112
<span>{{ i18n.ts.clickToShow }}</span>
1213
</div>
13-
<MkMediaAudio v-else-if="media.type.startsWith('audio') && media.type !== 'audio/midi'" :audio="media" :user="user"/>
1414
<a
1515
v-else :class="$style.download"
1616
:href="media.url"
@@ -31,11 +31,9 @@ import { defaultStore } from '@/store.js';
3131
import * as os from '@/os.js';
3232
import MkMediaAudio from '@/components/MkMediaAudio.vue';
3333

34-
const props = withDefaults(defineProps<{
34+
const props = defineProps<{
3535
media: Misskey.entities.DriveFile;
36-
user?: Misskey.entities.UserLite;
37-
}>(), {
38-
});
36+
}>();
3937

4038
const hide = ref(true);
4139

0 commit comments

Comments
 (0)