mirror of
https://github.com/Zagrios/bs-manager.git
synced 2026-07-03 14:08:25 +02:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2427865cf0 | |||
| a118ec2013 | |||
| 8733a1f6c7 | |||
| 5ed8574a4f | |||
| 5aa491135d | |||
| 06a738a9b7 | |||
| 0a0639225a | |||
| ecb9b9e097 |
@@ -955,5 +955,14 @@
|
|||||||
"ReleaseImg": "https://clan.fastly.steamstatic.com/images/32055887/b5b3f993a2a00861db9fdfb2eed68018e5d012ba.png",
|
"ReleaseImg": "https://clan.fastly.steamstatic.com/images/32055887/b5b3f993a2a00861db9fdfb2eed68018e5d012ba.png",
|
||||||
"ReleaseDate": "1769692187",
|
"ReleaseDate": "1769692187",
|
||||||
"year": "2026"
|
"year": "2026"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"BSVersion": "1.42.2",
|
||||||
|
"BSManifest": "9067042658303247735",
|
||||||
|
"OculusBinaryId": "25217144241292017",
|
||||||
|
"ReleaseURL": "https://steamcommunity.com/games/620980/announcements/detail/536626281230369168",
|
||||||
|
"ReleaseImg": "https://clan.fastly.steamstatic.com/images/32055887/1161f8316767615d2fbe863673cace231c6d2b6f.png",
|
||||||
|
"ReleaseDate": "1770303705",
|
||||||
|
"year": "2026"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -11,6 +11,9 @@
|
|||||||
{
|
{
|
||||||
"username": "Z3t4"
|
"username": "Z3t4"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"username": "Xero"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"username": "Rhythm Shade"
|
"username": "Rhythm Shade"
|
||||||
},
|
},
|
||||||
@@ -45,6 +48,9 @@
|
|||||||
"username": "bosspie",
|
"username": "bosspie",
|
||||||
"type": "diamond"
|
"type": "diamond"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"username": "Camryn Jackson"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"username": "bones",
|
"username": "bones",
|
||||||
"type": "gold"
|
"type": "gold"
|
||||||
@@ -72,8 +78,5 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"username": "lethal_loops"
|
"username": "lethal_loops"
|
||||||
},
|
|
||||||
{
|
|
||||||
"username": "egg"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "Diese Version enthält {nb} veraltete Mods. Möchten Sie sie aktualisieren?",
|
"description-plural": "Diese Version enthält {nb} veraltete Mods. Möchten Sie sie aktualisieren?",
|
||||||
"dont-remind-me": "Nicht mehr daran erinnern",
|
"dont-remind-me": "Nicht mehr daran erinnern",
|
||||||
"update": "Aktualisieren"
|
"update": "Aktualisieren"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "Die Drittanbieter-Datenquelle „{name}“ ist nicht verfügbar. Bitte wechseln Sie in den Einstellungen zurück zu BeatMods und versuchen Sie es erneut."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "Modulquelle",
|
|
||||||
"description": "Wähle eine andere Quelle als BeatMods.",
|
|
||||||
"website": "Webseite"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "BSManager Unterstützen 💖",
|
"title": "BSManager Unterstützen 💖",
|
||||||
"description": "Unterstütze das Projekt und helfe uns, BSManager kontinuierlich zu verbessern.",
|
"description": "Unterstütze das Projekt und helfe uns, BSManager kontinuierlich zu verbessern.",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "This version has {nb} outdated mods. Do you want to update them?",
|
"description-plural": "This version has {nb} outdated mods. Do you want to update them?",
|
||||||
"dont-remind-me": "Don't remind me",
|
"dont-remind-me": "Don't remind me",
|
||||||
"update": "Update"
|
"update": "Update"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "The third party mod source \"{name}\" is not avaliable. Please switch to BeatMods at setthings and try again."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "Mod Source",
|
|
||||||
"description": "Choose a source other than BeatMods.",
|
|
||||||
"website": "website"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "Support BSManager 💖",
|
"title": "Support BSManager 💖",
|
||||||
"description": "Support the project and help us to provide continuous improvements to BSManager.",
|
"description": "Support the project and help us to provide continuous improvements to BSManager.",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "Esta versión tiene {nb} mods desactualizados. ¿Quieres actualizarlos?",
|
"description-plural": "Esta versión tiene {nb} mods desactualizados. ¿Quieres actualizarlos?",
|
||||||
"dont-remind-me": "No me lo recuerdes",
|
"dont-remind-me": "No me lo recuerdes",
|
||||||
"update": "Actualizar"
|
"update": "Actualizar"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "La fuente de datos de terceros \"{name}\" no está disponible. Vuelve a BeatMods en la configuración e inténtalo de nuevo."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "Fuente del módulo",
|
|
||||||
"description": "Elija una fuente distinta a BeatMods.",
|
|
||||||
"website": "sitio web"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "Apoya BSManager 💖",
|
"title": "Apoya BSManager 💖",
|
||||||
"description": "Apoya el proyecto y ayúdanos a proporcionar mejoras continuas a BSManager.",
|
"description": "Apoya el proyecto y ayúdanos a proporcionar mejoras continuas a BSManager.",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "Cette version contient {nb} mods obsolètes. Voulez-vous les mettre à jour ?",
|
"description-plural": "Cette version contient {nb} mods obsolètes. Voulez-vous les mettre à jour ?",
|
||||||
"dont-remind-me": "Ne plus me rappeler",
|
"dont-remind-me": "Ne plus me rappeler",
|
||||||
"update": "Mettre à jour"
|
"update": "Mettre à jour"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "La source de données tierce « {name} » est indisponible. Veuillez revenir à Beatmods dans les paramètres et réessayer."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "Source du module",
|
|
||||||
"description": "Choisissez une autre source que BeatMods.",
|
|
||||||
"website": "site web"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "Soutenir BSManager 💖",
|
"title": "Soutenir BSManager 💖",
|
||||||
"description": "Soutiens le projet et aide-nous à fournir des améliorations continues à BSManager.",
|
"description": "Soutiens le projet et aide-nous à fournir des améliorations continues à BSManager.",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "Questa versione ha {nb} mod obsoleti. Vuoi aggiornarli?",
|
"description-plural": "Questa versione ha {nb} mod obsoleti. Vuoi aggiornarli?",
|
||||||
"dont-remind-me": "Non ricordarmelo",
|
"dont-remind-me": "Non ricordarmelo",
|
||||||
"update": "Aggiorna"
|
"update": "Aggiorna"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "La fonte dati di terze parti \"{name}\" non è disponibile. Torna a BeatMods nelle impostazioni e riprova."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "Sorgente del modulo",
|
|
||||||
"description": "Scegli una fonte diversa da BeatMods.",
|
|
||||||
"website": "sito web"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "Sostieni BSManager 💖",
|
"title": "Sostieni BSManager 💖",
|
||||||
"description": "Supporta il progetto e aiutaci a provvedere continui miglioramenti a BSManager.",
|
"description": "Supporta il progetto e aiutaci a provvedere continui miglioramenti a BSManager.",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "このバージョンには古いModが{nb}個あります。更新しますか?",
|
"description-plural": "このバージョンには古いModが{nb}個あります。更新しますか?",
|
||||||
"dont-remind-me": "もう知らせない",
|
"dont-remind-me": "もう知らせない",
|
||||||
"update": "更新する"
|
"update": "更新する"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "サードパーティのデータソース「{name}」は利用できません。設定でBeatModsに切り替えて、もう一度お試しください。"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "モジュールソース",
|
|
||||||
"description": "BeatMods以外のソースを選択してください。",
|
|
||||||
"website": "Webサイト"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "BSManagerをサポートする 💖",
|
"title": "BSManagerをサポートする 💖",
|
||||||
"description": "プロジェクトをサポートし、BSManagerの継続的な応援にご協力ください!",
|
"description": "プロジェクトをサポートし、BSManagerの継続的な応援にご協力ください!",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "이 버전에는 {nb}개의 구식 모드가 있습니다. 업데이트하시겠습니까?",
|
"description-plural": "이 버전에는 {nb}개의 구식 모드가 있습니다. 업데이트하시겠습니까?",
|
||||||
"dont-remind-me": "다시는 알리지 않기",
|
"dont-remind-me": "다시는 알리지 않기",
|
||||||
"update": "업데이트"
|
"update": "업데이트"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "타사 데이터 소스 \"{name}\"을 사용할 수 없습니다. 설정에서 BeatMods로 다시 전환한 후 다시 시도해 주세요."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "모듈 소스",
|
|
||||||
"description": "BeatMods 이외의 소스를 선택하세요.",
|
|
||||||
"website": "웹사이트"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "BSManager를 지원하기 💖",
|
"title": "BSManager를 지원하기 💖",
|
||||||
"description": "프로젝트를 지원하고 BSManager의 지속적인 응원을 부탁드립니다!",
|
"description": "프로젝트를 지원하고 BSManager의 지속적인 응원을 부탁드립니다!",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "Esta versão possui {nb} mods desatualizados. Deseja atualizá-los?",
|
"description-plural": "Esta versão possui {nb} mods desatualizados. Deseja atualizá-los?",
|
||||||
"dont-remind-me": "Não me lembre",
|
"dont-remind-me": "Não me lembre",
|
||||||
"update": "Atualizar"
|
"update": "Atualizar"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "A fonte de dados de terceiros \"{name}\" está indisponível. Por favor, volte para BeatMods nas configurações e tente novamente."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "Fonte do módulo",
|
|
||||||
"description": "Escolha uma fonte diferente de BeatMods.",
|
|
||||||
"website": "site"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "Apoie BSManager 💖",
|
"title": "Apoie BSManager 💖",
|
||||||
"description": "Apoie o projeto e nos ajude a continuar trazendo melhorias para o BSManager.",
|
"description": "Apoie o projeto e nos ajude a continuar trazendo melhorias para o BSManager.",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "В этой версии есть {nb} устаревших модов. Хотите их обновить?",
|
"description-plural": "В этой версии есть {nb} устаревших модов. Хотите их обновить?",
|
||||||
"dont-remind-me": "Не напоминать мне",
|
"dont-remind-me": "Не напоминать мне",
|
||||||
"update": "Обновить"
|
"update": "Обновить"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "Сторонний источник данных \"{name}\" недоступен. Пожалуйста, переключитесь обратно на BeatMods в настройках и попробуйте снова."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "Исходный код модуля",
|
|
||||||
"description": "Выберите источник, отличный от BeatMods.",
|
|
||||||
"website": "веб-сайт"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "Поддержи BSManager 💖",
|
"title": "Поддержи BSManager 💖",
|
||||||
"description": "Поддержи проект, чтобы мы могли дальше улучшать BSManager.",
|
"description": "Поддержи проект, чтобы мы могли дальше улучшать BSManager.",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "Ang bersyon na ito ay may {nb} lipas na mga mod. Gusto mo bang i-update ang mga ito?",
|
"description-plural": "Ang bersyon na ito ay may {nb} lipas na mga mod. Gusto mo bang i-update ang mga ito?",
|
||||||
"dont-remind-me": "Huwag akong paalalahanan",
|
"dont-remind-me": "Huwag akong paalalahanan",
|
||||||
"update": "I-update"
|
"update": "I-update"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "Hindi magagamit ang third-party data source na \"{name}\". Bumalik sa BeatMods sa mga setting at subukang muli."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "Pinagmulan ng modyul",
|
|
||||||
"description": "Pumili ng ibang mapagkukunan maliban sa BeatMods.",
|
|
||||||
"website": "website"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "Supportahan ang BSManager 💖",
|
"title": "Supportahan ang BSManager 💖",
|
||||||
"description": "Suportahan ang proyekto at tulungan kami na magbigay ng patuloy na mga pagdagdag ng feature sa BSManager.",
|
"description": "Suportahan ang proyekto at tulungan kami na magbigay ng patuloy na mga pagdagdag ng feature sa BSManager.",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "Ця версія має {nb} застаріл(-ий/-і/-их) мод(-и/-ів). Ви хочете оновити їх?",
|
"description-plural": "Ця версія має {nb} застаріл(-ий/-і/-их) мод(-и/-ів). Ви хочете оновити їх?",
|
||||||
"dont-remind-me": "Не нагадувати",
|
"dont-remind-me": "Не нагадувати",
|
||||||
"update": "Оновити"
|
"update": "Оновити"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "Джерело даних стороннього розробника \"{name}\" недоступне. Будь ласка, поверніться до BeatMods у налаштуваннях і спробуйте ще раз."
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "Джерело модуля",
|
|
||||||
"description": "Виберіть джерело, відмінне від BeatMods.",
|
|
||||||
"website": "вебсайт"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "Підтримайте BSManager 💖",
|
"title": "Підтримайте BSManager 💖",
|
||||||
"description": "Підтримайте проєкт і допоможіть нам продовжувати вдосконалювати BSManager.",
|
"description": "Підтримайте проєкт і допоможіть нам продовжувати вдосконалювати BSManager.",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "此版本有 {nb} 個過時的模組。您想更新它們嗎?",
|
"description-plural": "此版本有 {nb} 個過時的模組。您想更新它們嗎?",
|
||||||
"dont-remind-me": "不要提醒我",
|
"dont-remind-me": "不要提醒我",
|
||||||
"update": "更新"
|
"update": "更新"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "第三方資料來源「{name}」不可用,請在設定中切換回BeatMods再試。"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "模組來源",
|
|
||||||
"description": "選擇一個除BeatMods之外的來源",
|
|
||||||
"website": "網站"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "支持 BSManager 💖",
|
"title": "支持 BSManager 💖",
|
||||||
"description": "支持該項目並幫助我們持續改進 BSManager。",
|
"description": "支持該項目並幫助我們持續改進 BSManager。",
|
||||||
|
|||||||
@@ -179,9 +179,6 @@
|
|||||||
"description-plural": "此版本有 {nb} 个过时的模组。您想更新它们吗?",
|
"description-plural": "此版本有 {nb} 个过时的模组。您想更新它们吗?",
|
||||||
"dont-remind-me": "不要提醒我",
|
"dont-remind-me": "不要提醒我",
|
||||||
"update": "更新"
|
"update": "更新"
|
||||||
},
|
|
||||||
"third-party-mod-source-not-avaliable": {
|
|
||||||
"description": "第三方数据源“{name}”不可用,请在设置中切换回BeatMods再试。"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"drop-zone": {
|
"drop-zone": {
|
||||||
@@ -287,11 +284,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mod-repos": {
|
|
||||||
"title": "模组源",
|
|
||||||
"description": "选择一个除BeatMods之外的源",
|
|
||||||
"website": "网站"
|
|
||||||
},
|
|
||||||
"patreon": {
|
"patreon": {
|
||||||
"title": "支持 BSManager 💖",
|
"title": "支持 BSManager 💖",
|
||||||
"description": "支持该项目并帮助我们持续改进 BSManager。",
|
"description": "支持该项目并帮助我们持续改进 BSManager。",
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ const config = {
|
|||||||
win: {
|
win: {
|
||||||
signtoolOptions: {
|
signtoolOptions: {
|
||||||
signingHashAlgorithms: ["sha256"],
|
signingHashAlgorithms: ["sha256"],
|
||||||
|
certificateSha1: "d55f8cda15bd9cba76ea796b9504860b16c7f46e",
|
||||||
},
|
},
|
||||||
target: [
|
target: [
|
||||||
"nsis",
|
"nsis",
|
||||||
|
|||||||
+3
-2
@@ -2,7 +2,7 @@
|
|||||||
"name": "bs-manager",
|
"name": "bs-manager",
|
||||||
"description": "Manage maps, mods and more for Beat Saber",
|
"description": "Manage maps, mods and more for Beat Saber",
|
||||||
"main": "./.erb/dll/main.bundle.dev.js",
|
"main": "./.erb/dll/main.bundle.dev.js",
|
||||||
"version": "1.5.4",
|
"version": "1.5.6",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build-rust-scripts": "tsx ./.erb/scripts/build-rust-scripts.js",
|
"build-rust-scripts": "tsx ./.erb/scripts/build-rust-scripts.js",
|
||||||
"build": "concurrently \"npm run build:main\" \"npm run build:renderer\"",
|
"build": "concurrently \"npm run build:main\" \"npm run build:renderer\"",
|
||||||
@@ -20,7 +20,8 @@
|
|||||||
"start:renderer": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack serve --config ./.erb/configs/webpack.config.renderer.dev.ts",
|
"start:renderer": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack serve --config ./.erb/configs/webpack.config.renderer.dev.ts",
|
||||||
"test": "jest ./src/__tests__/**/*.test.ts",
|
"test": "jest ./src/__tests__/**/*.test.ts",
|
||||||
"test:unit": "jest ./src/__tests__/unit",
|
"test:unit": "jest ./src/__tests__/unit",
|
||||||
"publish": "npm run build && electron-builder -c.win.certificateSha1=206941d969c4fa8a0e04d9427def361e13b02fd0 --config electron-builder.config.js --publish always --win --x64",
|
"build:win": "npm run build && electron-builder --config electron-builder.config.js --publish never --win --x64",
|
||||||
|
"publish": "npm run build && electron-builder --config electron-builder.config.js --publish always --win --x64",
|
||||||
"publish:linux": "npm run build && electron-builder --config electron-builder.config.js --publish never --linux --x64",
|
"publish:linux": "npm run build && electron-builder --config electron-builder.config.js --publish never --linux --x64",
|
||||||
"publish:flatpak": "npm run build && env DEBUG='@malept/flatpak-bundler' npx electron-builder --config electron-builder.config.js --publish never --linux flatpak",
|
"publish:flatpak": "npm run build && env DEBUG='@malept/flatpak-bundler' npx electron-builder --config electron-builder.config.js --publish never --linux flatpak",
|
||||||
"update:patreon": "tsx ./.erb/scripts/update-patreon.js"
|
"update:patreon": "tsx ./.erb/scripts/update-patreon.js"
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "bs-manager",
|
"name": "bs-manager",
|
||||||
"version": "1.5.4",
|
"version": "1.5.6",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "bs-manager",
|
"name": "bs-manager",
|
||||||
"version": "1.5.4",
|
"version": "1.5.6",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "bs-manager",
|
"name": "bs-manager",
|
||||||
"version": "1.5.4",
|
"version": "1.5.6",
|
||||||
"description": "BSManager",
|
"description": "BSManager",
|
||||||
"main": "./dist/main/main.js",
|
"main": "./dist/main/main.js",
|
||||||
"author": {
|
"author": {
|
||||||
|
|||||||
@@ -39,17 +39,3 @@ ipc.on("bs-mods.beatmods-up", (_, reply) => {
|
|||||||
const beatMods = BeatModsApiService.getInstance();
|
const beatMods = BeatModsApiService.getInstance();
|
||||||
reply(from(beatMods.isUp()));
|
reply(from(beatMods.isUp()));
|
||||||
})
|
})
|
||||||
|
|
||||||
ipc.on("bs-mods.mod-repo.get-repo-list", (_, reply) => {
|
|
||||||
const beatMods = BeatModsApiService.getInstance();
|
|
||||||
reply(from(beatMods.getModRepoList()));
|
|
||||||
})
|
|
||||||
ipc.on("bs-mods.mod-repo.get-name", (_, reply) => {
|
|
||||||
const beatMods = BeatModsApiService.getInstance();
|
|
||||||
reply(from(beatMods.getSelectedModRepoAsync()));
|
|
||||||
})
|
|
||||||
|
|
||||||
ipc.on("bs-mods.mod-repo.select-name", (args, reply) => {
|
|
||||||
const beatMods = BeatModsApiService.getInstance();
|
|
||||||
reply(from(beatMods.selectModRepo(args)));
|
|
||||||
})
|
|
||||||
@@ -48,7 +48,9 @@ export class OculusLauncherService extends AbstractLauncherService implements St
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Make sure Oculus is running
|
// Make sure Oculus is running
|
||||||
await this.oculus.startOculus().catch(err => log.error("Error while starting Oculus", err));
|
await this.oculus.startOculus().catch(err => log.error("Error while starting Oculus", err)).catch(err => {
|
||||||
|
log.warn("Unable to start Oculus client. Force launch.", err);
|
||||||
|
});
|
||||||
|
|
||||||
let env: Record<string, string> = {
|
let env: Record<string, string> = {
|
||||||
...process.env,
|
...process.env,
|
||||||
@@ -57,7 +59,7 @@ export class OculusLauncherService extends AbstractLauncherService implements St
|
|||||||
env: parsedEnv,
|
env: parsedEnv,
|
||||||
cmdlet, args,
|
cmdlet, args,
|
||||||
} = parseLaunchOptions(launchOptions.command, {
|
} = parseLaunchOptions(launchOptions.command, {
|
||||||
commandReplacement: exePath,
|
commandReplacement: `"${exePath}"`,
|
||||||
});
|
});
|
||||||
env = this.mergeEnvVariables(env, parsedEnv);
|
env = this.mergeEnvVariables(env, parsedEnv);
|
||||||
|
|
||||||
|
|||||||
@@ -3,47 +3,18 @@ import { BbmFullMod, BbmMod, BbmModVersion, BbmPlatform } from "../../../shared/
|
|||||||
import { RequestService } from "../request.service";
|
import { RequestService } from "../request.service";
|
||||||
import { BsStore } from "../../../shared/models/bs-store.enum";
|
import { BsStore } from "../../../shared/models/bs-store.enum";
|
||||||
import log from "electron-log"
|
import log from "electron-log"
|
||||||
import { StaticConfigurationService } from "../static-configuration.service";
|
|
||||||
import { ModRepo } from "shared/models/mods/repo.model";
|
|
||||||
|
|
||||||
export class BeatModsApiService {
|
export class BeatModsApiService {
|
||||||
private static instance: BeatModsApiService;
|
private static instance: BeatModsApiService;
|
||||||
|
|
||||||
private readonly staticConfig: StaticConfigurationService;
|
|
||||||
|
|
||||||
private readonly requestService: RequestService;
|
private readonly requestService: RequestService;
|
||||||
|
|
||||||
private static readonly MOD_REPO_LIST:ModRepo[] = [
|
public readonly MODS_REPO_URL = "https://beatmods.com";
|
||||||
{
|
private readonly MODS_REPO_API_URL = `${this.MODS_REPO_URL}/api`;
|
||||||
id: "beatmods",
|
|
||||||
mods_repo_url: "https://beatmods.com",
|
|
||||||
mods_repo_api_url: "https://beatmods.com/api",
|
|
||||||
display_name: "BeatMods",
|
|
||||||
website: "https://beatmods.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "beatsabercn",
|
|
||||||
mods_repo_url: "https://beatmods.bsaber.cn",
|
|
||||||
mods_repo_api_url: "https://beatmods.bsaber.cn/api",
|
|
||||||
display_name: "CN中文镜像源",
|
|
||||||
website: "https://beatmods.bsaber.cn/front/mods"
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
private selectedModRepo: ModRepo = BeatModsApiService.MOD_REPO_LIST.find(repo => repo.default) || BeatModsApiService.MOD_REPO_LIST[0];
|
|
||||||
|
|
||||||
public getSelectedModRepo(): ModRepo {
|
|
||||||
return this.selectedModRepo;
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly versionModsCache = new Map<string, BbmFullMod[]>();
|
private readonly versionModsCache = new Map<string, BbmFullMod[]>();
|
||||||
private readonly modsHashCache = new Map<string, BbmModVersion>();
|
private readonly modsHashCache = new Map<string, BbmModVersion>();
|
||||||
|
|
||||||
private resetCache(){
|
|
||||||
this.versionModsCache.clear();
|
|
||||||
this.modsHashCache.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static getInstance(): BeatModsApiService {
|
public static getInstance(): BeatModsApiService {
|
||||||
if (!BeatModsApiService.instance) {
|
if (!BeatModsApiService.instance) {
|
||||||
BeatModsApiService.instance = new BeatModsApiService();
|
BeatModsApiService.instance = new BeatModsApiService();
|
||||||
@@ -52,49 +23,23 @@ export class BeatModsApiService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private constructor() {
|
private constructor() {
|
||||||
this.staticConfig = StaticConfigurationService.getInstance();
|
|
||||||
this.requestService = RequestService.getInstance();
|
this.requestService = RequestService.getInstance();
|
||||||
|
|
||||||
const repoId = this.staticConfig.get("selected-mod-repo");
|
|
||||||
if(repoId){
|
|
||||||
this.selectedModRepo = BeatModsApiService.MOD_REPO_LIST.find(repo => repo.id === repoId) || BeatModsApiService.MOD_REPO_LIST[0];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async isUp(): Promise<boolean> {
|
public async isUp(): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
// The data in status can be dropped
|
// The data in status can be dropped
|
||||||
await this.requestService.getJSON<{}>(`${this.getSelectedModRepo().mods_repo_api_url}/status`);
|
await this.requestService.getJSON<{}>(`${this.MODS_REPO_API_URL}/status`);
|
||||||
return true;
|
return true;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
log.error(`Could not connect to ${this.selectedModRepo.mods_repo_api_url}`, error);
|
log.error("Could not connect to beatmods", error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private getVersionModsUrl(version: BSVersion): string {
|
private getVersionModsUrl(version: BSVersion): string {
|
||||||
const platform: BbmPlatform = version.oculus || version.metadata?.store === BsStore.OCULUS ? BbmPlatform.OculusPC : BbmPlatform.SteamPC;
|
const platform: BbmPlatform = version.oculus || version.metadata?.store === BsStore.OCULUS ? BbmPlatform.OculusPC : BbmPlatform.SteamPC;
|
||||||
return `${this.getSelectedModRepo().mods_repo_api_url}/mods?status=verified&gameVersion=${version.BSVersion}&gameName=BeatSaber&platform=${platform}`;
|
return `${this.MODS_REPO_API_URL}/mods?status=verified&gameVersion=${version.BSVersion}&gameName=BeatSaber&platform=${platform}`;
|
||||||
}
|
|
||||||
|
|
||||||
public async getModRepoList():Promise<ModRepo[]>{
|
|
||||||
return BeatModsApiService.MOD_REPO_LIST;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async getSelectedModRepoAsync():Promise<ModRepo>{
|
|
||||||
return this.getSelectedModRepo();
|
|
||||||
}
|
|
||||||
public async selectModRepo(repoId:string): Promise<boolean>{
|
|
||||||
const selectedRepo = BeatModsApiService.MOD_REPO_LIST.find(repo => repo.id === repoId);
|
|
||||||
|
|
||||||
if(!selectedRepo){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.selectedModRepo = selectedRepo;
|
|
||||||
this.staticConfig.set("selected-mod-repo", repoId);
|
|
||||||
this.resetCache()
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateModsHashCache(mods: BbmModVersion[]): void {
|
private updateModsHashCache(mods: BbmModVersion[]): void {
|
||||||
@@ -131,7 +76,7 @@ export class BeatModsApiService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return this.requestService.getJSON<{ modVersions: BbmModVersion[] }>(
|
return this.requestService.getJSON<{ modVersions: BbmModVersion[] }>(
|
||||||
`${this.getSelectedModRepo().mods_repo_api_url}/hashlookup?hash=${hash}`
|
`${this.MODS_REPO_API_URL}/hashlookup?hash=${hash}`
|
||||||
).then(({ data }) => {
|
).then(({ data }) => {
|
||||||
this.updateModsHashCache(data?.modVersions ?? []);
|
this.updateModsHashCache(data?.modVersions ?? []);
|
||||||
return data?.modVersions?.at(0);
|
return data?.modVersions?.at(0);
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ export class BsModsManagerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async downloadZip(zipUrl: string): Promise<BsmZipExtractor> {
|
private async downloadZip(zipUrl: string): Promise<BsmZipExtractor> {
|
||||||
zipUrl = new URL(zipUrl, this.beatModsApi.getSelectedModRepo().mods_repo_url).href;
|
zipUrl = new URL(zipUrl, this.beatModsApi.MODS_REPO_URL).href;
|
||||||
|
|
||||||
log.info("Download mod zip", zipUrl);
|
log.info("Download mod zip", zipUrl);
|
||||||
|
|
||||||
|
|||||||
@@ -105,8 +105,12 @@ export class OculusService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public oculusRunning(): Promise<boolean> {
|
public async oculusRunning(): Promise<boolean> {
|
||||||
return isProcessRunning("OculusClient");
|
if (await isProcessRunning("OculusClient")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return isProcessRunning("Client"); // new name of oculus client
|
||||||
}
|
}
|
||||||
|
|
||||||
public async startOculus(): Promise<void>{
|
public async startOculus(): Promise<void>{
|
||||||
|
|||||||
@@ -92,7 +92,6 @@ export interface StaticConfigKeyValues {
|
|||||||
"use-system-proxy": boolean;
|
"use-system-proxy": boolean;
|
||||||
"last-version-launched": BSVersion;
|
"last-version-launched": BSVersion;
|
||||||
"auto-update": AutoUpdate;
|
"auto-update": AutoUpdate;
|
||||||
"selected-mod-repo": string;
|
|
||||||
|
|
||||||
// Linux Specific static configs
|
// Linux Specific static configs
|
||||||
"proton-folder": string;
|
"proton-folder": string;
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import { Dropzone } from "renderer/components/shared/dropzone.component";
|
|||||||
import { ModsGridStatus } from "shared/models/mods/mod-ipc.model";
|
import { ModsGridStatus } from "shared/models/mods/mod-ipc.model";
|
||||||
import { BsmLink } from "renderer/components/shared/bsm-link.component";
|
import { BsmLink } from "renderer/components/shared/bsm-link.component";
|
||||||
import { DISCORD_URL, GITHUB_URL } from "shared/constants";
|
import { DISCORD_URL, GITHUB_URL } from "shared/constants";
|
||||||
import { ModRepo } from "shared/models/mods/repo.model";
|
|
||||||
|
|
||||||
export type ModsSlideRef = {
|
export type ModsSlideRef = {
|
||||||
loadMods: () => Promise<void>;
|
loadMods: () => Promise<void>;
|
||||||
@@ -56,8 +55,6 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
|||||||
const downloadRef = useRef(null);
|
const downloadRef = useRef(null);
|
||||||
const [downloadWith, setDownloadWidth] = useState(0);
|
const [downloadWith, setDownloadWidth] = useState(0);
|
||||||
|
|
||||||
const [selectedModRepo, setSelectedModRepo] = useState(null as ModRepo)
|
|
||||||
|
|
||||||
const modsToCategoryMap = (mods: BbmFullMod[]): Map<BbmCategories, BbmFullMod[]> => {
|
const modsToCategoryMap = (mods: BbmFullMod[]): Map<BbmCategories, BbmFullMod[]> => {
|
||||||
if (!mods) {
|
if (!mods) {
|
||||||
return new Map<BbmCategories, BbmFullMod[]>();
|
return new Map<BbmCategories, BbmFullMod[]>();
|
||||||
@@ -221,10 +218,6 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
|||||||
loadMods
|
loadMods
|
||||||
}), [version]);
|
}), [version]);
|
||||||
|
|
||||||
useEffect(()=>{
|
|
||||||
modsManager.getSelectedModRepo().then(repo=>setSelectedModRepo(repo));
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let isCancelled = false;
|
let isCancelled = false;
|
||||||
|
|
||||||
@@ -291,18 +284,6 @@ export const ModsSlide = forwardRef<ModsSlideRef, Props>(({ version, isActive, o
|
|||||||
|
|
||||||
const renderStatus = () => {
|
const renderStatus = () => {
|
||||||
if (gridStatus === ModsGridStatus.BEATMODS_DOWN) {
|
if (gridStatus === ModsGridStatus.BEATMODS_DOWN) {
|
||||||
if(selectedModRepo && selectedModRepo.id !== "beatmods"){
|
|
||||||
return <ModStatus image={BeatConflictImg}>
|
|
||||||
<span className="text-xl text-center px-2 mt-3 italic">
|
|
||||||
{
|
|
||||||
t("pages.version-viewer.mods.notifications.third-party-mod-source-not-avaliable.description",
|
|
||||||
{name:selectedModRepo ? selectedModRepo.display_name : "null"}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</span>
|
|
||||||
</ModStatus>
|
|
||||||
}
|
|
||||||
|
|
||||||
return <ModStatus image={BeatConflictImg}>
|
return <ModStatus image={BeatConflictImg}>
|
||||||
<span className="text-xl text-center px-2 mt-3 italic">
|
<span className="text-xl text-center px-2 mt-3 italic">
|
||||||
{te("pages.version-viewer.mods.status.beatmods-down", {links: (<>
|
{te("pages.version-viewer.mods.status.beatmods-down", {links: (<>
|
||||||
|
|||||||
@@ -49,8 +49,6 @@ import { AutoUpdaterService } from "renderer/services/auto-updater.service";
|
|||||||
import { OculusDownloaderService } from "renderer/services/bs-version-download/oculus-downloader.service";
|
import { OculusDownloaderService } from "renderer/services/bs-version-download/oculus-downloader.service";
|
||||||
import { DISCORD_URL } from "shared/constants";
|
import { DISCORD_URL } from "shared/constants";
|
||||||
import { AutoUpdate } from "shared/models/config";
|
import { AutoUpdate } from "shared/models/config";
|
||||||
import { BsModsManagerService } from "renderer/services/bs-mods-manager.service";
|
|
||||||
import { ModRepo } from "shared/models/mods/repo.model";
|
|
||||||
|
|
||||||
export function SettingsPage() {
|
export function SettingsPage() {
|
||||||
|
|
||||||
@@ -71,7 +69,6 @@ export function SettingsPage() {
|
|||||||
const versionLinker = useService(VersionFolderLinkerService);
|
const versionLinker = useService(VersionFolderLinkerService);
|
||||||
const staticConfig = useService(StaticConfigurationService);
|
const staticConfig = useService(StaticConfigurationService);
|
||||||
const installationLocationService = useService(InstallationLocationService);
|
const installationLocationService = useService(InstallationLocationService);
|
||||||
const bsModManagerService = useService(BsModsManagerService);
|
|
||||||
const autoUpdater = useService(AutoUpdaterService);
|
const autoUpdater = useService(AutoUpdaterService);
|
||||||
|
|
||||||
const { firstColor, secondColor } = useThemeColor();
|
const { firstColor, secondColor } = useThemeColor();
|
||||||
@@ -103,8 +100,6 @@ export function SettingsPage() {
|
|||||||
const [playlistsDeepLinkEnabled, setPlaylistsDeepLinkEnabled] = useState(false);
|
const [playlistsDeepLinkEnabled, setPlaylistsDeepLinkEnabled] = useState(false);
|
||||||
const [modelsDeepLinkEnabled, setModelsDeepLinkEnabled] = useState(false);
|
const [modelsDeepLinkEnabled, setModelsDeepLinkEnabled] = useState(false);
|
||||||
const [hasDownloaderSession, setHasDownloaderSession] = useState(false);
|
const [hasDownloaderSession, setHasDownloaderSession] = useState(false);
|
||||||
const [modRepoList, setModRepoList] = useState([] as ModRepo[]);
|
|
||||||
const [modRepo, setModRepo] = useState("");
|
|
||||||
const appVersion = useObservable(() => autoUpdater.getAppVersion());
|
const appVersion = useObservable(() => autoUpdater.getAppVersion());
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -114,15 +109,6 @@ export function SettingsPage() {
|
|||||||
playlistsManager.isDeepLinksEnabled().then(enabled => setPlaylistsDeepLinkEnabled(() => enabled));
|
playlistsManager.isDeepLinksEnabled().then(enabled => setPlaylistsDeepLinkEnabled(() => enabled));
|
||||||
modelsManager.isDeepLinksEnabled().then(enabled => setModelsDeepLinkEnabled(() => enabled));
|
modelsManager.isDeepLinksEnabled().then(enabled => setModelsDeepLinkEnabled(() => enabled));
|
||||||
|
|
||||||
|
|
||||||
bsModManagerService.getModRepoList().then(list =>{
|
|
||||||
setModRepoList(list);
|
|
||||||
bsModManagerService.getSelectedModRepo().then(repo => {
|
|
||||||
setModRepo(repo.id);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
staticConfig.get("proton-folder").then(setProtonFolder);
|
staticConfig.get("proton-folder").then(setProtonFolder);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@@ -171,13 +157,6 @@ export function SettingsPage() {
|
|||||||
i18nService.setLanguage(item.value);
|
i18nService.setLanguage(item.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleChangeModRepo = (repo: RadioItem<string>) => {
|
|
||||||
bsModManagerService.selectModRepo(repo.value).then(result=>{
|
|
||||||
if(result){
|
|
||||||
setModRepo(repo.value)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
const setDefaultProtonFolder = async () => {
|
const setDefaultProtonFolder = async () => {
|
||||||
if (!progressBarService.require()) {
|
if (!progressBarService.require()) {
|
||||||
return;
|
return;
|
||||||
@@ -529,17 +508,6 @@ export function SettingsPage() {
|
|||||||
<SettingRadioArray items={languagesItems} selectedItemValue={languageSelected} onItemSelected={handleChangeLanguage} columnCount={2} />
|
<SettingRadioArray items={languagesItems} selectedItemValue={languageSelected} onItemSelected={handleChangeLanguage} columnCount={2} />
|
||||||
</SettingContainer>
|
</SettingContainer>
|
||||||
|
|
||||||
<SettingContainer title="pages.settings.mod-repos.title" description="pages.settings.mod-repos.description">
|
|
||||||
<SettingRadioArray items={modRepoList.map((repo,index)=>({
|
|
||||||
id:index,
|
|
||||||
value: repo.id,
|
|
||||||
text: repo.display_name,
|
|
||||||
icon: repo.website ?
|
|
||||||
<BsmButton onClick={()=>linkOpener.open(repo.website, false)} className="px-2 font-bold italic text-sm rounded-md" text="pages.settings.mod-repos.website" withBar={false} />
|
|
||||||
: null
|
|
||||||
}))} selectedItemValue={modRepo} onItemSelected={handleChangeModRepo} />
|
|
||||||
</SettingContainer>
|
|
||||||
|
|
||||||
<SettingContainer title="pages.settings.patreon.title" description="pages.settings.patreon.description">
|
<SettingContainer title="pages.settings.patreon.title" description="pages.settings.patreon.description">
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
<BsmButton color="#ef4444" className="flex w-fit rounded-md h-8 px-2 font-bold py-1 whitespace-nowrap !text-white" text="pages.settings.patreon.buttons.support" withBar={false} onClick={openSupportPage} />
|
<BsmButton color="#ef4444" className="flex w-fit rounded-md h-8 px-2 font-bold py-1 whitespace-nowrap !text-white" text="pages.settings.patreon.buttons.support" withBar={false} onClick={openSupportPage} />
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Observable, BehaviorSubject, throwError, of, lastValueFrom, from } from "rxjs";
|
import { Observable, BehaviorSubject, throwError, of, lastValueFrom } from "rxjs";
|
||||||
import { catchError, map, tap } from "rxjs/operators";
|
import { catchError, map, tap } from "rxjs/operators";
|
||||||
import { BSVersion } from "shared/bs-version.interface";
|
import { BSVersion } from "shared/bs-version.interface";
|
||||||
import { IpcService } from "./ipc.service";
|
import { IpcService } from "./ipc.service";
|
||||||
@@ -10,7 +10,6 @@ import { BbmFullMod, BbmModVersion } from "shared/models/mods/mod.interface";
|
|||||||
import { logRenderError } from "renderer";
|
import { logRenderError } from "renderer";
|
||||||
import { ModsGridStatus } from "shared/models/mods/mod-ipc.model";
|
import { ModsGridStatus } from "shared/models/mods/mod-ipc.model";
|
||||||
import { LinuxService } from "./linux.service";
|
import { LinuxService } from "./linux.service";
|
||||||
import { ModRepo } from "shared/models/mods/repo.model";
|
|
||||||
|
|
||||||
export class BsModsManagerService {
|
export class BsModsManagerService {
|
||||||
private static instance: BsModsManagerService;
|
private static instance: BsModsManagerService;
|
||||||
@@ -227,18 +226,4 @@ export class BsModsManagerService {
|
|||||||
return ModsGridStatus.OK;
|
return ModsGridStatus.OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getModRepoList(): Promise<ModRepo[]> {
|
|
||||||
return lastValueFrom(this.ipcService.sendV2("bs-mods.mod-repo.get-repo-list")).catch(() => [] as ModRepo[]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async getSelectedModRepo(): Promise<ModRepo> {
|
|
||||||
return lastValueFrom(this.ipcService.sendV2("bs-mods.mod-repo.get-name").pipe(
|
|
||||||
catchError(() => from(this.getModRepoList()).pipe(map(list => list.find(repo => repo.default) || list[0])))
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public async selectModRepo(name:string): Promise<boolean> {
|
|
||||||
return lastValueFrom(this.ipcService.sendV2("bs-mods.mod-repo.select-name", name)).catch(() => false);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import { StaticConfigGetIpcRequestResponse, StaticConfigKeys, StaticConfigSetIpc
|
|||||||
import { BbmFullMod, BbmModVersion, ExternalMod } from "../mods/mod.interface";
|
import { BbmFullMod, BbmModVersion, ExternalMod } from "../mods/mod.interface";
|
||||||
import { OculusDownloadInfo } from "main/services/bs-version-download/bs-oculus-downloader.service";
|
import { OculusDownloadInfo } from "main/services/bs-version-download/bs-oculus-downloader.service";
|
||||||
import { UpdateInfo } from "electron-updater";
|
import { UpdateInfo } from "electron-updater";
|
||||||
import { ModRepo } from "../mods/repo.model";
|
|
||||||
|
|
||||||
export type IpcReplier<T> = (data: Observable<T>) => void;
|
export type IpcReplier<T> = (data: Observable<T>) => void;
|
||||||
|
|
||||||
@@ -91,9 +90,6 @@ export interface IpcChannelMapping {
|
|||||||
"bs-mods.uninstall-mods": { request: { mods: BbmFullMod[]; version: BSVersion }, response: Progression };
|
"bs-mods.uninstall-mods": { request: { mods: BbmFullMod[]; version: BSVersion }, response: Progression };
|
||||||
"bs-mods.uninstall-all-mods": { request: BSVersion, response: Progression };
|
"bs-mods.uninstall-all-mods": { request: BSVersion, response: Progression };
|
||||||
"bs-mods.beatmods-up": { request: void, response: boolean };
|
"bs-mods.beatmods-up": { request: void, response: boolean };
|
||||||
"bs-mods.mod-repo.get-repo-list": { request: void, response: ModRepo[]};
|
|
||||||
"bs-mods.mod-repo.get-name": { request: void, response: ModRepo};
|
|
||||||
"bs-mods.mod-repo.select-name": { request: string, response: boolean};
|
|
||||||
|
|
||||||
/* ** bs-playlist-ipcs ** */
|
/* ** bs-playlist-ipcs ** */
|
||||||
"one-click-install-playlist": { request: string, response: Progression<DownloadPlaylistProgressionData> };
|
"one-click-install-playlist": { request: string, response: Progression<DownloadPlaylistProgressionData> };
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
export interface ModRepo {
|
|
||||||
id: string
|
|
||||||
mods_repo_url: string
|
|
||||||
mods_repo_api_url: string
|
|
||||||
display_name: string
|
|
||||||
website?: string
|
|
||||||
default?: boolean
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user