Merge pull request #154 from NotThorny/Improved-Search

Improved search
This commit is contained in:
SpikeHD
2023-04-26 19:19:27 -07:00
committed by GitHub
5 changed files with 59 additions and 44 deletions

View File

@@ -13,15 +13,26 @@ pub async fn get_download_links(mod_id: String) -> String {
}
#[tauri::command]
pub async fn list_submissions(mode: String, page: String) -> String {
web::query(
format!(
"{}/apiv9/Util/Game/Submissions?_idGameRow=8552&_nPage={}&_nPerpage=50&_sMode={}",
SITE_URL, page, mode
pub async fn list_submissions(mode: String, page: String, search: String) -> String {
if search.is_empty() {
web::query(
format!(
"{}/apiv9/Util/Game/Submissions?_idGameRow=8552&_nPage={}&_nPerpage=50&_sMode={}",
SITE_URL, page, mode
)
.as_str(),
)
.as_str(),
)
.await
.await
} else {
web::query(
format!(
"{}/apiv11/Util/Search/Results?_nPage={}&_sOrder=best_match&_idGameRow=8552&_sSearchString={}&_csvFields=name,description,article,attribs,studio,owner,credits",
SITE_URL, page, search
)
.as_str()
)
.await
}
}
#[tauri::command]

View File

@@ -341,7 +341,13 @@ fn restart_grasscutter(window: tauri::Window) -> bool {
#[cfg(unix)]
#[tauri::command]
fn restart_grasscutter(window: tauri::Window) {}
fn restart_grasscutter(window: tauri::Window) {
// Placeholder text for imports
let s = System::new();
if let Some(process) = s.process(Pid::from(1337)) {
println!("{}", process.name());
}
}
#[cfg(windows)]
#[tauri::command]

View File

@@ -1,7 +1,7 @@
use duct::cmd;
use ini::Ini;
use std::path::PathBuf;
use std::ffi::OsStr;
use std::path::PathBuf;
#[cfg(windows)]
use {
@@ -245,6 +245,10 @@ pub fn service_status(service: String) -> bool {
}
}
#[cfg(unix)]
#[tauri::command]
pub fn service_status(service: String) {}
#[cfg(windows)]
#[tauri::command]
pub fn start_service(service: String) -> bool {

View File

@@ -1,6 +1,6 @@
import React from 'react'
import { getConfigOption } from '../../../utils/configuration'
import { getAllMods, getInstalledMods, getMods, ModData, PartialModData } from '../../../utils/gamebanana'
import { getInstalledMods, getMods, ModData, PartialModData } from '../../../utils/gamebanana'
import { LoadingCircle } from './LoadingCircle'
import './ModList.css'
@@ -64,16 +64,7 @@ export class ModList extends React.Component<IProps, IState> {
return
}
let mods: ModData[]
if (!(this.props.search == '')) {
// idk the api so just filter all mods to search
mods = (await getAllMods(this.props.mode)).filter((mod) =>
mod.name.toLowerCase().includes(this.props.search.toLowerCase())
)
} else {
mods = await getMods(this.props.mode, this.props.page)
}
const mods = await getMods(this.props.mode, this.props.page, this.props.search)
const horny = await getConfigOption('horny_mode')

View File

@@ -117,13 +117,38 @@ interface ModDownload {
containsExe: boolean
}
export async function getMods(mode: string, page: number) {
export async function getMods(mode: string, page: number, search: string) {
let modList: GamebananaResponse[] = []
if (search.length > 0) {
let hadMods = true
let page = 1
while (hadMods) {
const resp = JSON.parse(
await invoke('list_submissions', {
mode,
page: '' + page,
search: search,
})
)
const total = resp._aMetadata._nRecordCount
if (page > total / 15) hadMods = false
modList = [...modList, ...resp._aRecords]
page++
}
return formatGamebananaData(modList)
}
const resp = JSON.parse(
await invoke('list_submissions', {
mode,
page: '' + page,
search: '',
})
)
@@ -132,28 +157,6 @@ export async function getMods(mode: string, page: number) {
return formatGamebananaData(modList)
}
export async function getAllMods(mode: string) {
let modList: GamebananaResponse[] = []
let hadMods = true
let page = 1
while (hadMods) {
const resp = JSON.parse(
await invoke('list_submissions', {
mode,
page: '' + page,
})
)
if (resp.length === 0) hadMods = false
modList = [...modList, ...resp]
page++
}
return formatGamebananaData(modList)
}
export async function formatGamebananaData(obj: GamebananaResponse[]) {
if (!obj) return []