mirror of
https://github.com/Zagrios/bs-manager.git
synced 2026-07-03 14:08:25 +02:00
use "allSettled" helper everywhere its needed
This commit is contained in:
@@ -1,4 +1,19 @@
|
||||
export async function allSettled<T>(promises: Promise<T>[]): Promise<T[]> {
|
||||
export type AllSettledHelperOptions = {
|
||||
keepStructure?: boolean;
|
||||
removeFalsy?: boolean;
|
||||
}
|
||||
|
||||
export async function allSettled<T>(promises: Promise<T>[], options?: AllSettledHelperOptions): Promise<T[]> {
|
||||
const settledPromises = await Promise.allSettled(promises);
|
||||
return settledPromises.map(p => p.status === 'fulfilled' ? p.value : null);
|
||||
if(options?.keepStructure){
|
||||
return settledPromises.map(p => p.status === 'fulfilled' ? p.value : null);
|
||||
}
|
||||
|
||||
return settledPromises.reduce((acc, p) => {
|
||||
if(p.status === 'fulfilled'){
|
||||
if(options?.removeFalsy && !p.value){ return acc; }
|
||||
acc.push(p.value);
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import { Archive } from "../../models/archive.class";
|
||||
import { deleteFolder, ensureFolderExist, getFoldersInFolder, pathExist } from "../../helpers/fs.helpers";
|
||||
import { readFile } from "fs/promises";
|
||||
import { FolderLinkerService } from "../folder-linker.service";
|
||||
import { allSettled } from "../../helpers/promise.helpers";
|
||||
|
||||
export class LocalMapsManagerService {
|
||||
|
||||
@@ -155,12 +156,7 @@ export class LocalMapsManagerService {
|
||||
return mapInfo;
|
||||
});
|
||||
|
||||
const mapsInfo = (await Promise.allSettled(promises)).reduce((acc, mapInfo) => {
|
||||
if(mapInfo.status === "fulfilled" && mapInfo.value){
|
||||
acc.push(mapInfo.value);
|
||||
}
|
||||
return acc;
|
||||
} ,[] as BsmLocalMap[]);
|
||||
const mapsInfo = await allSettled(promises, {removeFalsy: true});
|
||||
|
||||
progression.maps = mapsInfo;
|
||||
|
||||
|
||||
@@ -44,10 +44,13 @@ export class BSVersionLibService{
|
||||
};
|
||||
|
||||
private async loadBsVersions(): Promise<BSVersion[]>{
|
||||
|
||||
if(this.bsVersions){ return this.bsVersions; }
|
||||
|
||||
const [localVersions, remoteVersions] = await allSettled([
|
||||
this.getLocalVersions(), this.getRemoteVersions()
|
||||
]);
|
||||
], {keepStructure: true});
|
||||
|
||||
let resVersions = localVersions;
|
||||
if(remoteVersions && remoteVersions.length){ resVersions = remoteVersions; this.updateLocalVersions(resVersions); }
|
||||
this.bsVersions = resVersions;
|
||||
|
||||
@@ -5,6 +5,7 @@ import { BSVersion } from "shared/bs-version.interface";
|
||||
import { LocalMapsManagerService } from "./additional-content/local-maps-manager.service";
|
||||
import { BSLocalVersionService } from "./bs-local-version.service";
|
||||
import { FolderLinkerService, LinkOptions } from "./folder-linker.service";
|
||||
import { allSettled } from "../helpers/promise.helpers";
|
||||
|
||||
export class VersionFolderLinkerService {
|
||||
|
||||
@@ -37,12 +38,7 @@ export class VersionFolderLinkerService {
|
||||
|
||||
private async isOtherVersionHaveFolderLinked(relativeFolder: string, ignorePath: string): Promise<boolean>{
|
||||
const versions = await this.localVersion.getInstalledVersions();
|
||||
const versionPaths = (await Promise.allSettled(versions.map(version => this.localVersion.getVersionPath(version)))).reduce((acc, res) => {
|
||||
if(res.status === "fulfilled"){
|
||||
acc.push(res.value);
|
||||
}
|
||||
return acc;
|
||||
}, [] as string[]);
|
||||
const versionPaths = await allSettled(versions.map(version => this.localVersion.getVersionPath(version)));
|
||||
|
||||
for(const versionPath of versionPaths){
|
||||
const folderPath = this.relativeToFullPath(versionPath, relativeFolder);
|
||||
|
||||
Reference in New Issue
Block a user