Skip to content

Commit c7cc2ef

Browse files
committed
refactor: Better module federation definitions in extensions
refactor: Cleaner ruffle embed
1 parent 0334f00 commit c7cc2ef

File tree

8 files changed

+55
-16
lines changed

8 files changed

+55
-16
lines changed

extensions/core-nga/package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@
55
"version": "1.0.0",
66
"main": "./dist/extension.js",
77
"contributes": {
8-
"mfScope": "nga",
8+
"moduleFederation": [
9+
{
10+
"scope": "nga",
11+
"path": "mf-manifest.json"
12+
}
13+
],
914
"themeFiles": [
1015
"nga.css"
1116
]

extensions/core-ruffle/package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@
55
"version": "1.0.0",
66
"main": "./dist/extension.js",
77
"contributes": {
8-
"mfScope": "ruffle",
8+
"moduleFederation": [
9+
{
10+
"scope": "ruffle",
11+
"path": "mf-manifest.json"
12+
}
13+
],
914
"themeFiles": [
1015
"ruffle.css"
1116
],

extensions/core-ruffle/src/components/LauncherEmbedPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ export default function LauncherEmbedPage(props: GameLaunchInfo) {
5151
};
5252

5353
return <div className='ruffle-page'>
54-
<button className='simple-button' onClick={onBack}>Back</button>
5554
<div className='ruffle-wrapper'>
5655
<div className='ruffle-title'>{props.game.title}</div>
5756
<div className='ruffle-container' ref={containerRef}></div>
5857
</div>
58+
<button className='simple-button' onClick={onBack}>Back</button>
5959
</div>;
6060
}

extensions/core-ruffle/static/ruffle.css

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.ruffle-page {
22
display: flex;
3+
flex-direction: column;
34
justify-content: center;
45
align-items: center;
56
height: 100%;
@@ -11,14 +12,16 @@
1112
}
1213

1314
.ruffle-title {
15+
font-size: 1.2em;
16+
font-weight: bold;
1417
position: absolute;
1518
top: -2rem;
1619
width: 100%;
1720
text-align: center;
1821
}
1922

2023
.ruffle-container {
24+
display: flex;
2125
margin: auto;
2226
box-shadow: 0 0 20px rgba(245, 245, 245, 0.4);
23-
border: 4px solid white;
24-
}
27+
}

src/back/extensions/ExtensionsScanner.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import * as Coerce from '@shared/utils/Coerce';
55
import { IObjectParserProp, ObjectParser } from '@shared/utils/ObjectParser';
66
import * as fs from 'fs';
77
import * as path from 'path';
8-
import { Application, ButtonContext, ContextButton, Contributions, CurationTemplate, DevScript, ExtConfiguration, ExtConfigurationProp, ExtensionType, ExtTheme, IExtension, IExtensionManifest, ILogoSet } from '@shared/extensions/interfaces';
8+
import { Application, ButtonContext, ContextButton, Contributions, CurationTemplate, DevScript, ExtConfiguration, ExtConfigurationProp, ExtensionType, ExtTheme, IExtension, IExtensionManifest, ILogoSet, ModuleContribution } from '@shared/extensions/interfaces';
99

1010
const { str, num } = Coerce;
1111
const fsPromises = fs.promises;
@@ -184,7 +184,7 @@ function parseContributions(parser: IObjectParserProp<Contributions>): Contribut
184184
applications: [],
185185
configuration: [],
186186
curationTemplates: [],
187-
mfScope: '',
187+
moduleFederation: [],
188188
themeFiles: [],
189189
};
190190
parser.prop('logoSets', true).array(item => contributes.logoSets.push(parseLogoSet(item)));
@@ -194,7 +194,7 @@ function parseContributions(parser: IObjectParserProp<Contributions>): Contribut
194194
parser.prop('applications', true).array(item => contributes.applications.push(parseApplication(item)));
195195
parser.prop('configuration', true).array(item => contributes.configuration.push(parseConfiguration(item)));
196196
parser.prop('curationTemplates', true).array(item => contributes.curationTemplates.push(parseCurationTemplate(item)));
197-
parser.prop('mfScope', item => contributes.mfScope = str(item), true);
197+
parser.prop('moduleFederation', true).array(item => contributes.moduleFederation.push(parseModuleContribution(item)));
198198
parser.prop('themeFiles', true).arrayRaw(item => contributes.themeFiles.push(str(item)));
199199
return contributes;
200200
}
@@ -298,6 +298,18 @@ function parseCurationTemplate(parser: IObjectParserProp<CurationTemplate>): Cur
298298
return curationTemplate;
299299
}
300300

