Compare commits

...

4 Commits

Author SHA1 Message Date
AAGaming d99f332523 Initial implementation of global DFL instance (#451) 2023-05-11 22:02:04 -04:00
Party Wumpus 0c83c9a2b5 Bump DFL to 3.20.7 (#449) 2023-05-10 22:12:27 +01:00
Marco Rodolfi 6b14f08d59 Hotfix: wrong variable name for English translation (#444) 2023-05-09 15:40:57 -07:00
Marco Rodolfi 089e6b086c Small fix: handle missing localization in backend plus a small typo in the english language (#443)
* Hotfix for i18n where the detector was overriding localStorage

* Please, pnpm, cooperate

* Small fix regarding the backend getting hammered when switching to not supported languages plus a small english typo
2023-05-04 16:46:00 +01:00
8 changed files with 25 additions and 77 deletions
+7 -3
View File
@@ -101,9 +101,13 @@ class Loader:
return web.FileResponse(file, headers={"Cache-Control": "no-cache"})
async def handle_frontend_locales(self, request):
file = path.join(path.dirname(__file__), "locales", request.match_info["path"])
return web.FileResponse(file, headers={"Cache-Control": "no-cache", "Content-Type": "application/json"})
req_lang = request.match_info["path"]
file = path.join(path.dirname(__file__), "locales", req_lang)
if exists(file):
return web.FileResponse(file, headers={"Cache-Control": "no-cache", "Content-Type": "application/json"})
else:
self.logger.info(f"Language {req_lang} not available, returning an empty dictionary")
return web.json_response(data={}, headers={"Cache-Control": "no-cache"})
async def get_plugins(self, request):
plugins = list(self.plugins.values())
+2 -2
View File
@@ -41,7 +41,7 @@
"button_idle": "Update",
"button_processing": "Updating",
"desc": "Are you sure you want to update {{artifact}} {{version}}?",
"title": "Update {{name}}"
"title": "Update {{artifact}}"
}
},
"PluginListIndex": {
@@ -171,7 +171,7 @@
"patch_notes_desc": "Patch Notes",
"updates": {
"check_button": "Check For Updates",
"checking": "'Checking",
"checking": "Checking",
"cur_version": "Current version: {{ver}}",
"install_button": "Install Update",
"label": "Updates",
+1 -1
View File
@@ -43,7 +43,7 @@
}
},
"dependencies": {
"decky-frontend-lib": "3.20.6",
"decky-frontend-lib": "3.20.7",
"i18next": "^22.4.15",
"i18next-http-backend": "^2.2.0",
"react-file-icon": "^1.3.0",
+7 -7
View File
@@ -2,8 +2,8 @@ lockfileVersion: '6.0'
dependencies:
decky-frontend-lib:
specifier: 3.20.6
version: 3.20.6
specifier: 3.20.7
version: 3.20.7
i18next:
specifier: ^22.4.15
version: 22.4.15
@@ -1099,7 +1099,7 @@ packages:
hasBin: true
dependencies:
caniuse-lite: 1.0.30001482
electron-to-chromium: 1.4.380
electron-to-chromium: 1.4.382
node-releases: 2.0.10
update-browserslist-db: 1.0.11(browserslist@4.21.5)
dev: true
@@ -1393,8 +1393,8 @@ packages:
dependencies:
ms: 2.1.2
/decky-frontend-lib@3.20.6:
resolution: {integrity: sha512-imx3vgVpFm3p9+Pw5cjN964PB6Gt+4HGXkwgDRrySgyTOg8luSUB5DuJPR0Pu5a4wpVNrewKx6Qt+MTqJpN6SQ==}
/decky-frontend-lib@3.20.7:
resolution: {integrity: sha512-Zwwbo50cqpTbCfSCZaqITgTRvWs7pK9KO1A+Oo2sCC/DqOfyUtEH5niNPid4Qxu+yh4lsbEjTurJk1nCfd+nZw==}
dev: false
/decode-named-character-reference@1.0.2:
@@ -1494,8 +1494,8 @@ packages:
stream-shift: 1.0.1
dev: true
/electron-to-chromium@1.4.380:
resolution: {integrity: sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==}
/electron-to-chromium@1.4.382:
resolution: {integrity: sha512-czMavlW52VIPgutbVL9JnZIZuFijzsG1ww/1z2Otu1r1q+9Qe2bTsH3My3sZarlvwyqHM6+mnZfEnt2Vr4dsIg==}
dev: true
/emoji-regex@8.0.0:
+1 -1
View File
@@ -11,7 +11,7 @@ import externalGlobals from 'rollup-plugin-external-globals';
const hiddenWarnings = ['THIS_IS_UNDEFINED', 'EVAL'];
export default defineConfig({
input: 'src/index.tsx',
input: 'src/index.ts',
plugins: [
del({ targets: '../backend/static/*', force: true }),
commonjs(),
+1 -45
View File
@@ -1,23 +1,4 @@
import {
Navigation,
ReactRouter,
Router,
fakeRenderComponent,
findInReactTree,
findInTree,
findModule,
findModuleChild,
gamepadDialogClasses,
gamepadSliderClasses,
playSectionClasses,
quickAccessControlsClasses,
quickAccessMenuClasses,
scrollClasses,
scrollPanelClasses,
sleep,
staticClasses,
updaterFieldClasses,
} from 'decky-frontend-lib';
import { findModuleChild, sleep } from 'decky-frontend-lib';
import { useTranslation } from 'react-i18next';
import { FaReact } from 'react-icons/fa';
@@ -80,29 +61,4 @@ export async function startup() {
if ((isRDTEnabled && !window.deckyHasConnectedRDT) || (!isRDTEnabled && window.deckyHasConnectedRDT))
setShouldConnectToReactDevTools(isRDTEnabled);
logger.log('Exposing decky-frontend-lib APIs as DFL');
window.DFL = {
findModuleChild,
findModule,
Navigation,
Router,
ReactRouter,
ReactUtils: {
fakeRenderComponent,
findInReactTree,
findInTree,
},
classes: {
scrollClasses,
staticClasses,
playSectionClasses,
scrollPanelClasses,
updaterFieldClasses,
gamepadDialogClasses,
gamepadSliderClasses,
quickAccessMenuClasses,
quickAccessControlsClasses,
},
};
}
+6
View File
@@ -0,0 +1,6 @@
// Sets up DFL, then loads start.ts which starts up the loader
(async () => {
console.debug('Setting up decky-frontend-lib...');
window.DFL = await import('decky-frontend-lib');
await import('./start');
})();
@@ -1,4 +1,3 @@
import { Navigation, Router, sleep } from 'decky-frontend-lib';
import i18n from 'i18next';
import Backend from 'i18next-http-backend';
import { initReactI18next } from 'react-i18next';
@@ -19,23 +18,6 @@ declare global {
}
}
(async () => {
try {
if (!Router.NavigateToAppProperties || !Router.NavigateToLibraryTab || !Router.NavigateToInvites) {
while (!Navigation.NavigateToAppProperties) await sleep(100);
const shims = {
NavigateToAppProperties: Navigation.NavigateToAppProperties,
NavigateToInvites: Navigation.NavigateToInvites,
NavigateToLibraryTab: Navigation.NavigateToLibraryTab,
};
(Router as unknown as any).deckyShim = true;
Object.assign(Router, shims);
}
} catch (e) {
console.error('[DECKY]: Error initializing Navigation interface shims', e);
}
})();
(async () => {
window.deckyAuthToken = await fetch('http://127.0.0.1:1337/auth/token').then((r) => r.text());