| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { onBeforeUnmount, onMounted, ref } from 'vue';
- import LibraryApi from 'src/api/LibraryApi';
- import { SystemMessage } from 'src/utils/Message';
- import { until } from '@vueuse/core';
- export const useLibrary = () => {
- const movies = ref([]);
- const tvs = ref([]);
- const refreshCacheLoading = ref(false);
- const libraryRefreshStatus = ref(null);
- let getRefreshStatusTimer = null;
- const getLibraryRefreshStatus = async () => {
- const [res] = await LibraryApi.getRefreshStatus();
- libraryRefreshStatus.value = res.status;
- };
- const getLibraryList = async () => {
- const [res, err] = await LibraryApi.getList();
- if (err !== null) {
- SystemMessage.error(err.message);
- } else {
- movies.value = res.movie_infos;
- tvs.value = res.season_infos;
- }
- };
- const refreshLibrary = async () => {
- refreshCacheLoading.value = true;
- const [, err] = await LibraryApi.refreshLibrary();
- if (err !== null) {
- SystemMessage.error(err.message);
- } else {
- libraryRefreshStatus.value = null;
- getRefreshStatusTimer = setInterval(() => {
- getLibraryRefreshStatus();
- }, 1000);
- await until(libraryRefreshStatus).toBe('stopped');
- clearInterval(getRefreshStatusTimer);
- getRefreshStatusTimer = null;
- getLibraryList();
- SystemMessage.success('更新成功');
- }
- refreshCacheLoading.value = false;
- };
- onMounted(() => {
- getLibraryList();
- getLibraryRefreshStatus();
- });
- onBeforeUnmount(() => {
- clearInterval(getRefreshStatusTimer);
- });
- return {
- movies,
- tvs,
- refreshLibrary,
- refreshCacheLoading,
- };
- };
|