301+
function parseModuleContribution(parser: IObjectParserProp<ModuleContribution>): ModuleContribution {
302+
const mc: ModuleContribution = {
303+
scope: '',
304+
path: ''
305+
};
306+
307+
parser.prop('scope', v => mc.scope = str(v));
308+
parser.prop('path', v => mc.path = str(v));
309+
310+
return mc;
311+
}
312+
301313
function parseCurationMeta(parser: IObjectParserProp<EditCurationMeta>): EditCurationMeta {
302314
const parsed: EditCurationMeta = {};
303315

src/main/Main.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,10 +317,6 @@ export function main(init: Init): void {
317317
state.socket.send(BackIn.SET_LOCALE, app.getLocale().toLowerCase());
318318
state._sentLocaleCode = true;
319319
}
320-
// Reject all permission requests since we don't need any permissions.
321-
session.defaultSession.setPermissionRequestHandler(
322-
(webContents, permission, callback) => callback(false)
323-
);
324320
// Ignore proxy settings with chromium APIs (makes WebSockets not close when the Redirector changes proxy settings)
325321
session.defaultSession.setProxy({
326322
pacScript: '',
@@ -390,6 +386,14 @@ export function main(init: Init): void {
390386
webContents.on('will-navigate', onNewPage);
391387
webContents.on('new-window', onNewPage);
392388

389+
webContents.session.setPermissionRequestHandler((webContents, permission, requestingOrigin, details) => {
390+
if (permission === 'fullscreen') {
391+
return true;
392+
} else {
393+
return false;
394+
}
395+
});
396+
393397
webContents.session.setProxy({
394398
proxyRules: 'http=localhost:22500;direct://',
395399
proxyBypassRules: '<local>,*.unstable.life,*.flashpointarchive.org',

src/renderer/components/app.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1467,9 +1467,14 @@ export class App extends React.Component<AppProps> {
14671467
const playlists = this.orderPlaylistsMemo(this.props.main.playlists);
14681468
const extremeTags = this.props.preferencesData.tagFilters.filter(t => t.extreme).reduce<string[]>((prev, cur) => prev.concat(cur.tags), []);
14691469
const remoteModules = this.props.main.extensions.reduce<RemoteModule[]>((prev, cur) => {
1470-
if (cur.contributes?.mfScope) {
1471-
const remoteModule: RemoteModule = { scope: cur.contributes.mfScope, url: `${getFileServerURL()}/extdata/${cur.id}/mf-manifest.json` };
1472-
return prev.concat([remoteModule]);
1470+
if (cur.contributes?.moduleFederation) {
1471+
const remoteModules: RemoteModule[] = cur.contributes.moduleFederation.map(mc => {
1472+
return {
1473+
scope: mc.scope,
1474+
url: `${getFileServerURL()}/extdata/${cur.id}/${mc.path}`
1475+
};
1476+
});
1477+
return prev.concat(remoteModules);
14731478
} else {
14741479
return prev;
14751480
}

src/shared/extensions/interfaces.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,15 @@ export type Contributions = {
7878
applications: Application[];
7979
configuration: ExtConfiguration[];
8080
curationTemplates: CurationTemplate[];
81-
mfScope: string;
81+
moduleFederation: ModuleContribution[];
8282
themeFiles: string[];
8383
}
8484

85+
export type ModuleContribution = {
86+
scope: string;
87+
path: string;
88+
}
89+
8590
export interface CurationTemplate {
8691
name: string;
8792
logo: string;

0 commit comments

Comments
 (0)