Skip to content

Commit

Permalink
Merge pull request #691 from silentrald/feat/blacklist-shared-folders
Browse files Browse the repository at this point in the history
[feat] added blacklist for shared folders
  • Loading branch information
Zagrios authored Dec 19, 2024
2 parents 26699c1 + 38f8103 commit 33632ee
Show file tree
Hide file tree
Showing 18 changed files with 365 additions and 150 deletions.
11 changes: 10 additions & 1 deletion assets/jsons/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@
"ENOSPC": "Die Festplatte ist voll, machen Sie Platz und versuchen Sie es erneut.",
"UNKNOWN_ERROR": "Ein unbekannter Fehler ist beim Verknüpfen des Ordners aufgetreten."
}
},
"adding-error": {
"title": "Das Hinzufügen des freigegebenen Ordners ist fehlgeschlagen",
"msg": "Sie können \"{folder}\" nicht zu freigegebenen Ordnern hinzufügen."
}
},
"create-launch-shortcut": {
Expand Down Expand Up @@ -805,9 +809,14 @@
"add-folder": "Ordner hinzufügen",
"link-folder": "Ordner verknüpfen",
"unlink-folder": "Ordner-Verknüpfung aufheben",
"link-all": "Alle verlinken"
"link-all": "Alle verlinken",
"remove-from-the-list": "Aus der Liste entfernen"
}
},
"adding-shared-folder": {
"title": "Freigegebenen Ordner hinzufügen",
"description": "Beim Verknüpfen des Ordners \"{folder}\" können Probleme auftreten. Möchten Sie ihn wirklich hinzufügen?"
},
"create-launch-shortcut": {
"title": "Verknüpfung erstellen",
"desc": "Das Erstellen einer Verknüpfung ermöglicht es dir, Beat Saber mit den ausgewählten Optionen zu starten, ohne durch BSManager zu gehen.",
Expand Down
11 changes: 10 additions & 1 deletion assets/jsons/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@
"ENOSPC": "The disk is full, make some space and try again.",
"UNKNOWN_ERROR": "An unknown error has occurred while linking the folder."
}
},
"adding-error": {
"title": "Adding shared folder failed",
"msg": "You can't add \"{folder}\" to shared folders."
}
},
"create-launch-shortcut": {
Expand Down Expand Up @@ -800,9 +804,14 @@
"add-folder": "Add Folder",
"link-folder": "Link Folder",
"unlink-folder": "Unlink Folder",
"link-all": "Link all"
"link-all": "Link all",
"remove-from-the-list": "Remove from the list"
}
},
"adding-shared-folder": {
"title": "Adding Shared Folder",
"description": "You might experience issues when linking the \"{folder}\" folder. Are you sure you want to add it?"
},
"create-launch-shortcut": {
"title": "Create a shortcut",
"desc": "Creating a shortcut will allow you to start Beat Saber with the chosen options without going through BSManager.",
Expand Down
11 changes: 10 additions & 1 deletion assets/jsons/translations/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@
"ENOSPC": "El disco está lleno, libera espacio e inténtalo de nuevo.",
"UNKNOWN_ERROR": "Se ha producido un error desconocido al enlazar la carpeta."
}
},
"adding-error": {
"title": "Error al agregar una carpeta compartida",
"msg": "No puedes agregar \"{folder}\" a las carpetas compartidas."
}
},
"create-launch-shortcut": {
Expand Down Expand Up @@ -805,9 +809,14 @@
"add-folder": "Añadir Carpeta",
"link-folder": "Enlazar Carpeta",
"unlink-folder": "Desenlazar Carpeta",
"link-all": "Enlazar todo"
"link-all": "Enlazar todo",
"remove-from-the-list": "Eliminar de la lista"
}
},
"adding-shared-folder": {
"title": "Agregar una carpeta compartida",
"description": "Es posible que experimentes problemas al vincular la carpeta \"{folder}\". ¿Estás seguro de que deseas agregarla?"
},
"create-launch-shortcut": {
"title": "Crear un atajo",
"desc": "Crear un atajo te permitirá iniciar Beat Saber con las opciones seleccionadas sin pasar por BSManager.",
Expand Down
11 changes: 10 additions & 1 deletion assets/jsons/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@
"ENOSPC": "Le disque est plein, faites de la place et réessayez.",
"UNKNOWN_ERROR": "Une erreur inconnue est survenue lors de la liaison du dossier."
}
},
"adding-error": {
"title": "L'ajout du dossier partagé a échoué",
"msg": "Vous ne pouvez pas ajouter \"{folder}\" aux dossiers partagés."
}

},
Expand Down Expand Up @@ -806,9 +810,14 @@
"add-folder": "Ajouter un dossier",
"link-folder": "Lier le dossier",
"unlink-folder": "Délier le dossier",
"link-all": "Tout lier"
"link-all": "Tout lier",
"remove-from-the-list": "Retirer de la liste"
}
},
"adding-shared-folder": {
"title": "Ajout d'un dossier partagé",
"description": "Vous pourriez rencontrer des problèmes lors de la liaison du dossier \"{folder}\". Êtes-vous sûr de vouloir l'ajouter ?"
},
"create-launch-shortcut": {
"title": "Créer un raccourci",
"desc": "Créer un raccourci te permettra de démarrer Beat Saber avec les options choisies sans passer par BSManager.",
Expand Down
11 changes: 10 additions & 1 deletion assets/jsons/translations/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@
"ENOSPC": "ディスクがいっぱいです。空き容量を作ってもう一度試してください。",
"UNKNOWN_ERROR": "フォルダをリンク中に不明なエラーが発生しました。"
}
},
"adding-error": {
"title": "共有フォルダの追加に失敗しました",
"msg": "「{folder}」を共有フォルダに追加することはできません。"
}
},
"create-launch-shortcut": {
Expand Down Expand Up @@ -805,9 +809,14 @@
"add-folder": "フォルダーを追加",
"link-folder": "フォルダーをリンク",
"unlink-folder": "フォルダーのリンクを解除",
"link-all": "すべてリンク"
"link-all": "すべてリンク",
"remove-from-the-list": "リストから削除"
}
},
"adding-shared-folder": {
"title": "共有フォルダの追加",
"description": "「{folder}」フォルダをリンクするときに問題が発生する可能性があります。追加してもよろしいですか?"
},
"create-launch-shortcut": {
"title": "ショートカットを作成",
"desc": "ショートカットを作成すると、BSManagerを起動せずに、直接Beat Saberを起動できます。",
Expand Down
11 changes: 10 additions & 1 deletion assets/jsons/translations/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@
"ENOSPC": "디스크가 가득 찼습니다. 공간을 확보하고 다시 시도하세요.",
"UNKNOWN_ERROR": "폴더를 연결하는 중 알 수 없는 오류가 발생했습니다."
}
},
"adding-error": {
"title": "공유 폴더 추가에 실패했습니다.",
"msg": "공유 폴더에 「{folder}」을 추가할 수 없습니다."
}
},
"create-launch-shortcut": {
Expand Down Expand Up @@ -805,9 +809,14 @@
"add-folder": "폴더 추가",
"link-folder": "폴더 연결",
"unlink-folder": "폴더 연결 해제",
"link-all": "모두 연결"
"link-all": "모두 연결",
"remove-from-the-list": "목록에서 제거"
}
},
"adding-shared-folder": {
"title": "공유 폴더 추가",
"description": "「{folder}」폴더를 연결할 때 문제가 발생할 수 있습니다. 정말 추가하시겠습니까?"
},
"create-launcher-shortcut": {
"title": "런처 바로가기 만들기",
"description": "바탕화면에 실행 파일의 바로가기를 만들어 BSManager를 손쉽게 실행하세요.",
Expand Down
11 changes: 10 additions & 1 deletion assets/jsons/translations/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@
"ENOSPC": "Диск заполнен, освободите место и попробуйте снова.",
"UNKNOWN_ERROR": "Произошла неизвестная ошибка при связывании папки."
}
},
"adding-error": {
"title": "Не удалось добавить общую папку.",
"msg": "Вы не можете добавлять \"{folder}\" в общие папки."
}
},
"create-launch-shortcut": {
Expand Down Expand Up @@ -805,9 +809,14 @@
"add-folder": "Добавить папку",
"link-folder": "Связать папку",
"unlink-folder": "Отвязать папку",
"link-all": "Связать всё"
"link-all": "Связать всё",
"remove-from-the-list": "Удалить из списка"
}
},
"adding-shared-folder": {
"title": "Добавление общей папки",
"description": "У вас могут возникнуть проблемы при связывании папки \"{folder}\". Вы уверены, что хотите ее добавить?"
},
"create-launch-shortcut": {
"title": "Создать ярлык",
"desc": "Ярлык позволит вам запустить Beat Saber без помощи BSManager.",
Expand Down
11 changes: 10 additions & 1 deletion assets/jsons/translations/zh-tw.json
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@
"ENOSPC": "磁碟已滿,請騰出空間後再試。",
"UNKNOWN_ERROR": "連結文件夾時發生未知錯誤。"
}
},
"adding-error": {
"title": "添加共享文件夹失败",
"msg": "您无法将\"{folder}\"添加到共享文件夹。"
}
},
"create-launch-shortcut": {
Expand Down Expand Up @@ -805,9 +809,14 @@
"add-folder": "新增文件夾",
"link-folder": "關聯文件夾",
"unlink-folder": "取消關聯文件夾",
"link-all": "關聯所有"
"link-all": "關聯所有",
"remove-from-the-list": "從列表中移除"
}
},
"adding-shared-folder": {
"title": "添加共享文件夹",
"description": "链接\"{folder}\"文件夹时可能会遇到问题。您确定要添加它吗?"
},
"create-launch-shortcut": {
"title": "創建捷徑",
"desc": "創建捷徑使得你可以在不通過 BSManager 的情況下以特定選項啟動 BeatSaber",
Expand Down
11 changes: 10 additions & 1 deletion assets/jsons/translations/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@
"ENOSPC": "磁盘已满,请腾出空间后再试。",
"UNKNOWN_ERROR": "链接文件夹时发生未知错误。"
}
},
"adding-error": {
"title": "添加共享文件夹失败",
"msg": "您无法将\"{folder}\"添加到共享文件夹。"
}
},
"create-launch-shortcut": {
Expand Down Expand Up @@ -805,9 +809,14 @@
"add-folder": "添加文件夹",
"link-folder": "关联文件夹",
"unlink-folder": "取消关联文件夹",
"link-all": "关联所有"
"link-all": "关联所有",
"remove-from-the-list": "从列表中移除"
}
},
"adding-shared-folder": {
"title": "添加共享文件夹",
"description": "链接\"{folder}\"文件夹时可能会遇到问题。您确定要添加它吗?"
},
"create-launch-shortcut": {
"title": "创建快捷方式",
"desc": "创建快捷方式使得你可以在不通过 BSManager 的情况下以特定选项启动 BeatSaber",
Expand Down
19 changes: 12 additions & 7 deletions src/main/services/folder-linker.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,24 @@ export class FolderLinkerService {
private readonly installLocationService = InstallationLocationService.getInstance();
private readonly staticConfig: StaticConfigurationService;

private linkingType: "junction" | "symlink" = "junction";
// Only Windows support "junction", this is disregarded in other os'es
private linkingType: "junction" | "symlink" =
process.platform === "win32" ? "junction" : "symlink";

private constructor() {
this.installLocationService = InstallationLocationService.getInstance();
this.staticConfig = StaticConfigurationService.getInstance();

this.linkingType = this.staticConfig.get("use-symlinks") === true ? "symlink" : "junction";
log.info(`Linking type is set to ${this.linkingType}`);
if (process.platform === "win32") {
// Only Windows support "junction", this is disregarded in other os'es
this.linkingType = this.staticConfig.get("use-symlinks") === true ? "symlink" : "junction";
log.info(`Linking type is set to ${this.linkingType}`);

this.staticConfig.$watch("use-symlinks").subscribe((useSymlink) => {
this.linkingType = useSymlink === true ? "symlink" : "junction";
log.info(`Linking type set to ${this.linkingType}`);
});
this.staticConfig.$watch("use-symlinks").subscribe((useSymlink) => {
this.linkingType = useSymlink === true ? "symlink" : "junction";
log.info(`Linking type set to ${this.linkingType}`);
});
}
}

public sharedFolder(): string {
Expand Down
30 changes: 23 additions & 7 deletions src/renderer/components/modal/basic-modal.component.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BsmButton, BsmButtonType } from "renderer/components/shared/bsm-button.component";
import { BsmImage } from "renderer/components/shared/bsm-image.component";
import { cn } from "renderer/helpers/css-class.helpers";
import { useTranslation } from "renderer/hooks/use-translation.hook";
import { useTranslationV2 } from "renderer/hooks/use-translation.hook";
import { ModalComponent, ModalExitCode } from "renderer/services/modale.service";

type BasicModalOptions = {
Expand All @@ -12,7 +12,11 @@ type BasicModalOptions = {
id: string;
text: string;
type: BsmButtonType,
isCancel?: boolean;
/**
* true - ModalExitCode.COMPLETED
* undefined/false - ModalExitCode.CANCELED
*/
onClick?: () => boolean;
}[];
buttonsLayout?: "row" | "column";
};
Expand All @@ -21,20 +25,32 @@ export const BasicModal: ModalComponent<BasicModalOptions["buttons"][0]["id"], B
data: { title, image, body, buttons, buttonsLayout = "column" }
} }) => {

const t = useTranslation();
const t = useTranslationV2();

const handleClick = (button: BasicModalOptions["buttons"][0]) => {
resolver({ exitCode: button.isCancel ? ModalExitCode.CANCELED : ModalExitCode.COMPLETED, data: button.id });
resolver({
exitCode: button.onClick?.()
? ModalExitCode.COMPLETED
: ModalExitCode.CANCELED,
data: button.id
});
}

return (
<form className="text-gray-900 dark:text-white">
<h1 className="text-3xl uppercase tracking-wide w-full text-center">{t(title)}</h1>
<h1 className="text-3xl uppercase tracking-wide w-full text-center">{t.text(title)}</h1>
<BsmImage className="mx-auto h-24" image={image} />
{ body && <p className="w-full">{t(body)}</p> }
{ body && <p className="w-full">{t.text(body)}</p> }
<div className={cn("grid gap-2 mt-4")} style={{ gridAutoFlow: buttonsLayout, ...(buttonsLayout === "row" ? { gridTemplateRows: `repeat(${buttons.length}, 1fr)` } : { gridTemplateColumns: `repeat(${buttons.length}, 1fr)` }) }}>
{buttons.map(button => (
<BsmButton key={button.id} typeColor={button.type} className="h-8 rounded-md text-center flex justify-center items-center" onClick={() => handleClick(button)} withBar={false} text={button.text} />
<BsmButton
key={button.id}
typeColor={button.type}
className="h-8 rounded-md text-center flex justify-center items-center"
onClick={() => handleClick(button)}
withBar={false}
text={button.text}
/>
))}
</div>
</form>
Expand Down
Loading

0 comments on commit 33632ee

Please sign in to comment.