webui: add rss manage function.

This commit is contained in:
EstrellaXD
2023-09-05 00:37:36 +08:00
parent 20c3c42f8a
commit fdd67697bd
17 changed files with 185 additions and 107 deletions

View File

@@ -1,24 +1,28 @@
import type { RSS } from '#/rss';
import type { ApiSuccess } from '#/api';
import type {RSS} from '#/rss';
import type {ApiSuccess} from '#/api';
export const useRSSStore = defineStore('rss', () => {
const message = useMessage();
const rss = ref<RSS[]>();
const selectedRSS= ref<number[]>([]);
const selectedRSS = ref<number[]>([]);
const { execute: getAll, onResult: onRSSResult } = useApi(
const {execute: getAll, onResult: onRSSResult} = useApi(
apiRSS.get
);
const { execute: updateRSS, onResult: onUpdateRSSResult } = useApi(
const {execute: updateRSS, onResult: onUpdateRSSResult} = useApi(
apiRSS.update
);
const { execute: disableRSS, onResult: onDisableRSSResult} = useApi(
const {execute: disableRSS, onResult: onDisableRSSResult} = useApi(
apiRSS.disableMany
);
const { execute: deleteRSS, onResult: onDeleteRSSResult } = useApi(
const {execute: deleteRSS, onResult: onDeleteRSSResult} = useApi(
apiRSS.deleteMany
);
const {execute: enableRSS, onResult: onEnableRSSResult} = useApi(
apiRSS.enableMany
);
onRSSResult((res) => {
function sort(arr: RSS[]) {
@@ -43,18 +47,28 @@ export const useRSSStore = defineStore('rss', () => {
deleteRSS(selectedRSS.value);
}
function enableSelected() {
enableRSS(selectedRSS.value);
}
function actionSuccess(apiRes: ApiSuccess) {
message.success(apiRes.msg_en);
refresh();
}
function appendSelected(id: number) {
selectedRSS.value.push(id);
function handleCheckboxClicked(id: number) {
if (selectedRSS.value.includes(id)) {
// delete id in list
selectedRSS.value = selectedRSS.value.filter((e) => e !== id);
} else {
selectedRSS.value.push(id)
}
}
onUpdateRSSResult(actionSuccess);
onDeleteRSSResult(actionSuccess);
onDisableRSSResult(actionSuccess)
onDisableRSSResult(actionSuccess);
onEnableRSSResult(actionSuccess);
return {
rss,
@@ -63,6 +77,7 @@ export const useRSSStore = defineStore('rss', () => {
selectedRSS,
disableSelected,
deleteSelected,
appendSelected,
enableSelected,
handleCheckboxClicked,
};
});

View File

@@ -10,7 +10,7 @@ import type {BangumiRule} from "#/bangumi";
export const useSearchStore = defineStore('search', () => {
const input$ = new Subject<string>();
const onInput = (e: Event) => input$.next(e.target);
// const onInput = (e: Event) => input$.next(e.target);
const providers = ref<string[]>(['mikan', 'dmhy', 'nyaa']);
const site = ref<string>('mikan');
@@ -24,30 +24,29 @@ export const useSearchStore = defineStore('search', () => {
providers.value = res;
});
input$.pipe(
debounceTime(1000),
tap((input: string) => {
console.log('input', input)
// clear Search Result List
}),
switchMap((input: string) => apiSearch.get(input, site.value)),
tap((bangumi: BangumiRule) => console.log(bangumi)),
tap((bangumi: BangumiRule) => {
console.log('bangumi', bangumi)
// set bangumi info to Search Result List
}),
).subscribe({
complete() {
// end of stream, stop loading animation
}
}, (err) => {
console.error(err);
});
// input$.pipe(
// debounceTime(1000),
// tap((input: string) => {
// console.log('input', input)
// // clear Search Result List
//
// }),
// switchMap((input: string) => apiSearch.get(input, site.value)),
// tap((bangumi: BangumiRule) => console.log(bangumi)),
// tap((bangumi: BangumiRule) => {
// console.log('bangumi', bangumi)
// // set bangumi info to Search Result List
// }),
// ).subscribe({
// complete() {
// // end of stream, stop loading animation
// }
// }, (err) => {
// console.error(err);
// });
return {
onInput,
bangumiInfo$,
site,