fix
This commit is contained in:
parent
05b6244b64
commit
18418f9807
|
@ -101,7 +101,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, useTemplateRef, computed, watch, onDeactivated, onActivated, onMounted, shallowRef } from 'vue';
|
import { ref, useTemplateRef, computed, watch, onDeactivated, onActivated, onMounted, shallowRef, onBeforeUnmount } from 'vue';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import tinycolor from 'tinycolor2';
|
import tinycolor from 'tinycolor2';
|
||||||
import type { MenuItem } from '@/types/menu.js';
|
import type { MenuItem } from '@/types/menu.js';
|
||||||
|
@ -592,6 +592,35 @@ function init() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function dispose() {
|
||||||
|
isReady.value = false;
|
||||||
|
isPlaying.value = false;
|
||||||
|
isActuallyPlaying.value = false;
|
||||||
|
elapsedTimeMs.value = 0;
|
||||||
|
durationMs.value = 0;
|
||||||
|
bufferedEnd.value = 0;
|
||||||
|
hide.value = (prefer.s.nsfw === 'force' || prefer.s.dataSaver.media) ? true : (props.audio.isSensitive && prefer.s.nsfw !== 'ignore');
|
||||||
|
stopAudioElWatch();
|
||||||
|
onceInit = false;
|
||||||
|
if (mediaTickFrameId) {
|
||||||
|
window.cancelAnimationFrame(mediaTickFrameId);
|
||||||
|
mediaTickFrameId = null;
|
||||||
|
}
|
||||||
|
if (controlStateTimer) {
|
||||||
|
window.clearTimeout(controlStateTimer);
|
||||||
|
controlStateTimer = null;
|
||||||
|
}
|
||||||
|
if (audioSource.value) {
|
||||||
|
audioSource.value.disconnect();
|
||||||
|
audioSource.value = null;
|
||||||
|
}
|
||||||
|
if (audioCtx.state !== 'closed') {
|
||||||
|
audioCtx.close().catch(err => {
|
||||||
|
console.error('Failed to close AudioContext:', err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
watch(volume, (to) => {
|
watch(volume, (to) => {
|
||||||
gainNode.gain.value = to;
|
gainNode.gain.value = to;
|
||||||
});
|
});
|
||||||
|
@ -627,32 +656,11 @@ onActivated(() => {
|
||||||
});
|
});
|
||||||
|
|
||||||
onDeactivated(() => {
|
onDeactivated(() => {
|
||||||
isReady.value = false;
|
dispose();
|
||||||
isPlaying.value = false;
|
});
|
||||||
isActuallyPlaying.value = false;
|
|
||||||
elapsedTimeMs.value = 0;
|
onBeforeUnmount(() => {
|
||||||
durationMs.value = 0;
|
dispose();
|
||||||
bufferedEnd.value = 0;
|
|
||||||
hide.value = (prefer.s.nsfw === 'force' || prefer.s.dataSaver.media) ? true : (props.audio.isSensitive && prefer.s.nsfw !== 'ignore');
|
|
||||||
stopAudioElWatch();
|
|
||||||
onceInit = false;
|
|
||||||
if (mediaTickFrameId) {
|
|
||||||
window.cancelAnimationFrame(mediaTickFrameId);
|
|
||||||
mediaTickFrameId = null;
|
|
||||||
}
|
|
||||||
if (controlStateTimer) {
|
|
||||||
window.clearTimeout(controlStateTimer);
|
|
||||||
controlStateTimer = null;
|
|
||||||
}
|
|
||||||
if (audioSource.value) {
|
|
||||||
audioSource.value.disconnect();
|
|
||||||
audioSource.value = null;
|
|
||||||
}
|
|
||||||
if (audioCtx.state !== 'closed') {
|
|
||||||
audioCtx.close().catch(err => {
|
|
||||||
console.error('Failed to close AudioContext:', err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue