Bug fixes (#406)

* skip duplicates

* slash, exports

* fullscreen, exports

* more bugs

* fixed mac title bar

* filters should go to top of page when changed

* mac err, loading bars

* temporary comments

* moving to mac

* bug fixes, fmt, prettier

* review fixes

* rev fixes
This commit is contained in:
Wyatt Verchere
2023-08-03 10:29:58 -07:00
committed by GitHub
parent ddbd08bc8c
commit b772f916b1
15 changed files with 133 additions and 87 deletions

View File

@@ -6,6 +6,7 @@ use crate::util::fetch::{
fetch_json, write_cached_icon, FetchSemaphore, IoSemaphore,
};
use crate::util::io::IOError;
use async_zip::tokio::read::fs::ZipFileReader;
use chrono::{DateTime, Utc};
use futures::StreamExt;
@@ -49,6 +50,27 @@ impl ProjectType {
}
}
pub fn get_from_parent_folder(path: PathBuf) -> Option<Self> {
// Get parent folder
let path = path.parent()?.file_name()?;
match path.to_str()? {
"mods" => Some(ProjectType::Mod),
"datapacks" => Some(ProjectType::DataPack),
"resourcepacks" => Some(ProjectType::ResourcePack),
"shaderpacks" => Some(ProjectType::ShaderPack),
_ => None,
}
}
pub fn get_name(&self) -> &'static str {
match self {
ProjectType::Mod => "mod",
ProjectType::DataPack => "datapack",
ProjectType::ResourcePack => "resourcepack",
ProjectType::ShaderPack => "shaderpack",
}
}
pub fn get_folder(&self) -> &'static str {
match self {
ProjectType::Mod => "mods",
@@ -439,6 +461,8 @@ pub async fn infer_data_from_files(
));
continue;
};
// Forge
let zip_index_option = zip_file_reader
.file()
.entries()
@@ -512,6 +536,7 @@ pub async fn infer_data_from_files(
}
}
// Forge
let zip_index_option = zip_file_reader
.file()
.entries()
@@ -572,6 +597,7 @@ pub async fn infer_data_from_files(
}
}
// Fabric
let zip_index_option = zip_file_reader
.file()
.entries()
@@ -641,6 +667,7 @@ pub async fn infer_data_from_files(
}
}
// Quilt
let zip_index_option = zip_file_reader
.file()
.entries()
@@ -717,6 +744,7 @@ pub async fn infer_data_from_files(
}
}
// Other
let zip_index_option = zip_file_reader
.file()
.entries()
@@ -745,6 +773,10 @@ pub async fn infer_data_from_files(
io_semaphore,
)
.await?;
// Guess the project type from the filepath
let project_type =
ProjectType::get_from_parent_folder(path.clone());
return_projects.push((
path.clone(),
Project {
@@ -757,7 +789,8 @@ pub async fn infer_data_from_files(
authors: Vec::new(),
version: None,
icon,
project_type: None,
project_type: project_type
.map(|x| x.get_name().to_string()),
},
},
));
@@ -778,7 +811,6 @@ pub async fn infer_data_from_files(
}
// Project paths should be relative
let _profile_base_path = profile.get_profile_full_path().await?;
let mut corrected_hashmap = HashMap::new();
let mut stream = tokio_stream::iter(return_projects);
while let Some((h, v)) = stream.next().await {