mirror of
https://github.com/Zagrios/bs-manager.git
synced 2026-07-03 14:08:25 +02:00
Merge pull request #67 from Zagrios/feature/remember-choice-delete-map-modal/66
feature/remember-choice-delete-map-modal/66
This commit is contained in:
@@ -381,6 +381,9 @@
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"misc":{
|
||||
"remember-my-choice": "Remember my choice"
|
||||
},
|
||||
"guard": {
|
||||
"title": "Steam Guard",
|
||||
"inputs": {
|
||||
|
||||
@@ -381,6 +381,9 @@
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"misc":{
|
||||
"remember-my-choice": "Recordar mi elección"
|
||||
},
|
||||
"guard": {
|
||||
"title": "Steam Guard",
|
||||
"inputs": {
|
||||
|
||||
@@ -381,6 +381,9 @@
|
||||
}
|
||||
},
|
||||
"modals": {
|
||||
"misc":{
|
||||
"remember-my-choice": "Se souvenir de mon choix"
|
||||
},
|
||||
"guard": {
|
||||
"title": "Steam Guard",
|
||||
"inputs": {
|
||||
|
||||
@@ -1,14 +1,28 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { BsmButton } from "renderer/components/shared/bsm-button.component";
|
||||
import { BsmCheckbox } from "renderer/components/shared/bsm-checkbox.component";
|
||||
import { BsmImage } from "renderer/components/shared/bsm-image.component";
|
||||
import { useTranslation } from "renderer/hooks/use-translation.hook";
|
||||
import { ConfigurationService } from "renderer/services/configuration.service";
|
||||
import { MapsManagerService } from "renderer/services/maps-manager.service";
|
||||
import { ModalComponent, ModalExitCode } from "renderer/services/modale.service";
|
||||
import { BsmLocalMap } from "shared/models/maps/bsm-local-map.interface";
|
||||
import BeatConflict from '../../../../../assets/images/apngs/beat-conflict.png'
|
||||
|
||||
export const DeleteMapsModal: ModalComponent<void, {linked: boolean, maps: BsmLocalMap[]}> = ({resolver, data:{linked, maps}}) => {
|
||||
|
||||
const config = ConfigurationService.getInstance();
|
||||
|
||||
const t = useTranslation();
|
||||
|
||||
const [remember, setRemember] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
const key = MapsManagerService.REMEMBER_CHOICE_DELETE_MAP_KEY;
|
||||
config.set(key, remember);
|
||||
}, [remember])
|
||||
|
||||
|
||||
const multiple = maps.length > 1;
|
||||
|
||||
const titleText = multiple ? "modals.maps-actions.delete-maps.title.multiple" : "modals.maps-actions.delete-maps.title.single";
|
||||
@@ -22,7 +36,13 @@ export const DeleteMapsModal: ModalComponent<void, {linked: boolean, maps: BsmLo
|
||||
<BsmImage className="mx-auto h-24" image={BeatConflict} />
|
||||
<p className="max-w-sm w-full">{t(descText, multiple ? {nb: maps.length.toString()} : {name: maps.at(0).rawInfo._songName})}</p>
|
||||
{linked && <p className="text-sm italic mt-2 cursor-help w-fit" title={t(infoTitleText)}>{t(infoText)}</p>}
|
||||
<div className="grid grid-flow-col grid-cols-2 gap-4 mt-4">
|
||||
{!multiple && (
|
||||
<div className="flex items-center relative py-2 gap-1 mt-1">
|
||||
<BsmCheckbox className="h-5 relative z-[1]" checked={remember} onChange={(val) => setRemember(val)}/>
|
||||
<span className="italic">{t("modals.misc.remember-my-choice")}</span>
|
||||
</div>
|
||||
)}
|
||||
<div className="grid grid-flow-col grid-cols-2 gap-4 mt-2">
|
||||
<BsmButton typeColor="cancel" className="rounded-md text-center transition-all" onClick={() => resolver({exitCode: ModalExitCode.CANCELED})} withBar={false} text="misc.cancel"/>
|
||||
<BsmButton typeColor="primary" className="rounded-md text-center transition-all" onClick={() => resolver({exitCode: ModalExitCode.COMPLETED})} withBar={false} text="misc.delete"/>
|
||||
</div>
|
||||
|
||||
@@ -10,6 +10,7 @@ import { DeleteMapsModal } from "renderer/components/modal/modal-types/delete-ma
|
||||
import { ProgressBarService } from "./progress-bar.service";
|
||||
import { OpenSaveDialogOption } from "shared/models/ipc";
|
||||
import { NotificationService } from "./notification.service";
|
||||
import { ConfigurationService } from "./configuration.service";
|
||||
|
||||
export class MapsManagerService {
|
||||
|
||||
@@ -20,11 +21,14 @@ export class MapsManagerService {
|
||||
return MapsManagerService.instance;
|
||||
}
|
||||
|
||||
public static readonly REMEMBER_CHOICE_DELETE_MAP_KEY = "not-confirm-delete-map"
|
||||
|
||||
private readonly ipcService: IpcService;
|
||||
private readonly bsaver: BeatSaverService;
|
||||
private readonly modal: ModalService;
|
||||
private readonly progressBar: ProgressBarService;
|
||||
private readonly notifications: NotificationService;
|
||||
private readonly config: ConfigurationService;
|
||||
|
||||
private readonly lastLinkedVersion$: Subject<BSVersion> = new Subject();
|
||||
private readonly lastUnlinkedVersion$: Subject<BSVersion> = new Subject();
|
||||
@@ -35,6 +39,7 @@ export class MapsManagerService {
|
||||
this.modal = ModalService.getInsance();
|
||||
this.progressBar = ProgressBarService.getInstance();
|
||||
this.notifications = NotificationService.getInstance();
|
||||
this.config = ConfigurationService.getInstance();
|
||||
}
|
||||
|
||||
public getMaps(version?: BSVersion, withDetails = true): Observable<BsmLocalMap[]>{
|
||||
@@ -115,19 +120,22 @@ export class MapsManagerService {
|
||||
|
||||
const versionLinked = await this.versionHaveMapsLinked(version);
|
||||
|
||||
const modalRes = await this.modal.openModal(DeleteMapsModal, {linked: versionLinked, maps});
|
||||
const askModal = maps.length > 1 || !this.config.get<boolean>(MapsManagerService.REMEMBER_CHOICE_DELETE_MAP_KEY);
|
||||
|
||||
if(modalRes.exitCode !== ModalExitCode.COMPLETED){ return false; }
|
||||
if(askModal){
|
||||
const modalRes = await this.modal.openModal(DeleteMapsModal, {linked: versionLinked, maps});
|
||||
if(modalRes.exitCode !== ModalExitCode.COMPLETED){ return false; }
|
||||
}
|
||||
|
||||
const showProgressBar = this.progressBar.require();
|
||||
|
||||
if(showProgressBar && maps.length > 1){
|
||||
if(showProgressBar){
|
||||
this.progressBar.showFake(.008);
|
||||
}
|
||||
|
||||
const res = await this.ipcService.send<void, {version: BSVersion, maps: BsmLocalMap[]}>("delete-maps", {args: {version, maps}});
|
||||
|
||||
if(showProgressBar && maps.length > 1){
|
||||
if(showProgressBar){
|
||||
this.progressBar.hide(true);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user